All pages
Powered by GitBook
1 of 12

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Service Configuration

Configuring platform services

Click on the doc link below to access the service configuration details for the platform services.

Click on the individual service links below to access the Mukta-specific service configuration details.

Project

Estimate

Contract

Attendance

Muster Roll

Expense

Bank Account

Organisation

Individual

Measurement Book Registry

Measurement Book Service

Project

Steps to configure the project service

Overview

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.

Configuration

MDMS Configuration

roles.json

Define (if not present already) and assign the EMPLOYEE_COMMON role to all project actors.

actions.json

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.

roleactions.json

The table below shows the mapping between the APIs and the roles:

Role Code
Description
API

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.

IdGen Format

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.

Persister Configuration

Add the persister file project-management-system-persister.yml as defined here.

Indexer Configuration

Add indexer file projectmanagementsystem-indexer.yml as defined here.

Master Data Configuration

1. ProjectType

2. Department

3. Boundary Data

4. Nature of Work

Deployment

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:

    1. https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/environments/works-dev.yaml#L80

  • 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.

Integration

Refer to the API spec for a description of the APIs. Find the Postman scripts here to understand the request payloads.

here
Low-level design
Functional specifications

Individual

Overview

Pre-requisites

Expense

Overview

Pre-requisites

 {
      "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"
}
Functionality

Deployment

Configuration

Integration

Functionality

Deployment

Configuration

Integration

PROJECT_VIEWER

Project Viewer

/project/v1/_search

EMPLOYEE_COMMON

Employee Common

/inbox/v2/_search

https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/environments/works-dev.yaml#L223-L230
https://github.com/egovernments/DIGIT-DevOps/tree/digit-works/deploy-as-code/helm/charts/digit-works/backend/project-management-system
egov-mdms-service
here
here
here
here
here

Muster Roll

Muster roll is a record of attendance and quantity of work done by wage seekers.

Overview

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.

Pre-requisites

  • Attendance

  • Individual

  • Persister

  • MDMS

Functionality

The functionality includes the following APIs:

  1. Estimate Wages: This API calculates the wages for a wage seeker based on their attendance logs.

  2. Create Muster Roll: It allows you to create a muster roll, which is essentially a list of wage seekers.

  3. Update Muster Roll: You can use this API to update a muster roll with modified aggregate attendance data.

Deployment

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.

Configuration

Configure Actions

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

Configure roles based on the roles column below in roles.json file.

Module name: ACCESSCONTROL-ROLES

Master name: roles

Configure Role-Action

Role-action mapping is configured in MDMS per the table below.

Module name: ACCESSCONTROL-ROLEACTIONS

Master name: roleactions.json

Roles
API Endpoints

Muster Roll Masters

Other muster roll masters are configured in the common-masters folder:

Integration

Steps to run the postman collection:

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

  • Search for Muster Roll: This API enables you to search for a muster roll using specific parameters. For more details, you can refer to the Swagger contract.

    https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/environments/works-dev.yaml#L203

  • https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/environments/works-dev.yaml#L264

  • https://github.com/egovernments/DIGIT-DevOps/commit/684a75232e422357245eab5fefacde28f64ffc0e

  • https://github.com/egovernments/DIGIT-DevOps/commit/478e493bc245e6e3cdea9d4e9599e2b51b880bb0

  • https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/charts/digit-works/backend/muster-roll-service/values.yaml

  • 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

    sample here
    ‘dev
    https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/environments/works-dev.yaml#L79
    MusterRoll.json
    WageSeekers.json
    Environment file
    Postman collection
    https://{hostname}/attendance/v1/_create
    https://{{hostname}}/attendance/attendee/v1/_create
    https://{{hostname}}/attendance/log/v1/_create

    Measurement Book Registry

    Overview

    The registry provides functionality to add measures data.

    Pre-requisites

    A running DIGIT platform is needed to deploy the measurement registry. Specifically, the following dependencies are needed:

    • DIGIT backbone services

    • Persister

    • Indexer

    • IDGen

    Functionality

    This service provides APIs to create, update and search for measurement registries. Refer to the .

    Deployment

    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 .

    Restart egov-mdms-service and egov-persister after the above changes are performed.

    Configuration

    Configure ID Generation

    Ensure the id format is configured in the ‘IdFormat.json’ file of the ‘common-masters’ module. The sample .

    IDGen Format

    Configure Persister

    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.

  • functional specifications here
    sample here
    egov-mdms-service
    here
    is available here
    measurement-registry-persister.yml
    https://github.com/<YOUR ORGANISATION>/configs/tree/UNIFIED-DEV/works/egov-persister
    {
      "format": "MB/[fy:yyyy-yy]/[SEQ_MEASUREMENT_NUM]",
      "idname": "mb.reference.number"
    }

    Organisation

    Organisation registry to store vendors, contractors, CBOs and other org types.

    Overview

    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.

    Pre-requisites

    The below services need to be running in the environment for the organisation registry to function as expected:

    • Persister

    • Indexer

    • User

    • Individual

    Functionality

    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.

    Deployment

    The Helm chart for this service is .

    Configuration

    Configure MDMS

    Configure roles, actions and role-actions per the table below by following the steps .

    Roles
    API Endpoints

    Configure Persister

    Make sure is present in the configs repo under the egov-persister directory.

    Configure Indexer

    Make sure that the file is present in the configs repo under the egov-indexer directory.

    Configure ID Generation

    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.

    Configure SMS Templates

    SMS templates have to be configured with the service provider to send notifications to users. Current SMS template configurations are as follows:

    Integration

    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

    configured here
    below
    organisation-persister.yml
    organisationservices-indexer.yml
    Postman collection
       {
          "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"
           }
    
    Core Services | DIGIT Corecore.digit.org
    Logo

    Attendance

    Overview

    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.

    Pre-requisites

    A running DIGIT platform is needed to deploy the attendance service. Specifically, the following dependencies are needed:

    • Individual

    • MDMS

    • Idgen

    • Persister

    Functionality

    Provides APIs to:

    • Create an attendance register

    • Map staff to the register

    • Map attendees to the register

    • Log attendance

    Base URL: /attendance/v1/

    Deployment

    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.

    Restart egov-mdms-service, egov-persister, egov-indexer, inbox, egov-workflow-v2, egov-accesscontrol and ZUUL services after the above changes are performed.

    Configuration

    Configure Actions

    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

    Configure roles based on the roles column below in roles.json file.

    Module name: ACCESSCONTROL-ROLES

    Master name: roles

    Configure Role-Action

    Role-action mapping is configured in MDMS per the table below .

    Module name: ACCESSCONTROL-ROLEACTIONS

    Master name: roleactions.json

    Roles
    APIs /Actions

    Configure Idgen

    Make sure the id format is configured in the file of the common-masters module in MDMS.

    IDGen format for attendance register number

    Configure Persister

    Make sure that the file is present in the MDMS repository of the organisation: https://github.com/{{ORG}}/works-configs/tree/<BRANCH>/egov-persister

    Integration

    Sample are here to demonstrate integration with the attendance service.

    Indexer

    Edit attendance registers, staff, attendees and attendance.

    https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/environments/works-dev.yaml#L189

  • https://github.com/egovernments/DIGIT-DevOps/tree/digit-works/deploy-as-code/helm/charts/digit-works/backend/attendance-service

  • 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"

    }

    sample here
    ‘dev
    https://github.com/egovernments/DIGIT-DevOps/blob/digit-works/deploy-as-code/helm/environments/works-dev.yaml#L77
    IdFormat.json
    attendance-service-persister.yml
    postman collections
    • ORG_ADMIN

    • ORG_STAFF

    Contract

    Detailed description of configuring the contract service

    Overview

    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.

    Low-level design

    Functional specifications

    Pre-requisites

    A running DIGIT platform is needed to deploy the contract service. Specifically, the following dependencies are needed:

    • Estimate

    • Organisation

    • User

    • Workflow

    Functionality

    This service provides APIs to create, update and search for contracts. Refer to the for detailed scope and functionality. Low-level technical design is

    Deployment

    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.

    Restart egov-mdms-service, egov-persister, egov-indexer, inbox, egov-workflow-v2, egov-accesscontrol and zuul after the above changes are performed.

    Configuration

    MDMS Configuration

    Configure actions, roles and role-action mappings from the table below. Follow the steps .

    Role
    APIs

    These must be translated into JSON in the role-action mapping module in MDMS.

    Example - available .

    Contract masters

    The following masters are to be added as per the table below:

    Idgen Configuration

    Make sure the id format is configured in the ‘IdFormat.json’ file of the ‘common-masters’ module. The sample .

    IDGen Format

    Workflow Configuration

    Contract Workflow

    The following workflow JSON needs to be put in the request body of the /egov-workflow-v2/egov-wf/businessservice/_create API.

    For more information on configuring workflow, please refer to the Workflow Service documentation here.

    Persister Configuration

    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.

    Indexer Configuration

    Please make sure that the file is present in the configs repository in the below location.

    Inbox Configuration

    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

    Integration

    The API specifications for this service are located . Postman scripts are available for reference to understand the request payloads.

    Measurement Book Service

    Overview

    The measurement book service integrates estimate line item validation and workflow along with the measurement book registry.

    Pre-requisites

    A running DIGIT platform is needed to deploy the measurement service. Specifically, the following dependencies are needed:

    • DIGIT backbone services

    • Persister

    • Indexer

    • MDMS

    Functionality

    This service provides APIs to create, update and search for measurement service. Refer to the .

    Deployment

    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 .

    Restart egov-mdms-service, egov-persister, egov-indexer, inbox, egov-workflow-v2, egov-accesscontrol and zuul after the above changes are performed.

    Configuration

    Configure MDMS

    Configure actions, roles and role-action mappings from the table below. Follow the steps here.

    Role
    APIs

    These must be translated into JSON in the role-action mapping module in MDMS.

    Example - available .

    Configure Workflows

    Measurement Service Workflow

    The following workflow JSON needs to be put in the request body of the /egov-workflow-v2/egov-wf/businessservice/_create API.

    Configure Persister

    Make sure that the file is present in the configs repository in the below location.

    Configure Indexer

    Please make sure that the file is present in the configs repository in the below location.

    Make sure to restart MDMS, persister service and indexer service after adding the file at the above location.

    Configure Inbox

    In the MDMS repository, locate the. Make sure the following JSON is added to the inbox configuration:

    IDGen

  • HRMS

  • Notification

  • Persister

  • Indexer

  • MDMS

  • Check the contract-service persister file is added to the 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

    https://github.com/egovernments/egov-mdms-data/blob/0dd049ffddbc7c6078b940b5eb9eb4951eb8996a/data/pg/works/ContractCBORoles.json

    OCI Roles

    https://github.com/egovernments/egov-mdms-data/blob/0dd049ffddbc7c6078b940b5eb9eb4951eb8996a/data/pg/works/ContractOfficerIncharge.json

    ContractType

    https://github.com/egovernments/egov-mdms-data/blob/0dd049ffddbc7c6078b940b5eb9eb4951eb8996a/data/pg/works/ContractType.json

    Overheads

    https://github.com/egovernments/egov-mdms-data/blob/0dd049ffddbc7c6078b940b5eb9eb4951eb8996a/data/pg/works/Overheads.json

    {

    "format": "WO/[fy:yyyy-yy]/[SEQ_CONTRACT_NUM]",

    "idname": "contract.number"

    } {

    "format": "RW/[fy:yyyy-yy]/[SEQ_CONT_SUPPLEMENT_NUM]",

    "idname": "contract.supplement.number"

    }

    functional specifications here
    available here.
    sample here
    ‘dev
    egov-mdms-service
    here
    here
    is available here
    contract-service-persister.yml
    https://github.com/<YOUR ORGANISATION>/works-configs/tree/DEV/egov-persister
    contractservices-indexer.yml
    https://github.com/{{your organisation}}/works-configs/tree/DEV/egov-indexer
    inbox configuration file
    here
    here

    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

    functional specifications here
    sample here
    egov-mdms-service
    here
    here
    Workflow configuration
    measurement-service-persister.yml
    https://github.com/<YOUR ORGANISATION>/configs/tree/UNIFIED-DEV/works/egov-persister
    measurement-service-indexer.yml
    https://github.com/<YOUR ORGANISATION>/configs/tree/UNIFIED-DEV/works/egov-indexer
    inbox configuration file

    "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"
      ]
    }

    Bank accounts

    Estimate

    Provides an overview of the configuration of the estimate service

    Overview

    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.

    Low-level design

    Functional specifications

    Pre-requisites

    The following services need to be running for the Estimate service to function:

    • DIGIT backbone services (PostgreSQL, Elastic Search, Zuul)

    • Project

    • MDMS

    • Persister

    Functionality

    Refer to the for details on the capabilities supported by this service.

    Configuration

    MDMS Configuration

    Configure roles, actions and role-action mappings as per the table below by referring to this document:

    Role
    APIs

    Refer to the sample .

    Persister Configuration

    The persister file for the service is called estimate-service.yml.

    Follow the steps for configuring this.

    Indexer Configuration

    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.

    Note: Add in the respective environment YAML file in the DevOps repository and then deploy the service.

    Idgen Configuration

    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:

    Estimate masters

    The following masters need to be configured for the Estimate Service. Make sure to use the same master name and module names:

    Workflow Configuration

    The workflow configuration for Estimate is given below. This payload needs to be called against businessService _create API for workflow configuration:

    Inbox 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:

    Deployment

    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.

    Integration

    Postman scripts for Estimate are available .

    Indexer

  • Workflow

  • User

  • IDGen

  • 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

    Check the estimate-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. 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

    functional specifications
    here
    https://github.com/egovernments/configs/blob/UNIFIED-DEV/works/egov-persister/estimate-service.yml
    here
    https://github.com/egovernments/configs/blob/UNIFIED-DEV/works/egov-indexer/estimateservices-indexer.yml
    this config
    UOM - Unit of measurement
    Overheads
    here
    https://github.com/egovernments/egov-mdms-data/blob/UNIFIED-DEV/data/pg/inbox-v2/InboxConfiguration.json
    ‘dev
    egov-mdms-service
    here

    {
      "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"]
        }