Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Project
Estimate
Contract
Attendance
Muster Roll
Expense
Bank Account
Organisation
Individual
Steps to configure the project service
The project service provides APIs to create, update and manage a generic project. A project can have one or more of the following constructs: staff, tasks, beneficiaries and facilities. This service is shared across multiple eGov missions.
The source code for this service is available . Refer to the below docs for a deeper understanding of this service.
Below are the actions or APIs exposed by the Project service used by the Works platform. Note that the "id" in the attributes needs to be unique and may be different in the implementation environment. It need not be the same as shown below.
The table below shows the mapping between the APIs and the roles:
PROJECT_CREATOR
Project Creator
/project/v1/_create
/project/v1/_update
/project/v1/_search
The following role-action mappings derived from the above table are configured for the Project Service in the roleactions.json in MDMS. A sample is provided below. Make sure the action ID is correct and corresponds to actions.json.
Add Id Format as configured in the ‘IdFormat.json’ file of the ‘common-masters’ module here. This format is used to generate the unique ID of the project.
Add the persister file project-management-system-persister.yml as defined here.
Add indexer file projectmanagementsystem-indexer.yml as defined here.
1. ProjectType
2. Department
The image name of the service is available in the release charts in the DevOps repository. The service can be deployed using Helm commands.
Environment variables to be configured in the Helm chart for the service are:
Add the ‘db-host’,’db-name’,’db-url’,’domain’ and all the digit core platform services configurations (Idgen, workflow, user etc.) in respective environments yaml file.
Add project-management-system related environment variables values. A sample from a ‘dev’ environment yaml file is provided below:
Add the ‘’ related configuration to the respective environment yaml file. Make sure to change the git-sync branch name to one that applies to the environment.
Verify whether the project management system persister file is added in the egov-persister.persister-yml-path variable. If not, follow the process outlined .
Verify whether the project management system indexer file is added to the egov-indexer.egov-indexer-yaml-repo-path variable. If not, follow the process outlined .
Verify whether the project management system persister file is added to the audit-service.persist-yml-path variable. If not, follow the process outlined .
Make sure to add the DB (Postgres and flyway) username & password in the respective environment secrets yaml file the way it's done.
Make sure to add the DIGIT core service-related secrets that are configured in the respective environment secret file the way it's done.
NOTE: Restart egov-mdms-service, egov-accesscontrol, egov-persister, audit-service, egov-indexer and zuul after the above changes are performed.
Refer to the API spec for a description of the APIs. Find the Postman scripts here to understand the request payloads.
{
"code": "PROJECT_CREATOR",
"name": "PROJECT CREATOR",
"description": "Project Creator"
},
{
"code": "PROJECT_VIEWER",
"name": "PROJECT VIEWER",
"description": "Project Viewer"
},{
"id": 51,
"name": "Create Project",
"url": "/pms/project/v1/_create",
"parentModule": "project-management-system",
"displayName": "Create Project",
"orderNumber": 0,
"enabled": false,
"serviceCode": "project-management-system",
"code": "null",
"path": ""
},
{
"id": 52,
"name": "Search Project",
"url": "/pms/project/v1/_search",
"parentModule": "project-management-system",
"displayName": "Search Project",
"orderNumber": 0,
"enabled": false,
"serviceCode": "project-management-system",
"code": "null",
"path": ""
},
{
"id": 53,
"name": "Update Project",
"url": "/pms/project/v1/_update",
"parentModule": "project-management-system",
"displayName": "Update Project",
"orderNumber": 0,
"enabled": false,
"serviceCode": "project-management-system",
"code": "null",
"path": ""
},{
"id": 51,
"name": "Create Project",
"url": "/project/v1/_create",
"parentModule": "project-management-system",
"displayName": "Create Project",
"orderNumber": 0,
"enabled": false,
"serviceCode": "project-management-system",
"code": "null",
"path": ""
},
{
"id": 52,
"name": "Search Project",
"url": "/project/v1/_search",
"parentModule": "project-management-system",
"displayName": "Search Project",
"orderNumber": 0,
"enabled": false,
"serviceCode": "project-management-system",
"code": "null",
"path": ""
},
{
"id": 53,
"name": "Update Project",
"url": "/project/v1/_update",
"parentModule": "project-management-system",
"displayName": "Update Project",
"orderNumber": 0,
"enabled": false,
"serviceCode": "project-management-system",
"code": "null",
"path": ""
},{
"format": "PJ/[fy:yyyy-yy]/[cy:MM]/[SEQ_PROJECT_NUM]",
"idname": "project.number"
}PROJECT_VIEWER
Project Viewer
/project/v1/_search
EMPLOYEE_COMMON
Employee Common
/inbox/v2/_search
Muster roll is a record of attendance and quantity of work done by wage seekers.
A muster roll serves as a record of attendance, indicating the hours worked, wages owed, and the amount of work completed by labourers during a specified time frame.
The attendance service supplies raw attendance logs, while the muster roll service collects these logs and calculates attendance according to specific business rules. For instance, determining whether attendance is measured in hours or days and defining what constitutes a half-day or a full day of attendance are decisions that depend on the specific implementation. These configurations can be adjusted within the service, and attendance calculations will be carried out based on these settings.
Attendance
Individual
Persister
MDMS
The functionality includes the following APIs:
Estimate Wages: This API calculates the wages for a wage seeker based on their attendance logs.
Create Muster Roll: It allows you to create a muster roll, which is essentially a list of wage seekers.
Update Muster Roll: You can use this API to update a muster roll with modified aggregate attendance data.
Here is a list of variables that need to be configured in the Helm environment file before deploying the muster roll service. This file can typically be found under a specific directory or location as given below:
https://github.com/{{ORG}}/DIGIT-DevOps/deploy-as-code/helm/environments/{{EnvironmentFile}}.yaml
Refer to the .
Add these ‘db-host’,’db-name’,’db-url’, ’domain’ and all the digit core platform services configurations (Idgen, workflow, user etc.) in respective environments yaml file.
Add muster-roll-service related environment variables’ value like the way it's done in the’ environment yaml file.
Add all the APIs exposed (refer to the table below for actual APIs) to the actions.json file in MDMS
Module name: ACCESSCONTROL-ACTIONS-TEST
Master name: actions-test
Configure roles based on the roles column below in roles.json file.
Module name: ACCESSCONTROL-ROLES
Master name: roles
Role-action mapping is configured in MDMS per the table below.
Module name: ACCESSCONTROL-ROLEACTIONS
Master name: roleactions.json
Other muster roll masters are configured in the common-masters folder:
1. Import the postman collection for muster roll service into the Postman application.
2. Import the environment variables required for running the Postman collection. This will create an environment ‘Muster Environment’.
3. MusterRoll requires the below services from the Attendance Service API to be run. So run the below services before running the muster roll postman collection.
a) Create Attendance register -
b) Enroll attendees to the register -
c) Attendance log create -
4. Update the current value of the variable ‘registerId’ in ‘Muster Environment’ with the id returned by the response in the create attendance register ( in step 3 a)
5. Run the ‘Muster Roll Service’ postman collection as ‘Run Collection’. It will run the /_estimate, /_create, /_update and /_search API’s success and validation error scenarios.
6. Muster will be created for the attendees enrolled in the attendance register (in step 3 b) using the attendance logs created (in step 3 c).
The current value of environment variables ‘musterRollId’ and ‘musterRollNumber’ will be set from the response of the /_create muster roll which will be used by /_update and /_search APIs.
Workflow
Idgen
Notification
Add the egov-mdms-service related configuration to the respective environment YAML file. Make sure you change the gitsync.branch name.
Check the muster-roll-service persister file is added to the egov-persister.perister-yml-path variable. If not, follow the steps outlined here.
Make sure to add the DB(Postgres and flyway) username & password in the respective environment secret YAML file as per the steps outlined here.
Make sure to add the digit core services-related secrets that are configured in the respective environment secret file as per the steps outlined here.
ORG_ADMIN
ORG_STAFF
/muster-roll/v1/_estimate
ORG_ADMIN
ORG_STAFF
/muster-roll/v1/_create
ORG_ADMIN
ORG_STAFF
MUSTER_ROLL_VERIFIER
MUSTER_ROLL_APPROVER
/muster-roll/v1/_update
ORG_ADMIN
ORG_STAFF
MUSTER_ROLL_VERIFIER
MUSTER_ROLL_APPROVER
BILL_CREATOR
BILL_VIEWER
/muster-roll/v1/_search
The registry provides functionality to add measures data.
A running DIGIT platform is needed to deploy the measurement registry. Specifically, the following dependencies are needed:
DIGIT backbone services
Persister
Indexer
IDGen
This service provides APIs to create, update and search for measurement registries. Refer to the .
The below variables should be configured for the measurement registry in the Helm environment file before deployment. The Helm environment file will be located under:
https://github.com/{{ORG}}/DIGIT-DevOps/deploy-as-code/helm/environments/{{EnvironmentFile}}.yaml
Refer to the .
Add db-host,db-name,db-url,domain and all the digit core platform services configurations (Idgen, workflow,user etc.) in the YAML file.
Add the ‘’ related configuration to the respective environment YAML file. Change the gitsync.branch name.
Check the measurement-registry persister file is added to the egov-persister.perister-yml-path variable. If not, add the way it's done .
Ensure the id format is configured in the ‘IdFormat.json’ file of the ‘common-masters’ module. The sample .
Make sure that the file is present in the configs repository in the below location.
In case it is not available, make sure to add the persister YML file.
It is important to restart MDMS and the persister service after adding the file to the above location.
MDMS
FileStore
Make sure to add the DB (Postgres and flyway) username & password in the respective environment secret yaml file. Follow the steps here.
Make sure to add the DIGIT core services-related secrets configured in the respective environment secret file. Follow the steps here.
{
"format": "MB/[fy:yyyy-yy]/[SEQ_MEASUREMENT_NUM]",
"idname": "mb.reference.number"
}Organisation registry to store vendors, contractors, CBOs and other org types.
The organisation service is a generic registry to store all types of organisations. This includes vendors, contractors, and community-based organisations in the Works domain. This registry stores information about an organisation including their contact details, tax identifiers, work areas and other relevant information.
The below services need to be running in the environment for the organisation registry to function as expected:
Persister
Indexer
User
Individual
Provides APIs to create, update and search an organisation's details. As part of organisation creation, it also creates a system user who can log into the DIGIT system and perform actions on behalf of the organisation. The contact person details are used to create the user with a CITIZEN role and an OTP-based login.
The Helm chart for this service is .
Configure roles, actions and role-actions per the table below by following the steps .
Make sure is present in the configs repo under the egov-persister directory.
Make sure that the file is present in the configs repo under the egov-indexer directory.
The following ID formats are configured for the Organisation service under the common-masters directory, IDFormat.json file. Make sure these are present in the file.
SMS templates have to be configured with the service provider to send notifications to users. Current SMS template configurations are as follows:
Download the for this service and test the APIs against a DIGIT server.
MDMS
Access Control
Notification
IDGen
Filestore
WORK_ORDER_CREATOR
MUKTA_ADMIN
/org-services/organisation/v1/_search
MUKTA_ADMIN
/org-services/organisation/v1/_create
MUKTA_ADMIN
/org-services/organisation/v1/_update
{
"format": "ORG-[SEQ_ORG_NUM]",
"idname": "org.number"
},
{
"format": "SR/ORG/[cy:dd-MM-yyyy]/[SEQ_ORG_APP_NUM]",
"idname": "org.application.number"
},
{
"format": "SR/FUNC/[cy:dd-MM-yyyy]/[SEQ_FUNC_APP_NUM]",
"idname": "function.application.number"
} {
"code": "ORGANISATION_NOTIFICATION_ON_CREATE",
"message": "Dear {individualName}, You have been registered as the contact person of {organisationName} on MuktaSoft, Organisation ID {ID}. To login please click on {cbo_portal_url}. Contact Mukta Coordinator for more details.",
"module": "rainmaker-common-masters",
"locale": "en_IN"
},
{
"code": "ORGANISATION_NOTIFICATION_ON_UPDATE",
"message": "Dear {contactpersonname}, The organization details has been updated on your request. Please contact the MUKTA Coordinator if you have not made this request. To login please click on {cbo_portal_url}.",
"module": "rainmaker-common-masters",
"locale": "en_IN"
}
The attendance service provides generic attendance logging functionality for recording "in" and "out" timestamps for individuals. These timestamps are logged on a per-individual basis. The muster roll service takes on the responsibility of aggregating and calculating attendance based on these recorded timestamps. It processes and computes attendance data using these individual "in" and "out" timestamps to provide a comprehensive view of attendance records.
A running DIGIT platform is needed to deploy the attendance service. Specifically, the following dependencies are needed:
Individual
MDMS
Idgen
Persister
Provides APIs to:
Create an attendance register
Map staff to the register
Map attendees to the register
Log attendance
/attendance/v1/Below are the variables that should be configured for the contract service in the Helm environment file before deployment. The Helm environment file is located under:
https://github.com/{{ORG}}/DIGIT-DevOps/deploy-as-code/helm/environments/{{EnvironmentFile}}.yaml
Refer to the .
Add these ‘db-host’,’db-name’,’db-url’, ’domain’ and all the digit core platform services configurations (Idgen, workflow, user etc.) in respective environments YAML file.
Add attendance-service related environment variables’ value like the way it's done in the’ environment YAML file.
Add all the APIs exposed by the attendance service (refer to the table below for actual APIs) to the actions.json file in MDMS
Module name: ACCESSCONTROL-ACTIONS-TEST
Master name: actions-test
Configure roles based on the roles column below in roles.json file.
Module name: ACCESSCONTROL-ROLES
Master name: roles
Role-action mapping is configured in MDMS per the table below .
Module name: ACCESSCONTROL-ROLEACTIONS
Master name: roleactions.json
Make sure the id format is configured in the file of the common-masters module in MDMS.
Make sure that the file is present in the MDMS repository of the organisation: https://github.com/{{ORG}}/works-configs/tree/<BRANCH>/egov-persister
Sample are here to demonstrate integration with the attendance service.
Indexer
Edit attendance registers, staff, attendees and attendance.
Add the ‘egov-mdms-service’ related configuration to the respective environment YAML file. Make sure you change the gitsync.branch name.
Check the attendance-service persister file is added in the egov-persister.perister-yml-path variable. If not, follow the steps outlined here.
Make sure to add the DB(Postgres and flyway) username & password in the respective environment secret YAML file as per the steps given here.
Make sure to add the DIGIT core services-related secrets that are configured in the respective environment secret file the way it's done here.
/attendance/attendee/v1/_create
ORG_ADMIN
ORG_STAFF
/attendance/attendee/v1/_delete
ORG_ADMIN
ORG_STAFF
/attendance/log/v1/_create
ORG_ADMIN
ORG_STAFF
/attendance/log/v1/_search
ORG_ADMIN
ORG_STAFF
/attendance/log/v1/_update
ORG_ADMIN
JUNIOR_ENGINEER
MUNICIPAL_ENGINEER
/attendance/v1/_create
ORG_ADMIN
JUNIOR_ENGINEER
MUNICIPAL_ENGINEER
/attendance/v1/_update
ORG_ADMIN
JUNIOR_ENGINEER
MUNICIPAL_ENGINEER
/attendance/v1/_search
ORG_ADMIN
ORG_STAFF
/attendance/staff/v1/_create
ORG_ADMIN
ORG_STAFF
/attendance/staff/v1/_delete
{
"format": "WR/[fy:yyyy-yy]/[cy:MM]/[cy:dd]/[SEQ_ATTENDANCE_REGISTER_NUM]",
"idname": "attendance.register.number"
}
ORG_ADMIN
ORG_STAFF
Detailed description of configuring the contract service
The contract service provides the functionality of a works contract.
The source code for this service is available here. Refer to the below docs for a deeper understanding of this service.
A running DIGIT platform is needed to deploy the contract service. Specifically, the following dependencies are needed:
Estimate
Organisation
User
Workflow
This service provides APIs to create, update and search for contracts. Refer to the for detailed scope and functionality. Low-level technical design is
The below variables should be configured for the contract service in the Helm environment file before deployment. The Helm environment file will be located under:
https://github.com/{{ORG}}/DIGIT-DevOps/deploy-as-code/helm/environments/{{EnvironmentFile}}.yaml
Refer to the .
Add db-host,db-name,db-url,domain and all the digit core platform services configurations (Idgen, workflow,user etc.) in the YAML file.
Add contract-service related environment variables’ value like the way it's done in ’ environment YAML file. Search for "contract-service" in the file.
Add the ‘’ related configuration to the respective environment YAML file. Make sure you change the gitsync.branch name.
Configure actions, roles and role-action mappings from the table below. Follow the steps .
These must be translated into JSON in the role-action mapping module in MDMS.
Example - available .
The following masters are to be added as per the table below:
Make sure the id format is configured in the ‘IdFormat.json’ file of the ‘common-masters’ module. The sample .
The following workflow JSON needs to be put in the request body of the /egov-workflow-v2/egov-wf/businessservice/_create API.
Please make sure that the file is present in the configs repository in the below location.
If not present, please make sure to add the persister YML file.
Make sure to restart MDMS and the persister service after adding the file at the above location.
Please make sure that the file is present in the configs repository in the below location.
In the MDMS repository, locate the. Make sure the following JSON is added to the inbox configuration:
Restart the Inbox service after updating the above configuration
The API specifications for this service are located . Postman scripts are available for reference to understand the request payloads.
The measurement book service integrates estimate line item validation and workflow along with the measurement book registry.
A running DIGIT platform is needed to deploy the measurement service. Specifically, the following dependencies are needed:
DIGIT backbone services
Persister
Indexer
MDMS
This service provides APIs to create, update and search for measurement service. Refer to the .
The below variables should be configured for the measurement registry in the Helm environment file prior to deployment. The Helm environment file will be located under:
https://github.com/{{ORG}}/DIGIT-DevOps/deploy-as-code/helm/environments/{{EnvironmentFile}}.yaml
Refer to the .
Add db-host,db-name,db-url,domain and all the digit core platform services configurations (Idgen, workflow,user etc.) in the YAML file.
Add the ‘’ related configuration to the respective environment YAML file. Make sure you change the gitsync.branch name.
Check the measurement-registry persister file is added to the egov-persister.perister-yml-path variable. If not, please add the way it's done .
Configure actions, roles and role-action mappings from the table below. Follow the steps here.
These must be translated into JSON in the role-action mapping module in MDMS.
Example - available .
The following workflow JSON needs to be put in the request body of the /egov-workflow-v2/egov-wf/businessservice/_create API.
Make sure that the file is present in the configs repository in the below location.
Please make sure that the file is present in the configs repository in the below location.
In the MDMS repository, locate the. Make sure the following JSON is added to the inbox configuration:
IDGen
HRMS
Notification
Persister
Indexer
MDMS
egov-persister.perister-yml-path variable. If not, please add the way it's done here.Make sure to add the DB(Postgres and flyway) username & password in the respective environment secret yaml file. Follow the steps here.
Make sure to add the DIGIT core services-related secrets configured in the respective environment secret file. Follow the steps here.
/contract/v1/_search
/wms/contract/_search
WORK_ORDER_APPROVER
/contract/v1/_update
/contract/v1/_search
WORK_ORDER_VIEWER
/contract/v1/_search
/wms/contract/_search
EMPLOYEE_COMMON
/inbox/v2/_search
WORK_ORDER_CREATOR
/contract/v1/_create
/contract/v1/_update
/contract/v1/_search
/wms/contract/_search
WORK_ORDER_VERIFIER
/contract/v1/_update
CBO Roles
OCI Roles
ContractType
Overheads
{
"format": "WO/[fy:yyyy-yy]/[SEQ_CONTRACT_NUM]",
"idname": "contract.number"
} {
"format": "RW/[fy:yyyy-yy]/[SEQ_CONT_SUPPLEMENT_NUM]",
"idname": "contract.supplement.number"
}
Measurement Book Registry
Estimate
Contract
Project
HRMS
Localization
Workflow
Make sure to add the DB(Postgres and flyway) username & password in the respective environment secret yaml file. Follow the steps here.
Make sure to add the DIGIT core services-related secrets configured in the respective environment secret file. Follow the steps here.
/measurement-service/v1/_search
/wms/measurement-service/_search
MB_APPROVER
/measurement-service/v1/_update
/measurement-service/v1/_search
MB_VIEWER
/measurement-service/v1/_search
/wms/measurement-service/_search
EMPLOYEE_COMMON
/inbox/v2/_search
MB_CREATOR
/measurement-service/v1/_create
/measurement-service/v1/_update
/measurement-service/v1/_search
/wms/measurement-service/_search
MB_VERIFIER
/measurement-service/v1/_update
"BusinessServices": [
{
"tenantId": "pg",
"businessService": "CONTRACT",
"business": "contract-service",
"businessServiceSla": 604800000,
"states": [
{
"sla": null,
"state": null,
"applicationStatus": null,
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "CREATE",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"WORK_ORDER_CREATOR"
]
}
]
},
{
"sla": 172800000,
"state": "PENDING_FOR_VERIFICATION",
"applicationStatus": "SUBMITTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "VERIFY_AND_FORWARD",
"nextState": "PENDING_FOR_APPROVAL",
"roles": [
"WORK_ORDER_VERIFIER"
]
},
{
"action": "SEND_BACK",
"nextState": "PENDING_FOR_CORRECTION",
"roles": [
"WORK_ORDER_VERIFIER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"WORK_ORDER_VERIFIER"
]
}
]
},
{
"sla": 86400000,
"state": "PENDING_FOR_APPROVAL",
"applicationStatus": "VERIFIED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "APPROVE",
"nextState": "APPROVED",
"roles": [
"WORK_ORDER_APPROVER"
]
},
{
"action": "SEND_BACK",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"WORK_ORDER_APPROVER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"WORK_ORDER_APPROVER"
]
},
{
"action": "SEND_BACK_TO_ORIGINATOR",
"nextState": "PENDING_FOR_CORRECTION",
"roles": [
"WORK_ORDER_APPROVER"
]
}
]
},
{
"sla": 604800000,
"state": "APPROVED",
"applicationStatus": "APPROVED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "ACCEPT",
"nextState": "ACCEPTED",
"roles": [
"ORG_ADMIN"
]
},
{
"action": "DECLINE",
"nextState": "PENDING_FOR_REASSIGNMENT",
"roles": [
"ORG_ADMIN"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"ORG_ADMIN"
]
}
]
},
{
"sla": 86400000,
"state": "PENDING_FOR_CORRECTION",
"applicationStatus": "SENT_BACK",
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "EDIT",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"WORK_ORDER_CREATOR"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"WORK_ORDER_CREATOR"
]
}
]
},
{
"sla": 86400000,
"state": "PENDING_FOR_REASSIGNMENT",
"applicationStatus": "DECLINED",
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "EDIT",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"WORK_ORDER_CREATOR"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"WORK_ORDER_CREATOR"
]
}
]
},
{
"sla": null,
"state": "ACCEPTED",
"applicationStatus": "ACCEPTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"isStateUpdatable": false,
"actions": [
]
},
{
"sla": null,
"state": "REJECTED",
"applicationStatus": "REJECTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"isStateUpdatable": false,
"actions": [
]
}
]
}
]{
"module": "contract-service",
"index": "contract-inbox",
"allowedSearchCriteria": [
{
"name": "tenantId",
"path": "Data.tenantId.keyword",
"isMandatory": true,
"operator": "EQUAL"
},
{
"name": "workOrderNumber",
"path": "Data.contractNumber.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "revisedWorkOrderNumber",
"path": "Data.supplementNumber.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "status",
"path": "Data.currentProcessInstance.state.uuid.keyword",
"isMandatory": false
},
{
"name": "projectId",
"path": "Data.additionalDetails.projectId.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "projectType",
"path": "Data.additionalDetails.projectType.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "ward",
"path": "Data.additionalDetails.ward.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "locality",
"path": "Data.additionalDetails.locality.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "wfStatus",
"path": "Data.contractStatus.keyword",
"isMandatory": false
},
{
"name": "assignee",
"path": "Data.currentProcessInstance.assignes.uuid.keyword",
"isMandatory": false
}
],
"sortBy": {
"path": "Data.auditDetails.createdTime",
"defaultOrder": "DESC"
},
"sourceFilterPathList": [
"Data.contractNumber",
"Data.businessService",
"Data.additionalDetails.projectName",
"Data.additionalDetails.projectId",
"Data.additionalDetails.orgName",
"Data.currentProcessInstance",
"Data.totalContractedAmount",
"Data.auditDetails"
]
}"BusinessServices": [
{
"tenantId": "pg",
"businessService": "MB",
"business": "measurement-book-service",
"businessServiceSla": 432000000,
"states": [
{
"sla": null,
"state": null,
"applicationStatus": null,
"docUploadRequired": true,
"isStartState": true,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "SAVE_AS_DRAFT",
"nextState": "DRAFTED",
"roles": [
"MB_CREATOR"
]
}
]
},
{
"sla": null,
"state": "DRAFTED",
"applicationStatus": "DRAFTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": false,
"actions": [
{
"action": "SUBMIT",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"MB_CREATOR"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"MB_CREATOR"
]
}
]
},
{
"sla": 172800000,
"state": "PENDING_FOR_VERIFICATION",
"applicationStatus": "SUBMITTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": false,
"actions": [
{
"action": "VERIFY_AND_FORWARD",
"nextState": "PENDING_FOR_APPROVAL",
"roles": [
"MB_VERIFIER"
]
},
{
"action": "SENT_BACK",
"nextState": "PENDING_FOR_CORRECTION",
"roles": [
"MB_VERIFIER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"MB_VERIFIER"
]
}
]
},
{
"sla": 86400000,
"state": "PENDING_FOR_APPROVAL",
"applicationStatus": "VERIFIED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": false,
"actions": [
{
"action": "SENT_BACK",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"MB_APPROVER"
]
},
{
"action": "APPROVE",
"nextState": "APPROVED",
"roles": [
"MB_APPROVER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"MB_APPROVER"
]
},
{
"action": "SEND_BACK_TO_ORIGINATOR",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"MB_APPROVER"
]
}
]
},
{
"sla": 86400000,
"state": "PENDING_FOR_CORRECTION",
"applicationStatus": "SENT_BACK",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": false,
"actions": [
{
"action": "EDIT/RE-SUBMIT",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"MB_CREATOR"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"MB_CREATOR"
]
},
{
"action": "SEND_BACK_TO_ORIGINATOR",
"nextState": "PENDING_FOR_VERIFICATION",
"roles": [
"MB_CREATOR"
]
}
]
},
{
"sla": null,
"state": "REJECTED",
"applicationStatus": "REJECTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"isStateUpdatable": false,
"actions": null
},
{
"sla": null,
"state": "APPROVED",
"applicationStatus": "APPROVED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"isStateUpdatable": false,
"actions": null
}
]
}
]{
"module": "measurement-service",
"index": "measurement-service-index",
"allowedSearchCriteria": [
{
"name": "tenantId",
"path": "Data.tenantId.keyword",
"isMandatory": true,
"operator": "EQUAL"
},
{
"name": "status",
"path": "Data.currentProcessInstance.state.uuid.keyword",
"isMandatory": false
},
{
"name": "measurementNumber",
"path": "Data.measurementNumber.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "projectId",
"path": "Data.contract.additionalDetails.projectId.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "ward",
"path": "Data.contract.additionalDetails.ward.keyword",
"isMandatory": false,
"operator": "EQUAL"
},
{
"name": "assignee",
"path": "Data.currentProcessInstance.assignes.uuid.keyword",
"isMandatory": false
},
{
"name": "projectType",
"path": "Data.contract.additionalDetails.projectType.keyword",
"isMandatory": false,
"operator": "EQUAL"
}
],
"sortBy": {
"path": "Data.auditDetails.createdTime",
"defaultOrder": "DESC"
},
"sourceFilterPathList": [
"Data.referenceId",
"Data.id",
"Data.measurementNumber",
"Data.measures",
"Data.auditDetails",
"Data.history",
"Data.currentProcessInstance",
"Data.additionalDetails",
"Data.workflow",
"Data.wfStatus",
"Data.contract.additionalDetails",
"Data.contract.id",
"Data.contract.contractNumber",
"Data.contract.additionalDetails"
]
}Provides an overview of the configuration of the estimate service
The estimate service provides the functionality to create, update and search for estimates related to a Works project. An estimate is always linked to a project.
The source code for this service is available here. Refer to the below docs for a deeper understanding of this service.
The following services need to be running for the Estimate service to function:
DIGIT backbone services (PostgreSQL, Elastic Search, Zuul)
Project
MDMS
Persister
Refer to the for details on the capabilities supported by this service.
Configure roles, actions and role-action mappings as per the table below by referring to this document:
Refer to the sample .
The persister file for the service is called estimate-service.yml.
Follow the steps for configuring this.
Ensure the below files are present in
In case the above files are not present, add them in the given location and restart the egov-indexer service in the respective environment. Before restarting the service ensure the below configurations are done.
In the common-masters folder of MDMS, locate the IDFormat.json file. ID formats should be configured for the Estimate number as well as Estimate Detail objects. Make sure the following lines are added and the format modified per implementation:
The following masters need to be configured for the Estimate Service. Make sure to use the same master name and module names:
The workflow configuration for Estimate is given below. This payload needs to be called against businessService _create API for workflow configuration:
Inbox should be configured if Workflow is configured for the Estimate Service. If there is no workflow involved, this can be skipped.
Add the inbox-v2 configuration in a respective environment in MDMS as it has been done . Below is the inbox configuration for the Estimate service:
The below variables should be configured well before the deployment of the estimate service build image. These are configured in the DevOps repository:
Add these ‘db-host’,’db-name’,’db-url’, ’domain’ and all the DIGIT core platform services configurations (Idgen, workflow, user etc.) in respective environments YAML file.
Add estimate-service related environment variables’ value like the way it's done in ’ environment YAML file.
Add the ‘’ related configuration to the respective environment YAML file. Make sure to change the gitsync.branch name.
Postman scripts for Estimate are available .
Indexer
Workflow
User
MDMS V2
Contract Service
Measurement Service
/wms/estimate/_search
TECHNICAL_SANCTIONER
/estimate-service/estimate/v1/_update
/estimate-service/estimate/v1/_search
/wms/estimate/_search
ESTIMATE_APPROVER
/estimate-service/estimate/v1/_update
/estimate-service/estimate/v1/_search
/wms/estimate/_search
ESTIMATE_VIEWER
/estimate-service/estimate/v1/_search
/wms/estimate/_search
EMPLOYEE_COMMON
/inbox/v2/_search
Make sure to add the DB (Postgres and flyway) username & password in the respective environment secret YAML file. Follow the steps given here.
Ensure that the DIGIT core services-related secrets are added to the respective environment secret file. Follow the steps given here.
ESTIMATE_CREATOR
/estimate-service/estimate/v1/_create
/estimate-service/estimate/v1/_search
/wms/estimate/_search
ESTIMATE_VERIFIER
/estimate-service/estimate/v1/_update
/estimate-service/estimate/v1/_search
{
"tenantId": "pg",
"moduleName": "common-masters",
"IdFormat": [
{
"format": "ES/[fy:yyyy-yy]/[SEQ_ESTIMATE_NUM]",
"idname": "estimate.number"
},
{
"format": "RE/[fy:yyyy-yy]/[SEQ_ESTIMATE_REVISION_NUM]",
"idname": "estimate.revision.number"
}]
}"BusinessServices": [
{
"tenantId": "statea",
"businessService": "ESTIMATE",
"business": "estimate-service",
"businessServiceSla": 432000000,
"states": [
{
"sla": null,
"state": null,
"applicationStatus": "SUBMITTED",
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "SUBMIT",
"nextState": "PENDINGFORVERIFICATION",
"roles": [
"ESTIMATE_CREATOR"
]
}
]
},
{
"sla": 172800000,
"state": "PENDINGFORVERIFICATION",
"applicationStatus": "VERIFIED",
"docUploadRequired": false,
"isStartState": true,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "VERIFYANDFORWARD",
"nextState": "PENDINGFORTECHNICALSANCTION",
"roles": [
"ESTIMATE_VERIFIER"
]
},
{
"action": "SENDBACK",
"nextState": "PENDINGFORCORRECTION",
"roles": [
"ESTIMATE_VERIFIER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"ESTIMATE_VERIFIER"
]
}
]
},
{
"sla": 86400000,
"state": "PENDINGFORTECHNICALSANCTION",
"applicationStatus": "TECHNICALLY SANCTIONED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "TECHNICALSANCTION",
"nextState": "PENDINGFORAPPROVAL",
"roles": [
"TECHNICAL_SANCTIONER"
]
},
{
"action": "SENDBACK",
"nextState": "PENDINGFORVERIFICATION",
"roles": [
"TECHNICAL_SANCTIONER"
]
},
{
"action": "SENDBACKTOORIGINATOR",
"nextState": "PENDINGFORCORRECTION",
"roles": [
"TECHNICAL_SANCTIONER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"TECHNICAL_SANCTIONER"
]
}
]
},
{
"sla": 86400000,
"state": "PENDINGFORAPPROVAL",
"applicationStatus": "SENT BACK",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "SENDBACK",
"nextState": "PENDINGFORTECHNICALSANCTION",
"roles": [
"ESTIMATE_APPROVER"
]
},
{
"action": "SENDBACKTOORIGINATOR",
"nextState": "PENDINGFORCORRECTION",
"roles": [
"ESTIMATE_APPROVER"
]
},
{
"action": "APPROVE",
"nextState": "APPROVED",
"roles": [
"ESTIMATE_APPROVER"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"ESTIMATE_APPROVER"
]
}
]
},
{
"sla": 86400000,
"state": "PENDINGFORCORRECTION",
"applicationStatus": "RE-SUBMITTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": false,
"isStateUpdatable": true,
"actions": [
{
"action": "RE-SUBMITTED",
"nextState": "PENDINGFORVERIFICATION",
"roles": [
"ESTIMATE_CREATOR"
]
},
{
"action": "SENDBACKTOORIGINATOR",
"nextState": "PENDINGFORCORRECTION",
"roles": [
"ESTIMATE_CREATOR"
]
},
{
"action": "REJECT",
"nextState": "REJECTED",
"roles": [
"ESTIMATE_CREATOR"
]
}
]
},
{
"sla": null,
"state": "APPROVED",
"applicationStatus": "APPROVED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"isStateUpdatable": false,
"actions": null
},
{
"sla": null,
"state": "REJECTED",
"applicationStatus": "REJECTED",
"docUploadRequired": false,
"isStartState": false,
"isTerminateState": true,
"isStateUpdatable": false,
"actions": null
}
]
}
]{
"module": "estimate-service",
"index": "estimate-inbox-v2",
"allowedSearchCriteria": [
{
"name": "tenantId",
"path": "Data.tenantId.keyword",
"isMandatory": true,
"operator": "EQUAL"
},
{
"name": "status",
"path": "Data.currentProcessInstance.state.uuid.keyword",
"isMandatory": false
},
{
"name": "estimateId",
"path": "Data.estimateNumber.keyword",
"isMandatory": false
},
{
"name": "department",
"path": "Data.executingDepartment.keyword",
"isMandatory": false
},
{
"name": "typeOfWork",
"path": "Data.project.projectType.keyword",
"isMandatory": false
},
{
"name": "projectId",
"path": "Data.project.projectNumber.keyword",
"isMandatory": false
},
{
"name": "fromProposalDate",
"path": "Data.proposalDate",
"isMandatory": false,
"operator": "GTE"
},
{
"name": "toProposalDate",
"path": "Data.proposalDate",
"isMandatory": false,
"operator": "LTE"
},
{
"name": "createdBy",
"path": "Data.auditDetails.createdBy.keyword",
"isMandatory": false
}
],
"sortBy": {
"path": "Data.auditDetails.createdTime",
"defaultOrder": "ASC"
},
"sourceFilterPathList": ["Data.currentProcessInstance", "Data.auditDetails", "Data.additionalDetails"]
}