Overview
The vendor registry is a system that enables urban local body (ULB) employees to create and search a vendor, that is, the desludging operator (DSO) and driver entities with appropriate vehicle entities for the FSM application. This document contains the details about how to set up the vendor and describe the functionalities provided.
Pre-requisites
Before you proceed with the configuration, make sure the following pre-requisites are met:
Kafka server is up and running.
egov-persister service is running and has a vendor-persister config path added in it.
PSQL server is running and database is created to store FSM application data.
Following services should be up and running:
- egov-mdms-service
- egov-user-service
- boundary-service
- vehicle-service
Key Functionalities
EXISTING
Added payment payment preference and agency attributes for DSO.
Added gender attribute in the create and update APIs for vendor.
Updated the vendor search API to add vehicleCapacity in the search parameter to search all vendors matching the vehicle capacity specified in the search parameter.
Introduced the vendor tab.
Option to add/remove/update vendors individually.
User can add vehicle and driver.
Search for the list of all vehicles not associated with any vendors.
Users can enable or disable the vendor.
Introduced the driver tab.
Option to add/remove/update driver individually.
User should be able to create/update/enable/disable a driver from the driver screen.
Functionality to add/remove directly driver to vendor.
ENHANCEMENT
Part Search :
FSM Registry Vendor Tab
The vendor tab now supports part search by vendor name. This means that users can enter a partial vendor name and retrieve all relevant results that contain that specific portion.
For instance, if the vendor name is "Shambala corporation", users can search for any part of the vendor name, such as "sham" or "Shambala", and retrieve all relevant results which contain that specific portion.
FSM Registry Driver Tab
The driver tab now supports part search by driver name. This means that users can enter a partial driver name and retrieve all relevant results which contain that specific portion.
For instance, if the driver name is "Rajesh Ranjan", users can search for any part of the driver name, such as "raj" or "ranjan", and retrieve all relevant results which contain that specific portion.
Updating Registry Information
In the vendor tab, the admin has the ability to update certain vendor information, such as Gender, Mobile number, and Locality/Mohalla.
In the driver tab, the admin has the ability to update certain driver information, such as Gender, Driver, and License Number.
Deployment Details
Deploy the latest version of the vendor.
Add vendor-persister.yml file in the config folder in git and add that path in persister (the file path is to be added in the environment yaml file in param called persist-yml-path), and restart egov-persister-service.
Configuration Details
SAN-1047 - Added the query map for update vehicle and vendor topics. · egovernments/configs@56da639
SAN-1047: Added the vendor agency and payment preference column in th… · egovernments/configs@1659e4f
SAN-1047: Added new columns for vendor vehicle and driver status · egovernments/configs@2337e21
Added the audit logging for vehicle and vendor · egovernments/configs@482185f
Added new changes for Driver create and update & vendor -vehicle driv… · egovernments/configs@9ee374e
Update the persister for driver updates · egovernments/configs@04368c7
change the VENDOR_ID to VECHILE_ID for changing the vehicle status fo… · egovernments/configs@8a6ec56
updated the column in eg_vendor_driver table in update vendor topic · egovernments/configs@71b5297
changes reversed · egovernments/configs@5b86889
unlinking ofdriver from vendor · egovernments/configs@a36bb6e
SM-766 vendor not getting update in driver Tab · egovernments/configs@ad83851
SM-766 revert back the changes · egovernments/configs@e95bbeb
SM-766 Not able to change the vendor in driver details. · egovernments/configs@6f42ca2
SM-781 Not able to add vehicle in vendor tab · egovernments/configs@2b79b92
MDMS Configuration
SAN-1049: Added role actions for Driver APIs. · egovernments/egov-mdms-data@fb8e530
SAN-1063: Added the permissiosn for Vehicle trip creation · egovernments/egov-mdms-data@632ee94
SAN-1047: Added role action mapping for vendor and vehicle update · egovernments/egov-mdms-data@3e608a8
Business Service / Workflow Configuration
NA
Actions & Role Action Mapping
After adding actions and role action mappings, restart the egov-mdms-service
Actions
Copy {
"id": {{PLACEHOLDER1}},
"name": "Create Vendor/DSO",
"url": "/vendor/v1/_create",
"displayName": "Create Vehicle",
"orderNumber": 0,
"enabled": false,
"serviceCode": "vendor",
"code": "null",
"path": ""
},
{
"id": {{PLACEHOLDER2}},
"name": "Search Vendor/DSO",
"url": "/vendor/v1/_search",
"displayName": "Search Vendor",
"orderNumber": 1,
"enabled": false,
"serviceCode": "vendor",
"code": "null",
"path": ""
},
{
"id": {{PLACEHOLDER3}},
"name": "Vendor Driver Create",
"url": "/Vendor/driver/v1/_create",
"displayName": "Vendor Driver Create",
"orderNumber": 1,
"parentModule": "",
"enabled": false,
"serviceCode": "vendor",
"code": "null",
"path": ""
},
{
"id": {{PLACEHOLDER4}},
"name": "Vendor Driver Update",
"url": "/Vendor/driver/v1/_update",
"displayName": "Vendor Driver Update",
"orderNumber": 1,
"parentModule": "",
"enabled": false,
"serviceCode": "vendor",
"code": "null",
"path": ""
},
{
"id": {{PLACEHOLDER5}},
"name": "Vendor Driver Search",
"url": "/Vendor/driver/v1/_search",
"displayName": "Vendor Driver Search",
"orderNumber": 1,
"parentModule": "",
"enabled": false,
"serviceCode": "vendor",
"code": "null",
"path": ""
},
{
"id": {{PLACEHOLDER6}},
"name": "Update Vendor/DSO",
"url": "/vendor/v1/_update",
"displayName": "Update Vendor",
"orderNumber": 0,
"enabled": false,
"serviceCode": "vendor",
"code": "null",
"path": ""
}
Role Action Mapping
Copy [
{
"rolecode": "FSM_ADMIN",
"actionid": "{{PLACEHOLDER1}}",
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_ADMIN",
"actionid": "{{PLACEHOLDER2}}",
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_DSO",
"actionid": "{{PLACEHOLDER2}}",
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EDITOR_EMP",
"actionid": "{{PLACEHOLDER2}}",
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_VIEW_EMP",
"actionid": "{{PLACEHOLDER2}}",
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EMP_FSTPO",
"actionid": "{{PLACEHOLDER2}}",
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "CITIZEN",
"actionid": "{{PLACEHOLDER2}}",
"actioncode": "",
"tenantId": "pb"
}
]
{
"rolecode": "FSM_ADMIN",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_CREATOR_EMP",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_DSO",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EDITOR_EMP",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_VIEW_EMP",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EMP_FSTPO",
"actionid": {{PLACEHOLDER3}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_ADMIN",
"actionid": {{PLACEHOLDER4}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_CREATOR_EMP",
"actionid": {{PLACEHOLDER4}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_DSO",
"actionid": {{PLACEHOLDER4}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EDITOR_EMP",
"actionid": {{PLACEHOLDER4}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_VIEW_EMP",
"actionid": {{PLACEHOLDER4}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EMP_FSTPO",
"actionid": {{PLACEHOLDER4}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_ADMIN",
"actionid": {{PLACEHOLDER5}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_CREATOR_EMP",
"actionid": {{PLACEHOLDER5}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_DSO",
"actionid": {{PLACEHOLDER5}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EDITOR_EMP",
"actionid": {{PLACEHOLDER5}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_VIEW_EMP",
"actionid": {{PLACEHOLDER5}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_EMP_FSTPO",
"actionid": {{PLACEHOLDER5}},
"actioncode": "",
"tenantId": "pb"
},
{
"rolecode": "FSM_ADMIN",
"actionid": {{PLACEHOLDER6}},
"actioncode": "",
"tenantId": "pb"
}
Infra Ops Configuration
Configurations that we can manage through values.yml vehicle in infra-ops repo are listed below.
values.yml for the vehicle is available below.
SPRING_KAFKA_CONSUMER_GROUP_ID
Kafka topic to which service push data to save new vendor
PERSISTER_SAVE_VENDOR_TOPIC
egov-mdms-service from egov-service-host
vehicle from egov-service-host
egov-user-service from egov-service-host
egov-location from egov-service-host
Configurations sample in Values.yml
Copy # Common Labels
labels:
app: "vendor"
group: "rainmaker"
# Ingress Configs
ingress:
enabled: true
zuul: true
context: "vendor"
# Init Containers Configs
initContainers:
dbMigration:
enabled: true
schemaTable: "vendor_schema"
image:
repository: "vendor-db"
# Container Configs
image:
repository: "vendor"
replicas: "1"
healthChecks:
enabled: true
livenessProbePath: "/vendor/health"
readinessProbePath: "/vendor/health"
appType: "java-spring"
tracing-enabled: true
heap: "-Xmx256m -Xms256m"
java-args: "-Dspring.profiles.active=monitoring"
# Additional Container Envs
env: |
- name: EGOV_VEHICLE_HOST
valueFrom:
configMapKeyRef:
name: egov-service-host
key: vehicle
- name: EGOV_MDMS_HOST
valueFrom:
configMapKeyRef:
name: egov-service-host
key: egov-mdms-service
- name: EGOV_USER_HOST
valueFrom:
configMapKeyRef:
name: egov-service-host
key: egov-user
- name: EGOV_LOCATION_HOST
valueFrom:
configMapKeyRef:
name: egov-service-host
key: egov-location
- name: EGOV_HRMS_HOST
valueFrom:
configMapKeyRef:
name: egov-service-host
key: egov-hrms
- name: SPRING_KAFKA_CONSUMER_GROUP_ID
value: egov-vendor-services
- name: PERSISTER_SAVE_VENDOR_TOPIC
value: save-vendor-application
- name: PERSISTER_UPDATE_VENDOR_TOPIC
value: update-vendor-application
- name: SPRING_KAFKA_PRODUCER_KEY_SERIALIZER
value: org.apache.kafka.common.serialization.StringSerializer
- name: SPRING_KAFKA_PRODUCER_VALUE_SERIALIZER
value: org.springframework.kafka.support.serializer.JsonSerializer
- name: JAVA_OPTS
value: {{ index .Values "heap" | quote }}
- name: JAVA_ARGS
value: {{ index .Values "java-args" | quote }}
- name: SERVER_PORT
value: "8080"
- name: SECURITY_BASIC_ENABLED
value: "false"
- name: MANAGEMENT_SECURITY_ENABLED
value: "false"
{{- if index .Values "tracing-enabled" }}
- name: TRACER_OPENTRACING_ENABLED
value: "true"
{{- end }}
Data Setup
The DSO for the FSM system is a vendor. For every city/ULB, a DSO should be created with the representative details as owner, associated vehicles and drivers.
Sample Curl
Copy curl 'https://dev.digit.org/vendor/driver/v1/_update?tenantId=pb.amritsar' \
-H 'authority: dev.digit.org' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'content-type: application/json;charset=UTF-8' \
-H 'cookie: _ga=GA1.2.1852108775.1653914860; intercom-id-xp1951jv=17aa7431-3dc0-4524-9956-a22bb67a637f; __cuid=858e6f9f233c4b2c804d3f81109b48ac; amp_fef1e8=7faa94f4-6926-4f98-ac07-be2414f977c6R...1gkkb64lb.1gkkb6kvh.7p.a.83' \
-H 'origin: https://dev.digit.org' \
-H 'referer: https://dev.digit.org/digit-ui/employee/fsm/registry/modify-driver/b967d3ab-4ce4-41eb-931e-343734a673a0' \
-H 'sec-ch-ua: "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "Linux"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-origin' \
-H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' \
--data-raw '{"driver":{"id":"b967d3ab-4ce4-41eb-931e-343734a673a0","tenantId":"pb.amritsar","name":"Vinot","owner":{"id":23597,"uuid":"1eaeae8e-e2cb-4736-b0da-2469441c7136","userName":"9876543210","password":null,"salutation":null,"name":"Vinot","gender":"MALE","mobileNumber":"9876543210","emailId":"abc@egov.com","altContactNumber":null,"pan":"","aadhaarNumber":null,"permanentAddress":"xxccc","permanentCity":null,"permanentPinCode":null,"correspondenceCity":null,"correspondencePinCode":null,"correspondenceAddress":"xxccc","active":true,"dob":1575504000000,"pwdExpiryDate":1542493260000,"locale":null,"type":"CITIZEN","signature":null,"accountLocked":false,"roles":[{"id":null,"name":"Citizen","code":"CITIZEN","tenantId":"pb"},{"id":null,"name":"FSM Desluding Operator","code":"FSM_DSO","tenantId":"pb"},{"id":null,"name":"FSM Driver","code":"FSM_DRIVER","tenantId":"pb"}],"fatherOrHusbandName":null,"relationship":"OTHER","bloodGroup":null,"identificationMark":null,"photo":null,"createdBy":"23299","createdDate":1533648094000,"lastModifiedBy":"28452","lastModifiedDate":1655290352000,"otpReference":null,"tenantId":"pb"},"ownerId":"1eaeae8e-e2cb-4736-b0da-2469441c7136","description":null,"licenseNumber":"34567899990","status":"ACTIVE","auditDetails":{"createdBy":"5674253d-9c2a-4d47-88ae-450f3fbbcad2","lastModifiedBy":"5674253d-9c2a-4d47-88ae-450f3fbbcad2","createdTime":1671536878567,"lastModifiedTime":1671536878567},"vendorDriverStatus":null},"RequestInfo":{"apiId":"Rainmaker","authToken":"5aac2f5f-086b-4770-a832-023641a62650","userInfo":{"id":28452,"uuid":"5674253d-9c2a-4d47-88ae-450f3fbbcad2","userName":"BPAFieldInspector","name":"lakshmi","mobileNumber":"8656565343","emailId":null,"locale":null,"type":"EMPLOYEE","roles":[{"name":"FSM Administrator","code":"FSM_ADMIN","tenantId":"pb.amritsar"},{"name":"BPA Services Approver","code":"BPA_APPROVER","tenantId":"pb.amritsar"},{"name":"Employee","code":"EMPLOYEE","tenantId":"pb.amritsar"},{"name":"FSM Employee Report Viewer","code":"FSM_REPORT_VIEWER","tenantId":"pb.amritsar"},{"name":"BPA Services verifier","code":"BPA_VERIFIER","tenantId":"pb.amritsar"},{"name":"BPA Field Inspector","code":"BPA_FIELD_INSPECTOR","tenantId":"pb.amritsar"},{"name":"BPAREG doc verifier","code":"BPAREG_DOC_VERIFIER","tenantId":"pb.amritsar"}],"active":true,"tenantId":"pb.amritsar","permanentCity":null},"msgId":"1671537564062|en_IN","plainAccessRequest":{}}}' \
--compressed
Integration
Integration Scope
Any system or DIGIT module can be integrated with the vendor service. It helps to manage the vendor with the vehicles, drivers, and owner for representatives, and login for the representative/owner to login into the system to carry our role-specific operations.
Integration Benefits
Validation of DSO/vendor availability.
Fetch the vehicle assigned to the DSO.
Fetch the drivers assigned to the DSO.
Steps to Integration
FSM to call vendor/v1/_search to fetch the DSOs.
FSM can call vendor/v1/_search to fetch the DSO’s and the respective vehicles and drivers.
Interaction Diagrams
Reference Docs
Doc Links
Workflow Technical Document
Localisation technical document
Persister technical document
SMS notification technical document
API List
/vendor/driver/v1/_create
/vendor/driver/v1/_update
/vendor/driver/v1/_search