Integrate IDGen Service
Describes how to integrate with DIGIT's ID Gen service
Overview
This page provides the steps to integrate with the IDGen Service. Each application needs to have a unique ID. The IDGen service generates these unique IDs. ID format can be customised via configuration in MDMS.
Steps
Add the ID format that needs to be generated in this file - Id Format Mdms File. The following config has been added for this module:
{
"format": "PB-BTR-[cy:yyyy-MM-dd]-[SEQ_EG_BTR_ID]",
"idname": "btr.registrationid"
}
Restart the IDGen service and MDMS service and port-forward IDGen service to port 8285:
kubectl port-forward <IDGEN_SERVICE_POD_NAME> 8285:8080
Hit the below curl to verify that the format is added properly. The "ID" name needs to match exactly with what was added in MDMS.
curl --location --request POST 'http://localhost:8285/egov-idgen/id/_generate' \
--header 'Content-Type: application/json' \
--data-raw '{
"RequestInfo": {
"apiId": "string",
"ver": "string",
"ts": null,
"action": "string",
"did": "string",
"key": "string",
"msgId": "string",
"authToken": "6456b2cf-49ca-47c7-b7b6-c179f19614c7",
"correlationId": "e721639b-c095-40b3-86e2-acecb2cb6efb",
"userInfo": {
"id": 23299,
"uuid": "e721639b-c095-40b3-86e2-acecb2cb6efb",
"userName": "9337682030",
"name": "Abhilash Seth",
"type": "EMPLOYEE",
"mobileNumber": "9337682030",
"emailId": "[email protected]",
"roles": [
{
"id": 281,
"name": "Employee"
}
]
}
},
"idRequests": [
{
"tenantId": "pb.amritsar",
"idName": "btr.registrationid"
}
]
}'
Once verified, we can call the ID generation service from within our application and generate the registrationId. \
In the BirthApplicationEnrichment class, update the enrichBirthApplication method as shown below:
public void enrichBirthApplication(BirthRegistrationRequest birthRegistrationRequest) {
List<String> birthRegistrationIdList = idgenUtil.getIdList(birthRegistrationRequest.getRequestInfo(), birthRegistrationRequest.getBirthRegistrationApplications().get(0).getTenantId(), "btr.registrationid", "", birthRegistrationRequest.getBirthRegistrationApplications().size());
Integer index = 0;
for(BirthRegistrationApplication application : birthRegistrationRequest.getBirthRegistrationApplications()){
// Enrich audit details
AuditDetails auditDetails = AuditDetails.builder().createdBy(birthRegistrationRequest.getRequestInfo().getUserInfo().getUuid()).createdTime(System.currentTimeMillis()).lastModifiedBy(birthRegistrationRequest.getRequestInfo().getUserInfo().getUuid()).lastModifiedTime(System.currentTimeMillis()).build();
application.setAuditDetails(auditDetails);
// Enrich UUID
application.setId(UUID.randomUUID().toString());
// Enrich application number from IDgen
application.setApplicationNumber(birthRegistrationIdList.get(index++));
// Enrich registration Id
application.getAddress().setApplicationNumber(application.getId());
// Enrich address UUID
application.getAddress().setId(UUID.randomUUID().toString());
}
}
Make sure below ID generation host configuration is present in the application.properties file. Make sure to fill in the correct values for the host.
#Idgen Config
egov.idgen.host=http://localhost:8285/ #REPLACE
egov.idgen.path=egov-idgen/id/_generate
Last updated
Was this helpful?