iFix Adapter Services

Overview

Ifix-Adapter is a system that works as a mediator between iFix and its clients. This system will receive requests from the client system and convert the data in the Ifix required format. This document contains the details about how to set up ifix-adapter service and describes the functionalities it provides.

Pre-requisites

Before you proceed with the configuration, make sure the following pre-requisites are met -

  • Java 8

  • Kafka server is up and running

  • PSQL server is running

  • Redis

  • Following services should be up and running:

    • Client Service Like mgramseva-ifix-adapter

    • Target service IFIX- fiscal-event-service

    • Target Service IFIX-keycloak

    • IFIX master-data-service

Key Functionalities

  • IFIX client requests are pushed to IFIX

  • The authentication token is fetched from keycloak and cached. Token will be re-fetched 5 minutes before expiry

  • project id is fetched from IFIX and cached

  • COA id fetched from IFIX and cached

  • Every push to IFIX is recorded in the table with HTTP status

    • status series 200 considered success

    • status 400 are marked client error and reported back to the client

    • status 500 resubmitted by the scheduler

Deployment Details

Deploy the latest version of ifix-reference-adapter

Configuration Details

  1. Update Key cloak credentials in dev.yaml,qa.yaml,prod.yaml according to the environment The credentials are “keycloak.credentials.clientid and “keycloak.credentials.clientsecret” Example is given in here and here

  2. Map clientcode, ifixcoacode, ifixid in ifix_adapter_coa_map table

    1. “clientcode” is the tax head like “WATER_CHARGES” or ‘10011’ used in IFIX client like mgramseva

    2. “ifixcoacode” is the 16 digit glcode in IFIX. 16 digit code is mapped then this can be ported to any environment like dev to qa ,or qa to uat or from uat to prod. Prefer mapping ifixcoacode

    3. Another way is to map the IFIX COA ID itself. Since these are generated ids you cant port to other environments. ID mapping has to be done for every environment.

    4. Preference is given to COA Code, if it is null ID will be used

    5. example is INSERT INTO public.ifix_adapter_coa_map( id, clientcode, ifixcoacode, ifixid, tenantid) VALUES (1,'10101', '0215-01-102-00-00-01', '6cbcb4a1-2431-4f78-89d7-b4f0565aba37', 'pb');

  3. If client “project code” and IFIX project code are the same then no need for mapping. If it is different then map clientprojectcode, ifixprojectid in ifix_adapter_project_map table. Ideally, you should keep both codes the same for getting meaningful data on the dashboard. This way you don't have to do any mapping for project code for any environment. But if for any reason you have different project codes in IFIX and its client or has multiple projects having the same project code then only go for this mapping. The adapter will first check in the IFIX for the supplied “projectCode”, If found it will use it and caches it. If multiple projects or not found it will look into this table for mapping

    1. example is INSERT INTO public.ifix_adapter_project_map( id, clientprojectcode, ifixprojectid, tenantid) VALUES (1, '7374', 'e42db9bb-8427-40a6-9939-4f2189d032bf','pb');

  4. state.goverment.code set this value to the clients top level tenantid

Interaction Diagram

Reference Docs

API List

All content on this page by eGov Foundation is licensed under a Creative Commons Attribution 4.0 International License.