FSM Service Configuration
Learn how to setup and configure FSM service

Overview

Faecal Sludge Management (FSM) is a system that enables a citizen to raise a request for septic tank cleaning with there ULB’s directly or by reaching out to the ULB counter. The Citizen can track the application, make a payment for the charges and rate the service. This document contains the details about how to set up the FSM services and describes the functionalities it provides.

Pre-requisites

Before you proceed with the configuration, make sure the following pre-requisites are met -
    Java 8
    Kafka server is up and running
    egov-persister service is running and has fsm-persister config path added in it
    PSQL server is running and a database is created to store FSM Application data
    (Optional) Indexer config for FSM is added in egov-indexer yaml paths to index the generated data. An index is required for data visualisation in kibana or in DSS.
    Following services should be up and running:
      egov-user
      egov-workflow-v2
      egov-perister
      egov-localization
      egov-notification-sms
      egov-mdms
      egov-idgen
      egov-url-shortening
      vehicle
      vendor
      fsm-calculator
      billing-service
      collection-services

Key Functionalities

    A Citizen can file, track and rate the application for cleaning septic tank
    ULB Employee can file an application for cleaning septic tank on behalf of Citizen
    ULB Employee can assign DSO to the given application with a possible service date
    DSO can accept or reject the application
    DSO or ULB Employee can Complete the FSM Application after cleaning the septic tank
    FSM Admin in ULB can cancel the application at any stage before completing the application
    ULB Employee or Admin can view the audit log of the given application

Deployment Details

    1.
    Deploy the latest version of FSM
    2.
    Add fsm-persister.yml file in config folder in git and add that path in persister . (The file path is to be added in environment yaml file in param called persist-yml-path )
    3.
    If an index is to be created add the indexer config path in indexer service. (The file path is to be added in environment yaml file in param called egov-indexer-yaml-repo-path)

Configuration Details

MDMS Configuration

Add master data in MDMS service with the module name as FSM. Following is some sample master data for Application Channel (Source).
1
{
2
"tenantId": "pb",
3
"moduleName": "FSM",
4
"ApplicationChannel": [
5
{
6
"name": "Telephone",
7
"code": "TELEPHONE",
8
"active": true,
9
"citizenOnly":false
10
},
11
{
12
"name": "Counter",
13
"code": "COUNTER",
14
"active": true,
15
"citizenOnly":false
16
},
17
{
18
"name": "Online",
19
"code": "ONLINE",
20
"active": true,
21
"citizenOnly":true
22
}
23
]
24
}
Copied!
Checklist (Checklist to be answered by a citizen while rating)
1
{
2
"tenantId": "pb",
3
"moduleName": "FSM",
4
"CheckList": [{
5
"code": "SPILAGE",
6
"active": true,
7
"required": true,
8
"type": "SINGLE_SELECT",
9
"options": [
10
"YES",
11
"NO",
12
"NA"
13
]
14
},
15
{
16
"code": "SAFETY_GEARS_USED",
17
"active": true,
18
"type": "MULTI_SELECT",
19
"required": true,
20
"options": [
21
"EYE_GEAR",
22
"HAND_GLOVES",
23
"NOSE_MASK"
24
]
25
}
26
]
27
}
Copied!
Config (Configuration at the application level)
1
{
2
"tenantId": "pb",
3
"moduleName": "FSM",
4
"Config": [
5
{
6
"code":"noOfTrips",
7
"override":false,
8
"default":1,
9
"active":true,
10
"description":"override:true indicates, noOfTrips poperty is allowed to override in FSM."
11
},
12
{
13
"code":"additionalDetails.tripAmount",
14
"override":false,
15
"active":true,
16
"description":"override:true indicates, tripAmount poperty is allowed to override in FSM."
17
},
18
{
19
"code":"slumName",
20
"override":true,
21
"active":true,
22
"description":"override:true indicates, tripAmount poperty is allowed to override in FSM."
23
},
24
{
25
"code":"ALLOW_MODIFY",
26
"WFState":"CREATED",
27
"override":[
28
"propertyUsage",
29
"vehicleType",
30
"sanitationtype",
31
"address.pincode",
32
"address.city",
33
"address.locality",
34
"address.street",
35
"address.doorNo",
36
"address.landmark",
37
"pitDetail"
38
],
39
"active":true,
40
"description":"properties in override allowed to modify when FSM application moving from CREATED Status to next status."
41
}
42
43
]
44
}
Copied!
FSTP Plant Info (FSTP information for each city)
1
{
2
"tenantId": "pb",
3
"moduleName": "FSM",
4
"FSTPPlantInfo": [
5
{
6
"PlantCode": "AMR001",
7
"PlantName": "Amritsar FSTP",
8
"active": true,
9
"PlantType":"FSTP",
10
"PlantLocation":"Amritsar",
11
"PlusCode":"JQ2R+7G Khapar Kheri, Punjab",
12
"PlantOperationalTimings":"10.00am-08.00pm",
13
"PlantOperationalCapacityKLD":"50",
14
"ULBS":"ppb.jalandhar,pb.amritsar"
15
},
16
{
17
"PlantCode": "MOH002",
18
"PlantName": "Mohali SeTPP",
19
"active": true,
20
"PlantType":"SeTP",
21
"PlantLocation":"Mohali",
22
"PlusCode":"MPFQ+V2 Sahibzada Ajit Singh Nagar, Punjab",
23
"PlantOperationalTimings":"10.00am-06.00pm",
24
"PlantOperationalCapacityKLD":"100",
25
"ULBS":"pb.mohali"
26
}
27
]
28
}
Copied!
Pit Type (Type of pit)
1
{
2
"tenantId": "pb",
3
"moduleName": "FSM",
4
"PitType": [
5
{
6
"name": "Conventional septic tank",
7
"code": "CONVENTIONAL_SPECTIC_TANK",
8
"active": true,
9
"dimension":"lbd"
10
},
11
{
12
"name": "Septic tank with soak pit",
13
"code": "SEPTIC_TANK_WITH_SOAK_PIT",
14
"active": true,
15
"dimension":"dd"
16
}
17
]
18
}
Copied!
Property Type
1
{
2
"tenantId": "pb",
3
"moduleName": "FSM",
4
"PropertyType": [
5
{
6
"name": "Residential",
7
"code": "RESIDENTIAL",
8
"active": true,
9
"minAmount":"100",
10
"maxAmount":"500"
11
},
12
{
13
"name": "Independent House",
14
"code": "RESIDENTIAL.INDEPENDENT_HOUSE",
15
"active": true,
16
"propertyType": "RESIDENTIAL",
17
"minAmount":"100",
18
"maxAmount":"300"
19
},
20
{
21
"name": "Apartment",
22
"code": "RESIDENTIAL.APARTMENT",
23
"active": true,
24
"propertyType": "RESIDENTIAL",
25
"minAmount":"400",
26
"maxAmount":"600"
27
},
28
{
29
"name": "Row Houses",
30
"code": "RESIDENTIAL.ROW_HOUSES",
31
"active": true,
32
"propertyType": "RESIDENTIAL",
33
"minAmount":"700",
34
"maxAmount":"900"
35
},
36
{
37
"name": "Commercial",
38
"code": "COMMERCIAL",
39
"active": true,
40
"minAmount":"2000",
41
"maxAmount":"5000"
42
},
43
{
44
"name": "Community Toilets",
45
"code": "COMMERCIAL.COMMUNITY_TOILETS",
46
"active": true,
47
"propertyType": "COMMERCIAL",
48
"minAmount":"1000",
49
"maxAmount":"1200"
50
},
51
{
52
"name": "Hotel",
53
"code": "COMMERCIAL.HOTEL",
54
"active": true,
55
"propertyType": "COMMERCIAL",
56
"minAmount":"1300",
57
"maxAmount":"1500"
58
},
59
{
60
"name": "Restaurant",
61
"code": "COMMERCIAL.RESTAURANT",
62
"active": true,
63
"propertyType": "COMMERCIAL",
64
"minAmount":"1600",
65
"maxAmount":"1800"
66
},
67
{
68
"name": "Shopping Mall",
69
"code": "COMMERCIAL.SHOPPING_MALL",
70
"active": true,
71
"propertyType": "COMMERCIAL",
72
"minAmount":"1900",
73
"maxAmount":"2100"
74
},
75
{
76
"name": "Community hall",
77
"code": "COMMERCIAL.COMMUNITY_HALL",
78
"active": true,
79
"propertyType": "COMMERCIAL",
80
"minAmount":"2200",
81
"maxAmount":"2500"
82
},
83
{
84
"name": "Bank",
85
"code": "COMMERCIAL.BANK",
86
"active": true,
87
"propertyType": "COMMERCIAL",
88
"minAmount":"2600",
89
"maxAmount":"2800"
90
},
91
{
92
"name": "Private office",
93
"code": "COMMERCIAL.PRIVATE_OFFICE",
94
"active": true,
95
"propertyType": "COMMERCIAL",
96
"minAmount":"2900",
97
"maxAmount":"3200"
98
},
99
{
100
"name": "Market",
101
"code": "COMMERCIAL.MARKET",
102
"active": true,
103
"propertyType": "COMMERCIAL",
104
"minAmount":"3300",
105
"maxAmount":"3500"
106
},
107
{
108
"name": "Hostel",
109
"code": "COMMERCIAL.HOSTEL",
110
"active": true,
111
"propertyType": "COMMERCIAL",
112
"minAmount":"3600",
113
"maxAmount":"3900"
114
},
115
{
116
"name": "Warehouse",
117
"code": "COMMERCIAL.WAREHOUSE",
118
"active": true,
119
"propertyType": "COMMERCIAL",
120
"minAmount":"400",
121
"maxAmount":"4200"
122
},
123
{
124
"name": "Petrol pumps",
125
"code": "COMMERCIAL.PETROL_PUMPS",
126
"active": true,
127
"propertyType": "COMMERCIAL",
128
"minAmount":"4300",
129
"maxAmount":"4500"
130
},
131
{
132
"name": "Resort",
133
"code": "COMMERCIAL.RESORT",
134
"active": true,
135
"propertyType": "COMMERCIAL",
136
"minAmount":"4600",
137
"maxAmount":"4800"
138
},
139
{
140
"name": "Theme park",
141
"code": "COMMERCIAL.THEME_PARK",
142
"active": true,
143
"propertyType": "COMMERCIAL",
144
"minAmount":"4900",
145
"maxAmount":"5100"
146
},
147
{
148
"name": "Sports center",
149
"code": "COMMERCIAL.SPORTS_CENTER",
150
"active": true,
151
"propertyType": "COMMERCIAL",
152
"minAmount":"5200",
153
"maxAmount":"5500"
154
},
155
{
156
"name": "Institutional",
157
"code": "INSTITUTIONAL",
158
"active": true,
159
"minAmount":"1000",
160
"maxAmount":"3000"
161
},
162
{
163
"name": "Temple",
164
"code": "INSTITUTIONAL.TEMPLE",
165
"active": true,
166
"propertyType": "INSTITUTIONAL",
167
"minAmount":"5600",
168
"maxAmount":"5900"
169
},
170
{
171
"name": "Mosque",
172
"code": "INSTITUTIONAL.MOSQUE",
173
"active": true,
174
"propertyType": "INSTITUTIONAL",
175
"minAmount":"6000",
176
"maxAmount":"6200"
177
},
178
{
179
"name": "Church",
180
"code": "INSTITUTIONAL.CHURCH",
181
"active": true,
182
"propertyType": "INSTITUTIONAL",
183
"minAmount":"6300",
184
"maxAmount":"6500"
185
},
186
{
187
"name": "Gurudwara",
188
"code": "INSTITUTIONAL.GURUDWARA",
189
"active": true,
190
"propertyType": "INSTITUTIONAL",
191
"minAmount":"6600",
192
"maxAmount":"6800"
193
},
194
{
195
"name": "Monastery",
196
"code": "INSTITUTIONAL.MONASTERY",
197
"active": true,
198
"propertyType": "INSTITUTIONAL",
199
"minAmount":"6900",
200
"maxAmount":"7200"
201
},
202
{
203
"name": "School",
204
"code": "INSTITUTIONAL.SCHOOL",
205
"active": true,
206
"propertyType": "INSTITUTIONAL",
207
"minAmount":"7300",
208
"maxAmount":"7500"
209
},
210
{
211
"name": "College",
212
"code": "INSTITUTIONAL.COLLEGE",
213
"active": true,
214
"propertyType": "INSTITUTIONAL",
215
"minAmount":"7600",
216
"maxAmount":"7900"
217
},
218
{
219
"name": "University",
220
"code": "INSTITUTIONAL.UNIVERSITY",
221
"active": true,
222
"propertyType": "INSTITUTIONAL",
223
"minAmount":"8000",
224
"maxAmount":"8200"
225
},
226
{
227
"name": "Anganwadi",
228
"code": "INSTITUTIONAL.ANGANWADI",
229
"active": true,
230
"propertyType": "INSTITUTIONAL",
231
"minAmount":"8300",
232
"maxAmount":"8500"
233
},
234
{
235
"name": "Training Institutes",
236
"code": "INSTITUTIONAL.TRAINING_INSTITUTES",
237
"active": true,
238
"propertyType": "INSTITUTIONAL",
239
"minAmount":"8600",
240
"maxAmount":"8800"
241
},
242
{
243
"name": "Hospital",
244
"code": "INSTITUTIONAL.HOSPITAL",
245
"active": true,
246
"propertyType": "INSTITUTIONAL",
247
"minAmount":"8900",
248
"maxAmount":"9200"
249
},
250
{
251
"name": "Nursing home",
252
"code": "INSTITUTIONAL.NURSING_HOME",
253
"active": true,
254
"propertyType": "INSTITUTIONAL",
255
"minAmount":"9300",
256
"maxAmount":"9500"
257
},
258
{
259
"name": "Community health center",
260
"code": "INSTITUTIONAL.COMMUNITY_HEALTH_CENTER",
261
"active": true,
262
"propertyType": "INSTITUTIONAL",
263
"minAmount":"9400",
264
"maxAmount":"9600"
265
},
266
{
267
"name": "Jail",
268
"code": "INSTITUTIONAL.JAIL",
269
"active": true,
270
"propertyType": "INSTITUTIONAL",
271
"minAmount":"9700",
272
"maxAmount":"1000"
273
},
274
{
275
"name": "Police station",
276
"code": "INSTITUTIONAL.POLICE_STATION",
277
"active": true,
278
"propertyType": "INSTITUTIONAL",
279
"minAmount":"10100",
280
"maxAmount":"10500"
281
}
282
283
]
284
}
Copied!
Slum (Slums mapped to the locality of the city)
1
{
2
"tenantId": "pb",
3
"moduleName": "FSM",
4
"Slum": [{
5
"code": "SL0001",
6
"active": true,
7
"name": "Kathagada juanga sahi",
8
"locality": "SUN20"
9
},
10
{
11
"code": "SL0002",
12
"active": true,
13
"name": "Kathagada Parbatia Sahi",
14
"locality": "SUN20"
15
},
16
{
17
"code": "SL0003",
18
"active": true,
19
"name": "Gangadhar Sahi",
20
"locality": "SUN35"
21
},
22
{
23
"code": "SL0004",
24
"active": true,
25
"name": "Pandab Nagar",
26
"locality": "SUN35"
27
},
28
{
29
"code": "SL0005",
30
"active": true,
31
"name": "Haridakhandi Harijana sahi",
32
"locality": "SUN35"
33
},
34
{
35
"code": "SL0006",
36
"active": true,
37
"name": "Haridakhandi Kadalibada Sahi",
38
"locality": "SUN55"
39
},
40
{
41
"code": "SL0007",
42
"active": true,
43
"name": "Haridakhandi Bada sahi",
44
"locality": "SUN55"
45
},
46
{
47
"code": "SL0008",
48
"active": true,
49
"name": "Haridakhandi Redika Sahi",
50
"locality": "SUN55"
51
},
52
{
53
"code": "SL0009",
54
"active": true,
55
"name": "Golapali Sahi",
56
"locality": "SUN18"
57
},
58
{
59
"code": "SL0010",
60
"active": true,
61
"name": "Surya Nagar",
62
"locality": "SUN18"
63
},
64
{
65
"code": "SL0011",
66
"active": true,
67
"name": "Damba Sahi",
68
"locality": "SUN18"
69
},
70
{
71
"code": "SL0012",
72
"active": true,
73
"name": "Raju Dhoba Sahi",
74
"locality": "SUN08"
75
}
76
]
77
}
Copied!

Business Service / Workflow Configuration

Create businessService (workflow configuration) using the __/businessservice/_create.
Following is the product configuration for FSM:
1
{
2
"RequestInfo": {
3
"apiId": "Rainmaker",
4
"action": "",
5
"did": 1,
6
"key": "",
7
"msgId": "20170310130900|en_IN",
8
"requesterId": "",
9
"ts": 1513579888683,
10
"ver": ".01",
11
"authToken": "{{devAuth}}",
12
"userInfo": {
13
"id": 73,
14
"userName": null,
15
"name": null,
16
"type": "EMPLOYEE",
17
"mobileNumber": null,
18
"emailId": null,
19
"roles": [
20
{
21
"id": 2,
22
"name": "Customer Support Representative",
23
"code": null,
24
"tenantId": null
25
}
26
],
27
"tenantId": null,
28
"uuid": "uuid"
29
}
30
},
31
"BusinessServices": [
32
{
33
"tenantId": "pb",
34
"businessService": "FSM",
35
"business": "fsm",
36
"businessServiceSla": 172800000,
37
"states": [
38
{
39
"tenantId": "pb",
40
"sla": null,
41
"state": null,
42
"applicationStatus": null,
43
"docUploadRequired": false,
44
"isStartState": true,
45
"isTerminateState": false,
46
"isStateUpdatable": true,
47
"actions": [
48
{
49
"tenantId": "pb",
50
"action": "APPLY",
51
"nextState": "PENDING_APPL_FEE_PAYMENT",
52
"roles": [
53
"FSM_CREATOR_EMP"
54
]
55
},
56
{
57
"tenantId": "pb",
58
"action": "CREATE",
59
"nextState": "CREATED",
60
"roles": [
61
"CITIZEN"
62
]
63
}
64
]
65
},
66
{
67
"tenantId": "pb",
68
"sla": null,
69
"state": "CREATED",
70
"applicationStatus": "CREATED",
71
"docUploadRequired": false,
72
"isStartState": false,
73
"isTerminateState": false,
74
"isStateUpdatable": true,
75
"actions": [
76
{
77
"tenantId": "pb",
78
"action": "REJECT",
79
"nextState": "REJECTED",
80
"roles": [
81
"FSM_ADMIN"
82
]
83
},
84
{
85
"tenantId": "pb",
86
"action": "SUBMIT",
87
"nextState": "PENDING_APPL_FEE_PAYMENT",
88
"roles": [
89
"FSM_EDITOR_EMP"
90
]
91
}
92
]
93
},
94
{
95
"tenantId": "pb",
96
"sla": null,
97
"state": "PENDING_APPL_FEE_PAYMENT",
98
"applicationStatus": "PENDING_APPL_FEE_PAYMENT",
99
"docUploadRequired": false,
100
"isStartState": false,
101
"isTerminateState": false,
102
"isStateUpdatable": true,
103
"actions": [
104
{
105
"tenantId": "pb",
106
"action": "REJECT",
107
"nextState": "REJECTED",
108
"roles": [
109
"FSM_ADMIN"
110
]
111
},
112
{
113
"tenantId": "pb",
114
"action": "SENDBACK",
115
"nextState": "CREATED",
116
"roles": [
117
"FSM_ADMIN"
118
]
119
},
120
{
121
"tenantId": "pb",
122
"action": "PAY",
123
"nextState": "ASSING_DSO",
124
"roles": [
125
"CITIZEN",
126
"FSM_COLLECTOR"
127
]
128
}
129
]
130
},
131
{
132
"tenantId": "pb",
133
"sla": null,
134
"state": "ASSING_DSO",
135
"applicationStatus": "ASSING_DSO",
136
"docUploadRequired": false,
137
"isStartState": false,
138
"isTerminateState": false,
139
"isStateUpdatable": true,
140
"actions": [
141
{
142
"tenantId": "pb",
143
"action": "SENDBACK",
144
"nextState": "PENDING_APPL_FEE_PAYMENT",
145
"roles": [
146
"FSM_ADMIN"
147
]
148
},
149
{
150
"tenantId": "pb",
151
"action": "CANCEL",
152
"nextState": "CANCELED",
153
"roles": [
154
"FSM_ADMIN"
155
]
156
},
157
{
158
"tenantId": "pb",
159
"action": "ASSIGN",
160
"nextState": "PENDING_DSO_APPROVAL",
161
"roles": [
162
"FSM_EDITOR_EMP"
163
]
164
}
165
]
166
},
167
{
168
"tenantId": "pb",
169
"sla": null,
170
"state": "DSO_REJECTED",
171
"applicationStatus": "DSO_REJECTED",
172
"docUploadRequired": false,
173
"isStartState": false,
174
"isTerminateState": false,
175
"isStateUpdatable": true,
176
"actions": [
177
{
178
"tenantId": "pb",
179
"currentState": "DSO_REJECTED",
180
"action": "CANCEL",
181
"nextState": "CANCELED",
182
"roles": [
183
"FSM_ADMIN"
184
]
185
},
186
{
187
"tenantId": "pb",
188
"currentState": "DSO_REJECTED",
189
"action": "REASSING",
190
"nextState": "PENDING_DSO_APPROVAL",
191
"roles": [
192
"FSM_EDITOR_EMP"
193
]
194
},
195
{
196
"tenantId": "pb",
197
"currentState": "DSO_REJECTED",
198
"action": "SENDBACK",
199
"nextState": "PENDING_DSO_APPROVAL",
200
"roles": [
201
"FSM_ADMIN"
202
]
203
}
204
]
205
},
206
{
207
"tenantId": "pb",
208
"sla": null,
209
"state": "DSO_INPROGRESS",
210
"applicationStatus": "DSO_INPROGRESS",
211
"docUploadRequired": false,
212
"isStartState": false,
213
"isTerminateState": false,
214
"isStateUpdatable": true,
215
"actions": [
216
{
217
"tenantId": "pb",
218
"currentState": "DSO_INPROGRESS",
219
"action": "SENDBACK",
220
"nextState": "PENDING_DSO_APPROVAL",
221
"roles": [
222
"FSM_ADMIN"
223
]
224
},
225
{
226
"tenantId": "pb",
227
"currentState": "DSO_INPROGRESS",
228
"action": "DECLINE",
229
"nextState": "ASSING_DSO",
230
"roles": [
231
"FSM_DSO",
232
"FSM_EDITOR_EMP"
233
]
234
},
235
{
236
"tenantId": "pb",
237
"currentState": "DSO_INPROGRESS",
238
"action": "COMPLETED",
239
"nextState": "CITIZEN_FEEDBACK_PENDING",
240
"roles": [
241
"FSM_DSO",
242
"FSM_EDITOR_EMP"
243
]
244
},
245
{
246
"tenantId": "pb",
247
"currentState": "DSO_INPROGRESS",
248
"action": "CANCEL",
249
"nextState": "CANCELED",
250
"roles": [
251
"FSM_ADMIN"
252
]
253
}
254
]
255
},
256
{
257
"tenantId": "pb",
258
"sla": null,
259
"state": "PENDING_DSO_APPROVAL",
260
"applicationStatus": "PENDING_DSO_APPROVAL",
261
"docUploadRequired": false,
262
"isStartState": false,
263
"isTerminateState": false,
264
"isStateUpdatable": true,
265
"actions": [
266
{
267
"tenantId": "pb",
268
"currentState": "PENDING_DSO_APPROVAL",
269
"action": "DSO_REJECT",
270
"nextState": "DSO_REJECTED",
271
"roles": [
272
"FSM_DSO"
273
]
274
},
275
{
276
"tenantId": "pb",
277
"currentState": "PENDING_DSO_APPROVAL",
278
"action": "DSO_ACCEPT",
279
"nextState": "DSO_INPROGRESS",
280
"roles": [
281
"FSM_DSO"
282
]
283
},
284
{
285
"tenantId": "pb",
286
"currentState": "PENDING_DSO_APPROVAL",
287
"action": "CANCEL",
288
"nextState": "CANCELED",
289
"roles": [
290
"FSM_ADMIN"
291
]
292
}
293
]
294
},
295
{
296
"tenantId": "pb",
297
"sla": null,
298
"state": "COMPLETED",
299
"applicationStatus": "COMPLETED",
300
"docUploadRequired": false,
301
"isStartState": false,
302
"isTerminateState": true,
303
"isStateUpdatable": false
304
},
305
{
306
"sla": null,
307
"state": "REJECTED",
308
"applicationStatus": "REJECTED",
309
"docUploadRequired": false,
310
"isStartState": false,
311
"isTerminateState": true,
312
"isStateUpdatable": false,
313
"actions": null
314
},
315
{
316
"tenantId": "pb",
317
"sla": null,
318
"state": "CANCELED",
319
"applicationStatus": "CANCELED",
320
"docUploadRequired": false,
321
"isStartState": false,
322
"isTerminateState": true,
323
"isStateUpdatable": false,
324
"actions": null
325
},
326
{
327
"tenantId": "pb",
328
"sla": null,
329
"state": "CITIZEN_FEEDBACK_PENDING",
330
"applicationStatus": "CITIZEN_FEEDBACK_PENDING",
331
"docUploadRequired": false,
332
"isStartState": false,
333
"isTerminateState": false,
334
"isStateUpdatable": false,
335
"actions": [
336
{
337
"tenantId": "pb",
338
"currentState": "CITIZEN_FEEDBACK_PENDING",
339
"action": "SUBMIT_FEEDBACK",
340
"nextState": "COMPLETED",
341
"roles": [
342
"CITIZEN"
343
]
344
}
345
]
346
}
347
]
348
}
349
]
350
}
Copied!

Localization Setup

Using /localization/messages/v1/_upsert , add localisation (templates) for notification messages to be sent.
Following are the product notification templates
1
{
2
"messages":[
3
{
4
"code": "FSM_SMS_CREATED_CREATE",
5
"message": "Dear Applicant,Your application for cleaning septic tank/pit is created with application reference no.<2>.You will be notified to make an application fee shortly.Request is expected to be completed within 24hrs of making the payment.",
6
"module": "rainmaker-common",
7
"locale": "en_IN"
8
},
9
{
10
"code": "FSM_SMS_PENDING_APPL_FEE_PAYMENT_SUBMIT",
11
"message": "Dear Applicant, Please pay the application fee Rs.<AMOUNT_TO_BE_PAID>/- for cleaning the septic tank/pit with request number <2>.Click this link <PAY_LINK> to make the payment.Request is expected to be completed within 24hrs of making the payment.",
12
"module": "rainmaker-common",
13
"locale": "en_IN"
14
},
15
{
16
"code": "FSM_SMS_PENDING_APPL_FEE_PAYMENT_APPLY",
17
"message": "Dear Applicant, Your application for cleaning septic tank /pit is created with application number <2>.Please click this link <PAY_LINK> to pay the application fee for processing the application.Request is expected to be completed within 24hrs of making the payment.",
18
"module": "rainmaker-common",
19
"locale": "en_IN"
20
},
21
{
22
"code": "FSM_SMS_ASSING_DSO_PAY",
23
"message": "Dear Applicant, Amount of Rs.<AMOUNT_TO_BE_PAID>/- is received towards the payment of cleaning septic tank /pit with reference no. <RECEIPT_NO>.You will be notified when an operator is assigned to a request. Please click this link <RECEIPT_LINK> to download the receipt",
24
"module": "rainmaker-common",
25
"locale": "en_IN"
26
},
27
{
28
"code": "FSM_SMS_DSO_INPROGRESS_DSO_ACCEPT",
29
"message": "Dear Applicant, Vehicle <VEHICLE_REG_NO> will be reaching your location to clean the septic tank/pit on <POSSIBLE_SERVICE_DATE> with reference to your application number <2>. You can contact the operator in +91 <DSO_MOBILE_NUMBER>.",
30
"module": "rainmaker-common",
31
"locale": "en_IN"
32
},
33
{
34
"code": "FSM_SMS_CITIZEN_FEEDBACK_PENDING_COMPLETED",
35
"message": "Dear Applicant, Your request for cleaning septic tank/pit is completed.Please take some time to rate us using the link <FSM_APPL_LINK>.",
36
"module": "rainmaker-common",
37
"locale": "en_IN"
38
},
39
{
40
"code": "FSM_SMS_REJECTED_REJECT",
41
"message": "Dear Applicant, Your request for cleaning the septic tank/pit is rejected with the reason <FSM_DSO_REJECT_REASON> . Please use this link <NEW_FSM_LINK> to create a new request if needed.",
42
"module": "rainmaker-common",
43
"locale": "en_IN"
44
},
45
{
46
"code": "FSM_SMS_CANCELED_CANCEL",
47
"message": "Dear Applicant, Your request for cleaning the septic tank/pit is cancelled with the reason <FSM_CANCEL_REASON> . Please use this link <NEW_FSM_LINK> to create a new request if needed.",
48
"module": "rainmaker-common",
49
"locale": "en_IN"
50
}
51
]
52
}
Copied!

Actions & Role Action Mapping

Add Role-Action mapping for the APIs in MDMS. Following are the required entries. They should be mapped to both CITIZEN and appropriate employee roles.
Action Configuration
1
{
2
"id": {{PLACEHOLDER1}},
3
"name": "Create FSM Application",
4
"url": "/fsm/v1/_create",
5
"displayName": "Apply FSM",
6
"orderNumber": 0,
7
"enabled": false,
8
"serviceCode": "FSM",
9
"code": "null",
10
"path": ""
11
},
12
{
13
"id": {{PLACEHOLDER2}},
14
"name": "Search FSM Application",
15
"url": "/fsm/v1/_search",
16
"displayName": "Search FSM Appliacations",
17
"orderNumber": 1,
18
"enabled": false,
19
"serviceCode": "FSM",
20
"code": "null",
21
"path": ""
22
},
23
{
24
"id": {{PLACEHOLDER3}},
25
"name": "Update FSM Application",
26
"url": "/fsm/v1/_update",
27
"displayName": "Update FSM",
28
"orderNumber": 0,
29
"enabled": false,
30
"serviceCode": "FSM",
31
"code": "null",
32
"path": ""
33
},
34
{
35
"id": {{PLACEHOLDER4}},
36
"name": "FSM Application Charge Payment Search",
37
"url": "/collection-services/payments/FSM.TRIP_CHARGES/_search",
38
"displayName": "FSM Application Charge Payment Search",
39
"orderNumber": 1,
40
"parentModule": "",
41
"enabled": false,
42
"serviceCode": "",
43
"code": "null",
44
"path": ""
45
},
46
{
47
"id": {{PLACEHOLDER5}},
48
"name": "FSM Application Audit Search",
49
"url": "/fsm/v1/_audit",
50
"displayName": "FSM Application Audit serach",
51
"orderNumber": 1,
52
"parentModule": "",
53
"enabled": false,
54
"serviceCode": "",
55
"code": "null",
56
"path": ""
57
},
Copied!
Role Action Mapping
1
[
2
{
3
"rolecode": "CITIZEN",
4
"actionid": "{{PLACEHOLDER1}}",
5
"actioncode": "",
6
"tenantId": "pb"
7
},
8
{
9
"rolecode": "FSM_CREATOR_EMP",
10
"actionid": "{{PLACEHOLDER1}}",
11
"actioncode": "",
12
"tenantId": "pb"
13
},
14
{
15
"rolecode": "CITIZEN",
16
"actionid": "{{PLACEHOLDER2}}",
17
"actioncode": "",
18
"tenantId": "pb"
19
},
20
{
21
"rolecode": "FSM_CREATOR_EMP",
22
"actionid": "{{PLACEHOLDER2}}",
23
"actioncode": "",
24
"tenantId": "pb"
25
},
26
{
27
"rolecode": "FSM_EDITOR_EMP",
28
"actionid": "{{PLACEHOLDER2}}",
29
"actioncode": "",
30
"tenantId": "pb"
31
},
32
{
33
"rolecode": "FSM_VIEW_EMP",
34
"actionid": "{{PLACEHOLDER2}}",
35
"actioncode": "",
36
"tenantId": "pb"
37
},
38
{
39
"rolecode": "FSM_ADMIN",
40
"actionid": "{{PLACEHOLDER2}}",
41
"actioncode": "",
42
"tenantId": "pb"
43
},
44
{
45
"rolecode": "FSM_DSO",
46
"actionid": "{{PLACEHOLDER2}}",
47
"actioncode": "",
48
"tenantId": "pb"
49
},
50
{
51
"rolecode": "FSM_DRIVER",
52
"actionid": "{{PLACEHOLDER2}}",
53
"actioncode": "",
54
"tenantId": "pb"
55
},
56
{
57
"rolecode": "FSM_EMP_FSTPO",
58
"actionid": "{{PLACEHOLDER2}}",
59
"actioncode": "",
60
"tenantId": "pb"
61
},
62
{
63
"rolecode": "FSM_COLLECTOR",
64
"actionid": "{{PLACEHOLDER2}}",
65
"actioncode": "",
66
"tenantId": "pb"
67
},
68
{
69
"rolecode": "FSM_EDITOR_EMP",
70
"actionid": "{{PLACEHOLDER3}}",
71
"actioncode": "",
72
"tenantId": "pb"
73
},
74
{
75
"rolecode": "FSM_ADMIN",
76
"actionid": "{{PLACEHOLDER3}}",
77
"actioncode": "",
78
"tenantId": "pb"
79
},
80
{
81
"rolecode": "FSM_DSO",
82
"actionid": "{{PLACEHOLDER3}}",
83
"actioncode": "",
84
"tenantId": "pb"
85
},
86
{
87
"rolecode": "FSM_DRIVER",
88
"actionid": "{{PLACEHOLDER3}}",
89
"actioncode": "",
90
"tenantId": "pb"
91
},
92
{
93
"rolecode": "CITIZEN",
94
"actionid": "{{PLACEHOLDER3}}",
95
"actioncode": "",
96
"tenantId": "pb"
97
},
98
{
99
"rolecode": "FSM_ADMIN",
100
"actionid": "{{PLACEHOLDER4}}",
101
"actioncode": "",
102
"tenantId": "pb"
103
},
104
{
105
"rolecode": "FSM_DSO",
106
"actionid": "{{PLACEHOLDER4}}",
107
"actioncode": "",
108
"tenantId": "pb"
109
},
110
{
111
"rolecode": "FSM_DRIVER",
112
"actionid": "{{PLACEHOLDER4}}",
113
"actioncode": "",
114
"tenantId": "pb"
115
},
116
{
117
"rolecode": "FSM_COLLECTOR",
118
"actionid": "{{PLACEHOLDER4}}",
119
"actioncode": "",
120
"tenantId": "pb"
121
},
122
{
123
"rolecode": "CITIZEN",
124
"actionid": "{{PLACEHOLDER4}}",
125
"actioncode": "",
126
"tenantId": "pb"
127
},
128
{
129
"rolecode": "FSM_EDITOR_EMP",
130
"actionid": "{{PLACEHOLDER4}}",
131
"actioncode": "",
132
"tenantId": "pb"
133
},
134
{
135
"rolecode": "FSM_VIEW_EMP",
136
"actionid": "{{PLACEHOLDER4}}",
137
"actioncode": "",
138
"tenantId": "pb"
139
},
140
{
141
"rolecode": "CITIZEN",
142
"actionid": "{{PLACEHOLDER5}}",
143
"actioncode": "",
144
"tenantId": "pb"
145
},
146
{
147
"rolecode": "FSM_CREATOR_EMP",
148
"actionid": "{{PLACEHOLDER5}}",
149
"actioncode": "",
150
"tenantId": "pb"
151
},
152
{
153
"rolecode": "FSM_EDITOR_EMP",
154
"actionid": "{{PLACEHOLDER5}}",
155
"actioncode": "",
156
"tenantId": "pb"
157
},
158
{
159
"rolecode": "FSM_VIEW_EMP",
160
"actionid": "{{PLACEHOLDER5}}",
161
"actioncode": "",
162
"tenantId": "pb"
163
},
164
{
165
"rolecode": "FSM_ADMIN",
166
"actionid": "{{PLACEHOLDER5}}",
167
"actioncode": "",
168
"tenantId": "pb"
169
},
170
{
171
"rolecode": "FSM_DSO",
172
"actionid": "{{PLACEHOLDER5}}",
173
"actioncode": "",
174
"tenantId": "pb"
175
},
176
{
177
"rolecode": "FSM_DRIVER",
178
"actionid": "{{PLACEHOLDER5}}",
179
"actioncode": "",
180
"tenantId": "pb"
181
},
182
{
183
"rolecode": "FSM_EMP_FSTPO",
184
"actionid": "{{PLACEHOLDER5}}",
185
"actioncode": "",
186
"tenantId": "pb"
187
},
188
{
189
"rolecode": "FSM_COLLECTOR",
190
"actionid": "{{PLACEHOLDER5}}",
191
"actioncode": "",
192
"tenantId": "pb"
193
}
194
]
Copied!
Infra Ops Configuration
Configurations that we can manage through values.yml fsm-calculator in infraops repo as follows values.yml for fms-calculator can be found here
Description
name in values.yml
Current Value
id-gen host, to generate the application number
EGOV_IDGEN_HOST
egov-idgen from egov-service-host
Kafka Consumer Group
SPRING_KAFKA_CONSUMER_GROUP_ID
egov-fsm-service
kafka topic to which service push data to save new fsm application
PERSISTER_SAVE_FSM_TOPIC
save-fsm-application
kafka topic to which service push data to save workflow status
PERSISTER_UPDATE_FSM_WORKFLOW_TOPIC
update-fsm-workflow-application
kafka topic to which service push data to update the existing fsm application
PERSISTER_UPDATE_FSM_TOPIC
update-fsm-application
mdms service host
EGOV_MDMS_HOST
egov-mdms-service from egov-service-host
billing-service host
EGOV_BILLINGSERVICE_HOST
billing-service from egov-service-host
fsm-calculator service host
EGOV_FSM_CALCULATOR_HOST
fsm-calculator from egov-service-host
workflow v2 service host
WORKFLOW_CONTEXT_PATH
egov-workflow-v2 from egov-service-host
ui host, to return send the url of new application in sms notification
EGOV_UI_APP_HOST
egov-services-fqdn-name from egov-service-host
vendor service host, to get DSO details
EGOV_VENDOR_HOST
vendor from egov-service-host
Vehicle service host, to get vehicle details and manage vehicleTrip
EGOV_VEHICLE_HOST
vehicle from egov-service-host
Collection service host, to get the payment details
EGOV_COLLECTION_SERVICE_HOST
collection-services from egov-service-host
localization service host, to get the locale data
EGOV_LOCALIZATION_HOST
egov-localization from egov-service-host
user service host, to get the locale data
EGOV_USER_HOST
egov-user from egov-service-host
pdf service host, to get the locale data
EGOV_PDF_HOST
pdf-service from egov-service-host
url shortening service host, to get the short url for the long once
EGOV_URL_SHORTNER_HOST
egov-url-shortening from egov-service-host
Sample values.yml
1
- name: EGOV_IDGEN_HOST
2
valueFrom:
3
configMapKeyRef:
4
name: egov-service-host
5
key: egov-idgen
6
- name: EGOV_MDMS_HOST
7
valueFrom:
8
configMapKeyRef:
9
name: egov-service-host
10
key: egov-mdms-service
11
- name: EGOV_URL_SHORTNER_HOST
12
valueFrom:
13
configMapKeyRef:
14
name: egov-service-host
15
key: egov-url-shortening
16
- name: EGOV_PDF_HOST
17
valueFrom:
18
configMapKeyRef:
19
name: egov-service-host
20
key: pdf-service
21
- name: EGOV_USER_HOST
22
valueFrom:
23
configMapKeyRef:
24
name: egov-service-host
25
key: egov-user
26
- name: EGOV_LOCATION_HOST
27
valueFrom:
28
configMapKeyRef:
29
name: egov-service-host
30
key: egov-location
31
- name: EGOV_LOCALIZATION_HOST
32
valueFrom: