@salesforce/afv-skills 1.49.0 → 1.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/package.json +1 -1
  2. package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +180 -0
  3. package/skills/field-service-data-capture-form-deployer-configure/examples/inventory-transfer-spec.json +135 -0
  4. package/skills/field-service-data-capture-form-deployer-configure/examples/sample-spec.json +140 -0
  5. package/skills/field-service-data-capture-form-deployer-configure/examples/sectioned-spec.json +64 -0
  6. package/skills/field-service-data-capture-form-deployer-configure/references/field-types.md +297 -0
  7. package/skills/field-service-data-capture-form-deployer-configure/references/flow-metadata-json.md +243 -0
  8. package/skills/field-service-data-capture-form-deployer-configure/references/post-screen-automation.md +127 -0
  9. package/skills/field-service-data-capture-form-designer-configure/SKILL.md +110 -0
  10. package/skills/field-service-data-capture-form-designer-configure/references/extraction-from-image.md +244 -0
  11. package/skills/field-service-data-capture-form-designer-configure/references/extraction-from-prompt.md +222 -0
  12. package/skills/field-service-data-capture-form-editor-configure/SKILL.md +134 -0
  13. package/skills/field-service-data-capture-reference-configure/SKILL.md +762 -0
  14. package/skills/field-service-data-capture-reference-configure/examples/DataCapture_Showcase.flow-meta.xml +2022 -0
  15. package/skills/field-service-data-capture-reference-configure/examples/Data_Capture_All_Components.flow-meta.xml +2170 -0
  16. package/skills/field-service-data-capture-reference-configure/examples/Repeater_with_prepopulation.flow-meta.xml +231 -0
  17. package/skills/field-service-foundation-setup-designer-get/SKILL.md +135 -0
  18. package/skills/field-service-mobile-branding-configure/SKILL.md +133 -0
  19. package/skills/field-service-mobile-branding-configure/examples/dark-blue-scheme.json +16 -0
  20. package/skills/field-service-mobile-branding-configure/examples/salesforce-default-scheme.json +16 -0
  21. package/skills/field-service-mobile-branding-configure/references/color-fields.md +66 -0
  22. package/skills/field-service-mobile-branding-configure/references/contrast-validation.md +55 -0
  23. package/skills/field-service-mobile-branding-configure/references/derivation-methodology.md +83 -0
  24. package/skills/field-service-objective-designer-configure/SKILL.md +342 -0
  25. package/skills/field-service-prework-brief-deployer-configure/SKILL.md +83 -0
  26. package/skills/field-service-scheduling-policy-designer-query/SKILL.md +121 -0
  27. package/skills/field-service-setup-orchestrator-get/SKILL.md +48 -0
  28. package/skills/field-service-sobject-create-configure/SKILL.md +56 -0
  29. package/skills/field-service-voice-to-form-configure/SKILL.md +650 -0
  30. package/skills/field-service-work-rule-designer-configure/SKILL.md +303 -0
@@ -0,0 +1,2022 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Flow xmlns="http://soap.sforce.com/2006/04/metadata">
3
+ <areMetricsLoggedToDataCloud>false</areMetricsLoggedToDataCloud>
4
+ <description>Showcase of every Data Capture screen component — themed as a Field Service Site Visit Report.</description>
5
+ <environments>Offline</environments>
6
+ <interviewLabel>Data Capture Showcase {!$Flow.CurrentDateTime}</interviewLabel>
7
+ <label>Data Capture Showcase</label>
8
+ <processMetadataValues>
9
+ <name>BuilderType</name>
10
+ <value><stringValue>LightningFlowBuilder</stringValue></value>
11
+ </processMetadataValues>
12
+ <processMetadataValues>
13
+ <name>CanvasMode</name>
14
+ <value><stringValue>AUTO_LAYOUT_CANVAS</stringValue></value>
15
+ </processMetadataValues>
16
+ <processType>DataCaptureFlow</processType>
17
+
18
+ <!-- ══════════════════════════════════════════════════════════
19
+ CHOICES
20
+ ══════════════════════════════════════════════════════════ -->
21
+
22
+ <!-- Mode: New vs Continue -->
23
+ <choices>
24
+ <name>Mode_New</name>
25
+ <choiceText>✨ Start a New Form</choiceText>
26
+ <dataType>String</dataType>
27
+ <value><stringValue>New</stringValue></value>
28
+ </choices>
29
+ <choices>
30
+ <name>Mode_Continue</name>
31
+ <choiceText>📂 Continue an Existing Form</choiceText>
32
+ <dataType>String</dataType>
33
+ <value><stringValue>Continue</stringValue></value>
34
+ </choices>
35
+
36
+ <!-- Priority (Radio Buttons) -->
37
+ <choices>
38
+ <name>Priority_High</name>
39
+ <choiceText>🔴 High — Safety risk, immediate action required</choiceText>
40
+ <dataType>String</dataType>
41
+ <value><stringValue>High</stringValue></value>
42
+ </choices>
43
+ <choices>
44
+ <name>Priority_Medium</name>
45
+ <choiceText>🟡 Medium — Repair within 48 hours</choiceText>
46
+ <dataType>String</dataType>
47
+ <value><stringValue>Medium</stringValue></value>
48
+ </choices>
49
+ <choices>
50
+ <name>Priority_Low</name>
51
+ <choiceText>🟢 Low — Scheduled maintenance</choiceText>
52
+ <dataType>String</dataType>
53
+ <value><stringValue>Low</stringValue></value>
54
+ </choices>
55
+
56
+ <!-- Visit Status (Compact Picklist) -->
57
+ <choices>
58
+ <name>Status_InProgress</name>
59
+ <choiceText>In Progress</choiceText>
60
+ <dataType>String</dataType>
61
+ <value><stringValue>In Progress</stringValue></value>
62
+ </choices>
63
+ <choices>
64
+ <name>Status_OnHold</name>
65
+ <choiceText>On Hold</choiceText>
66
+ <dataType>String</dataType>
67
+ <value><stringValue>On Hold</stringValue></value>
68
+ </choices>
69
+ <choices>
70
+ <name>Status_Completed</name>
71
+ <choiceText>Completed</choiceText>
72
+ <dataType>String</dataType>
73
+ <value><stringValue>Completed</stringValue></value>
74
+ </choices>
75
+ <choices>
76
+ <name>Status_FollowUp</name>
77
+ <choiceText>Follow-Up</choiceText>
78
+ <dataType>String</dataType>
79
+ <value><stringValue>Follow-Up Needed</stringValue></value>
80
+ </choices>
81
+
82
+ <!-- Issue Type (Picklist Single) -->
83
+ <choices>
84
+ <name>Issue_Electrical</name>
85
+ <choiceText>⚡ Electrical Fault</choiceText>
86
+ <dataType>String</dataType>
87
+ <value><stringValue>Electrical</stringValue></value>
88
+ </choices>
89
+ <choices>
90
+ <name>Issue_Mechanical</name>
91
+ <choiceText>⚙️ Mechanical Failure</choiceText>
92
+ <dataType>String</dataType>
93
+ <value><stringValue>Mechanical</stringValue></value>
94
+ </choices>
95
+ <choices>
96
+ <name>Issue_Plumbing</name>
97
+ <choiceText>🔧 Plumbing / HVAC</choiceText>
98
+ <dataType>String</dataType>
99
+ <value><stringValue>Plumbing/HVAC</stringValue></value>
100
+ </choices>
101
+ <choices>
102
+ <name>Issue_Structural</name>
103
+ <choiceText>🏗️ Structural Damage</choiceText>
104
+ <dataType>String</dataType>
105
+ <value><stringValue>Structural</stringValue></value>
106
+ </choices>
107
+ <choices>
108
+ <name>Issue_Safety</name>
109
+ <choiceText>⚠️ Safety Hazard</choiceText>
110
+ <dataType>String</dataType>
111
+ <value><stringValue>Safety</stringValue></value>
112
+ </choices>
113
+ <choices>
114
+ <name>Issue_Cosmetic</name>
115
+ <choiceText>🎨 Cosmetic / Aesthetic</choiceText>
116
+ <dataType>String</dataType>
117
+ <value><stringValue>Cosmetic</stringValue></value>
118
+ </choices>
119
+ <choices>
120
+ <name>Issue_Preventive</name>
121
+ <choiceText>🛡️ Preventive Maintenance</choiceText>
122
+ <dataType>String</dataType>
123
+ <value><stringValue>Preventive</stringValue></value>
124
+ </choices>
125
+ <choices>
126
+ <name>Issue_Other</name>
127
+ <choiceText>📋 Other</choiceText>
128
+ <dataType>String</dataType>
129
+ <value><stringValue>Other</stringValue></value>
130
+ </choices>
131
+
132
+ <!-- Affected Areas (Picklist Multiple) -->
133
+ <choices>
134
+ <name>Area_Reception</name>
135
+ <choiceText>Reception / Lobby</choiceText>
136
+ <dataType>String</dataType>
137
+ <value><stringValue>Reception</stringValue></value>
138
+ </choices>
139
+ <choices>
140
+ <name>Area_Server</name>
141
+ <choiceText>Server Room</choiceText>
142
+ <dataType>String</dataType>
143
+ <value><stringValue>Server Room</stringValue></value>
144
+ </choices>
145
+ <choices>
146
+ <name>Area_Offices</name>
147
+ <choiceText>Open Office Area</choiceText>
148
+ <dataType>String</dataType>
149
+ <value><stringValue>Offices</stringValue></value>
150
+ </choices>
151
+ <choices>
152
+ <name>Area_Restrooms</name>
153
+ <choiceText>Restrooms</choiceText>
154
+ <dataType>String</dataType>
155
+ <value><stringValue>Restrooms</stringValue></value>
156
+ </choices>
157
+ <choices>
158
+ <name>Area_Parking</name>
159
+ <choiceText>Parking / Exterior</choiceText>
160
+ <dataType>String</dataType>
161
+ <value><stringValue>Parking</stringValue></value>
162
+ </choices>
163
+ <choices>
164
+ <name>Area_Roof</name>
165
+ <choiceText>Roof / Plant Room</choiceText>
166
+ <dataType>String</dataType>
167
+ <value><stringValue>Roof</stringValue></value>
168
+ </choices>
169
+ <choices>
170
+ <name>Area_Basement</name>
171
+ <choiceText>Basement / Utilities</choiceText>
172
+ <dataType>String</dataType>
173
+ <value><stringValue>Basement</stringValue></value>
174
+ </choices>
175
+ <choices>
176
+ <name>Area_Kitchen</name>
177
+ <choiceText>Kitchen / Break Room</choiceText>
178
+ <dataType>String</dataType>
179
+ <value><stringValue>Kitchen</stringValue></value>
180
+ </choices>
181
+ <choices>
182
+ <name>Area_Boardroom</name>
183
+ <choiceText>Boardroom / Meeting Rooms</choiceText>
184
+ <dataType>String</dataType>
185
+ <value><stringValue>Boardroom</stringValue></value>
186
+ </choices>
187
+ <choices>
188
+ <name>Area_Warehouse</name>
189
+ <choiceText>Warehouse / Loading Bay</choiceText>
190
+ <dataType>String</dataType>
191
+ <value><stringValue>Warehouse</stringValue></value>
192
+ </choices>
193
+ <choices>
194
+ <name>Area_Other</name>
195
+ <choiceText>Other</choiceText>
196
+ <dataType>String</dataType>
197
+ <value><stringValue>Other</stringValue></value>
198
+ </choices>
199
+
200
+ <!-- Safety Equipment (Checkbox Group) -->
201
+ <choices>
202
+ <name>Safety_Helmet</name>
203
+ <choiceText>⛑️ Hard Hat</choiceText>
204
+ <dataType>String</dataType>
205
+ <value><stringValue>Helmet</stringValue></value>
206
+ </choices>
207
+ <choices>
208
+ <name>Safety_Gloves</name>
209
+ <choiceText>🧤 Gloves</choiceText>
210
+ <dataType>String</dataType>
211
+ <value><stringValue>Gloves</stringValue></value>
212
+ </choices>
213
+ <choices>
214
+ <name>Safety_Vest</name>
215
+ <choiceText>🦺 Hi-Vis Vest</choiceText>
216
+ <dataType>String</dataType>
217
+ <value><stringValue>Vest</stringValue></value>
218
+ </choices>
219
+ <choices>
220
+ <name>Safety_Harness</name>
221
+ <choiceText>🪢 Safety Harness</choiceText>
222
+ <dataType>String</dataType>
223
+ <value><stringValue>Harness</stringValue></value>
224
+ </choices>
225
+ <choices>
226
+ <name>Safety_Boots</name>
227
+ <choiceText>🥾 Steel-Toe Boots</choiceText>
228
+ <dataType>String</dataType>
229
+ <value><stringValue>Boots</stringValue></value>
230
+ </choices>
231
+ <choices>
232
+ <name>Safety_Goggles</name>
233
+ <choiceText>🥽 Safety Goggles</choiceText>
234
+ <dataType>String</dataType>
235
+ <value><stringValue>Goggles</stringValue></value>
236
+ </choices>
237
+
238
+ <!-- Condition rating (Matrix columns) -->
239
+ <choices>
240
+ <name>Cond_Good</name>
241
+ <choiceText>Good</choiceText>
242
+ <dataType>String</dataType>
243
+ <value><stringValue>Good</stringValue></value>
244
+ </choices>
245
+ <choices>
246
+ <name>Cond_Fair</name>
247
+ <choiceText>Fair</choiceText>
248
+ <dataType>String</dataType>
249
+ <value><stringValue>Fair</stringValue></value>
250
+ </choices>
251
+ <choices>
252
+ <name>Cond_Poor</name>
253
+ <choiceText>Poor</choiceText>
254
+ <dataType>String</dataType>
255
+ <value><stringValue>Poor</stringValue></value>
256
+ </choices>
257
+
258
+ <!-- Part availability (Compact Picklist in 2-col layout) -->
259
+ <choices>
260
+ <name>Parts_InStock</name>
261
+ <choiceText>In Stock</choiceText>
262
+ <dataType>String</dataType>
263
+ <value><stringValue>In Stock</stringValue></value>
264
+ </choices>
265
+ <choices>
266
+ <name>Parts_OrderRequired</name>
267
+ <choiceText>Order Required</choiceText>
268
+ <dataType>String</dataType>
269
+ <value><stringValue>Order Required</stringValue></value>
270
+ </choices>
271
+ <choices>
272
+ <name>Parts_NA</name>
273
+ <choiceText>N/A</choiceText>
274
+ <dataType>String</dataType>
275
+ <value><stringValue>N/A</stringValue></value>
276
+ </choices>
277
+
278
+ <!-- ══════════════════════════════════════════════════════════
279
+ SCREENS
280
+ ══════════════════════════════════════════════════════════ -->
281
+
282
+ <!-- ── Screen 0: Choose Mode (intro) ─────────────────────────
283
+ Radio: New vs Continue. Lookup: existing CustomForm__c.
284
+ ──────────────────────────────────────────────────────────── -->
285
+ <screens>
286
+ <name>Screen_ChooseMode</name>
287
+ <label>Start</label>
288
+ <locationX>0</locationX>
289
+ <locationY>0</locationY>
290
+ <allowBack>false</allowBack>
291
+ <allowFinish>true</allowFinish>
292
+ <allowPause>false</allowPause>
293
+ <connector>
294
+ <targetReference>Decision_Mode</targetReference>
295
+ </connector>
296
+ <fields>
297
+ <name>Hdr_ChooseMode_Hero</name>
298
+ <fieldText>&lt;div style="background: linear-gradient(135deg, #2E844A 0%, #0176D3 100%); color: white; padding: 20px; border-radius: 10px; margin: 0 0 12px 0; text-align: center; box-shadow: 0 2px 6px rgba(0,0,0,0.15);"&gt;&lt;p style="margin: 0; font-size: 22px;"&gt;&lt;strong&gt;🔧 Site Visit Report&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin: 4px 0 0 0; font-size: 13px; opacity: 0.92;"&gt;Field Service Mobile · Data Capture Showcase&lt;/p&gt;&lt;/div&gt;</fieldText>
299
+ <fieldType>DisplayText</fieldType>
300
+ <styleProperties>
301
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
302
+ <width><stringValue>12</stringValue></width>
303
+ </styleProperties>
304
+ </fields>
305
+ <fields>
306
+ <name>Hdr_ChooseMode</name>
307
+ <fieldText>&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Pick up where you left off, or start a fresh report.&lt;/p&gt;</fieldText>
308
+ <fieldType>DisplayText</fieldType>
309
+ <styleProperties>
310
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
311
+ <width><stringValue>12</stringValue></width>
312
+ </styleProperties>
313
+ </fields>
314
+ <fields>
315
+ <name>Input_ModeChoice</name>
316
+ <choiceReferences>Mode_New</choiceReferences>
317
+ <choiceReferences>Mode_Continue</choiceReferences>
318
+ <defaultValue><stringValue>New</stringValue></defaultValue>
319
+ <extensionName>runtime_service_fieldservice:dcRbGroup</extensionName>
320
+ <fieldText>What would you like to do?</fieldText>
321
+ <fieldType>ComponentChoice</fieldType>
322
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
323
+ <isRequired>true</isRequired>
324
+ <storeOutputAutomatically>true</storeOutputAutomatically>
325
+ <styleProperties>
326
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
327
+ <width><stringValue>12</stringValue></width>
328
+ </styleProperties>
329
+ </fields>
330
+ <fields>
331
+ <name>Input_ExistingForm</name>
332
+ <extensionName>runtime_service_fieldservice:dcLookup</extensionName>
333
+ <fieldType>ComponentInstance</fieldType>
334
+ <inputParameters>
335
+ <name>label</name>
336
+ <value><stringValue>Which form to continue?</stringValue></value>
337
+ </inputParameters>
338
+ <inputParameters>
339
+ <name>objectApiName</name>
340
+ <value><stringValue>CustomForm__c</stringValue></value>
341
+ </inputParameters>
342
+ <inputParameters>
343
+ <name>searchedFields</name>
344
+ <value><stringValue>Name, SiteName__c</stringValue></value>
345
+ </inputParameters>
346
+ <inputParameters>
347
+ <name>isMultiSelection</name>
348
+ <value><booleanValue>false</booleanValue></value>
349
+ </inputParameters>
350
+ <inputParameters>
351
+ <name>isRequired</name>
352
+ <value><booleanValue>false</booleanValue></value>
353
+ </inputParameters>
354
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
355
+ <isRequired>false</isRequired>
356
+ <storeOutputAutomatically>true</storeOutputAutomatically>
357
+ <styleProperties>
358
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
359
+ <width><stringValue>12</stringValue></width>
360
+ </styleProperties>
361
+ <visibilityRule>
362
+ <conditionLogic>and</conditionLogic>
363
+ <conditions>
364
+ <leftValueReference>Input_ModeChoice.selectedChoiceValues</leftValueReference>
365
+ <operator>EqualTo</operator>
366
+ <rightValue><stringValue>Continue</stringValue></rightValue>
367
+ </conditions>
368
+ </visibilityRule>
369
+ </fields>
370
+ <fields>
371
+ <name>Callout_ContinueHint</name>
372
+ <fieldText>&lt;div style="background-color: #EAF5FE; border-left: 4px solid #0176D3; padding: 10px 14px; margin: 6px 0 0 0; border-radius: 4px;"&gt;&lt;p style="margin: 0; color: #014486; font-size: 13px;"&gt;&lt;b&gt;ℹ️ Tip:&lt;/b&gt; Continuing an existing form loads the last saved values so you can make edits without retyping.&lt;/p&gt;&lt;/div&gt;</fieldText>
373
+ <fieldType>DisplayText</fieldType>
374
+ <styleProperties>
375
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
376
+ <width><stringValue>12</stringValue></width>
377
+ </styleProperties>
378
+ <visibilityRule>
379
+ <conditionLogic>and</conditionLogic>
380
+ <conditions>
381
+ <leftValueReference>Input_ModeChoice.selectedChoiceValues</leftValueReference>
382
+ <operator>EqualTo</operator>
383
+ <rightValue><stringValue>Continue</stringValue></rightValue>
384
+ </conditions>
385
+ </visibilityRule>
386
+ </fields>
387
+ <nextOrFinishButtonLabel>Continue</nextOrFinishButtonLabel>
388
+ <showFooter>true</showFooter>
389
+ <showHeader>false</showHeader>
390
+ </screens>
391
+
392
+ <!-- ── Screen 1: Site & Contact ──────────────────────────────
393
+ Short Text · Email · Phone · Numeric · Name · Address
394
+ ──────────────────────────────────────────────────────────── -->
395
+ <screens>
396
+ <name>Screen_SiteContact</name>
397
+ <label>Site and Contact</label>
398
+ <locationX>0</locationX>
399
+ <locationY>0</locationY>
400
+ <allowBack>false</allowBack>
401
+ <allowFinish>true</allowFinish>
402
+ <allowPause>false</allowPause>
403
+ <connector>
404
+ <targetReference>Screen_SchedulingStatus</targetReference>
405
+ </connector>
406
+ <fields>
407
+ <name>Hdr_SiteContact</name>
408
+ <fieldText>&lt;p&gt;&lt;b&gt;Step 1 of 6 – 📍 Site &amp;amp; Contact Details&lt;/b&gt;&lt;/p&gt;&lt;div style="width: 100%; height: 8px; background-color: #C9C7C5; border-radius: 4px; margin: 5px 0 12px 0;"&gt;&lt;div style="width: 17%; height: 100%; background: linear-gradient(90deg, #2E844A 0%, #0176D3 100%); border-radius: 4px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Components on this screen: &lt;em&gt;Short Text · Email · Phone · Numeric · Name · Address&lt;/em&gt;&lt;/p&gt;</fieldText>
409
+ <fieldType>DisplayText</fieldType>
410
+ <styleProperties>
411
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
412
+ <width><stringValue>12</stringValue></width>
413
+ </styleProperties>
414
+ </fields>
415
+ <fields>
416
+ <name>Input_SiteName</name>
417
+ <extensionName>runtime_service_fieldservice:dcTextInput</extensionName>
418
+ <fieldType>ComponentInstance</fieldType>
419
+ <inputParameters>
420
+ <name>label</name>
421
+ <value><stringValue>Site Name · Short Text</stringValue></value>
422
+ </inputParameters>
423
+ <inputParameters>
424
+ <name>value</name>
425
+ <value><elementReference>v_SiteName</elementReference></value>
426
+ </inputParameters>
427
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
428
+ <isRequired>true</isRequired>
429
+ <storeOutputAutomatically>true</storeOutputAutomatically>
430
+ <styleProperties>
431
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
432
+ <width><stringValue>12</stringValue></width>
433
+ </styleProperties>
434
+ </fields>
435
+ <fields>
436
+ <name>Input_ContactEmail</name>
437
+ <extensionName>runtime_service_fieldservice:dcEmail</extensionName>
438
+ <fieldType>ComponentInstance</fieldType>
439
+ <inputParameters>
440
+ <name>label</name>
441
+ <value><stringValue>Site Contact Email · Email</stringValue></value>
442
+ </inputParameters>
443
+ <inputParameters>
444
+ <name>value</name>
445
+ <value><elementReference>v_ContactEmail</elementReference></value>
446
+ </inputParameters>
447
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
448
+ <isRequired>false</isRequired>
449
+ <storeOutputAutomatically>true</storeOutputAutomatically>
450
+ <styleProperties>
451
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
452
+ <width><stringValue>12</stringValue></width>
453
+ </styleProperties>
454
+ </fields>
455
+ <fields>
456
+ <name>Input_ContactPhone</name>
457
+ <extensionName>runtime_service_fieldservice:dcPhone</extensionName>
458
+ <fieldType>ComponentInstance</fieldType>
459
+ <inputParameters>
460
+ <name>label</name>
461
+ <value><stringValue>Site Contact Phone · Phone</stringValue></value>
462
+ </inputParameters>
463
+ <inputParameters>
464
+ <name>value</name>
465
+ <value><elementReference>v_ContactPhone</elementReference></value>
466
+ </inputParameters>
467
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
468
+ <isRequired>false</isRequired>
469
+ <storeOutputAutomatically>true</storeOutputAutomatically>
470
+ <styleProperties>
471
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
472
+ <width><stringValue>12</stringValue></width>
473
+ </styleProperties>
474
+ </fields>
475
+ <fields>
476
+ <name>Input_FloorCount</name>
477
+ <extensionName>runtime_service_fieldservice:dcNumeric</extensionName>
478
+ <fieldType>ComponentInstance</fieldType>
479
+ <inputParameters>
480
+ <name>label</name>
481
+ <value><stringValue>Number of Floors · Numeric</stringValue></value>
482
+ </inputParameters>
483
+ <inputParameters>
484
+ <name>value</name>
485
+ <value><elementReference>v_FloorCount</elementReference></value>
486
+ </inputParameters>
487
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
488
+ <isRequired>true</isRequired>
489
+ <storeOutputAutomatically>true</storeOutputAutomatically>
490
+ <styleProperties>
491
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
492
+ <width><stringValue>12</stringValue></width>
493
+ </styleProperties>
494
+ </fields>
495
+ <fields>
496
+ <name>Input_ContactName</name>
497
+ <extensionName>runtime_service_fieldservice:dcName</extensionName>
498
+ <fieldType>ComponentInstance</fieldType>
499
+ <inputParameters>
500
+ <name>label</name>
501
+ <value><stringValue>On-Site Contact · Name</stringValue></value>
502
+ </inputParameters>
503
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
504
+ <isRequired>false</isRequired>
505
+ <storeOutputAutomatically>true</storeOutputAutomatically>
506
+ <styleProperties>
507
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
508
+ <width><stringValue>12</stringValue></width>
509
+ </styleProperties>
510
+ </fields>
511
+ <fields>
512
+ <name>Input_SiteAddress</name>
513
+ <extensionName>runtime_service_fieldservice:dcAddress</extensionName>
514
+ <fieldType>ComponentInstance</fieldType>
515
+ <inputParameters>
516
+ <name>label</name>
517
+ <value><stringValue>Site Address · Address</stringValue></value>
518
+ </inputParameters>
519
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
520
+ <isRequired>false</isRequired>
521
+ <storeOutputAutomatically>true</storeOutputAutomatically>
522
+ <styleProperties>
523
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
524
+ <width><stringValue>12</stringValue></width>
525
+ </styleProperties>
526
+ </fields>
527
+ <nextOrFinishButtonLabel>Continue</nextOrFinishButtonLabel>
528
+ <showFooter>true</showFooter>
529
+ <showHeader>false</showHeader>
530
+ </screens>
531
+
532
+ <!-- ── Screen 2: Scheduling & Status ─────────────────────────
533
+ Date · DateTime · Checkbox · Counter · Radio · Compact Picklist
534
+ ──────────────────────────────────────────────────────────── -->
535
+ <screens>
536
+ <name>Screen_SchedulingStatus</name>
537
+ <label>Scheduling and Status</label>
538
+ <locationX>0</locationX>
539
+ <locationY>0</locationY>
540
+ <allowBack>true</allowBack>
541
+ <allowFinish>true</allowFinish>
542
+ <allowPause>false</allowPause>
543
+ <connector>
544
+ <targetReference>Screen_Assessment</targetReference>
545
+ </connector>
546
+ <fields>
547
+ <name>Hdr_Scheduling</name>
548
+ <fieldText>&lt;p&gt;&lt;b&gt;Step 2 of 6 – 🗓️ Scheduling &amp;amp; Status&lt;/b&gt;&lt;/p&gt;&lt;div style="width: 100%; height: 8px; background-color: #C9C7C5; border-radius: 4px; margin: 5px 0 12px 0;"&gt;&lt;div style="width: 33%; height: 100%; background: linear-gradient(90deg, #2E844A 0%, #0176D3 100%); border-radius: 4px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Components: &lt;em&gt;Date · Date &amp;amp; Time · Checkbox · Toggle · Counter · Radio Buttons · Compact Picklist&lt;/em&gt;&lt;/p&gt;</fieldText>
549
+ <fieldType>DisplayText</fieldType>
550
+ <styleProperties>
551
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
552
+ <width><stringValue>12</stringValue></width>
553
+ </styleProperties>
554
+ </fields>
555
+ <fields>
556
+ <name>Input_VisitDate</name>
557
+ <extensionName>runtime_service_fieldservice:dcDate</extensionName>
558
+ <fieldType>ComponentInstance</fieldType>
559
+ <inputParameters>
560
+ <name>label</name>
561
+ <value><stringValue>Visit Date · Date</stringValue></value>
562
+ </inputParameters>
563
+ <inputParameters>
564
+ <name>value</name>
565
+ <value><elementReference>v_VisitDate</elementReference></value>
566
+ </inputParameters>
567
+ <inputParameters>
568
+ <name>maxDate</name>
569
+ <value><dateValue>2027-12-31</dateValue></value>
570
+ </inputParameters>
571
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
572
+ <isRequired>true</isRequired>
573
+ <storeOutputAutomatically>true</storeOutputAutomatically>
574
+ <styleProperties>
575
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
576
+ <width><stringValue>12</stringValue></width>
577
+ </styleProperties>
578
+ </fields>
579
+ <fields>
580
+ <name>Input_AppointmentTime</name>
581
+ <extensionName>runtime_service_fieldservice:dcDateTime</extensionName>
582
+ <fieldType>ComponentInstance</fieldType>
583
+ <inputParameters>
584
+ <name>label</name>
585
+ <value><stringValue>Appointment Date &amp; Time · Date &amp; Time</stringValue></value>
586
+ </inputParameters>
587
+ <inputParameters>
588
+ <name>value</name>
589
+ <value><elementReference>v_AppointmentTime</elementReference></value>
590
+ </inputParameters>
591
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
592
+ <isRequired>true</isRequired>
593
+ <storeOutputAutomatically>true</storeOutputAutomatically>
594
+ <styleProperties>
595
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
596
+ <width><stringValue>12</stringValue></width>
597
+ </styleProperties>
598
+ </fields>
599
+ <fields>
600
+ <name>Input_IsEmergency</name>
601
+ <extensionName>runtime_service_fieldservice:dcCheckbox</extensionName>
602
+ <fieldType>ComponentInstance</fieldType>
603
+ <inputParameters>
604
+ <name>label</name>
605
+ <value><stringValue>⚠️ Emergency callout — escalate immediately · Checkbox</stringValue></value>
606
+ </inputParameters>
607
+ <inputParameters>
608
+ <name>value</name>
609
+ <value><elementReference>v_IsEmergency</elementReference></value>
610
+ </inputParameters>
611
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
612
+ <isRequired>false</isRequired>
613
+ <storeOutputAutomatically>true</storeOutputAutomatically>
614
+ <styleProperties>
615
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
616
+ <width><stringValue>12</stringValue></width>
617
+ </styleProperties>
618
+ </fields>
619
+ <fields>
620
+ <name>Callout_EmergencyWarning</name>
621
+ <fieldText>&lt;div style="background-color: #FFF4E6; border-left: 4px solid #FE9339; padding: 10px 14px; margin: 6px 0 10px 0; border-radius: 4px;"&gt;&lt;p style="margin: 0; color: #704D00; font-size: 13px;"&gt;&lt;b&gt;⚠️ Heads up:&lt;/b&gt; Ticking emergency pages the on-call supervisor and auto-creates a P0 case. Use only for active safety risks.&lt;/p&gt;&lt;/div&gt;</fieldText>
622
+ <fieldType>DisplayText</fieldType>
623
+ <styleProperties>
624
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
625
+ <width><stringValue>12</stringValue></width>
626
+ </styleProperties>
627
+ </fields>
628
+ <fields>
629
+ <name>Input_AfterHoursAccess</name>
630
+ <extensionName>runtime_service_fieldservice:dcToggle</extensionName>
631
+ <fieldType>ComponentInstance</fieldType>
632
+ <inputParameters>
633
+ <name>label</name>
634
+ <value><stringValue>After-Hours Access Authorized · Toggle</stringValue></value>
635
+ </inputParameters>
636
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
637
+ <isRequired>false</isRequired>
638
+ <storeOutputAutomatically>true</storeOutputAutomatically>
639
+ <styleProperties>
640
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
641
+ <width><stringValue>12</stringValue></width>
642
+ </styleProperties>
643
+ </fields>
644
+ <fields>
645
+ <name>Input_TechCount</name>
646
+ <extensionName>runtime_service_fieldservice:dcCounter</extensionName>
647
+ <fieldType>ComponentInstance</fieldType>
648
+ <inputParameters>
649
+ <name>label</name>
650
+ <value><stringValue>Technicians on Site · Counter</stringValue></value>
651
+ </inputParameters>
652
+ <inputParameters>
653
+ <name>value</name>
654
+ <value><elementReference>v_TechCount</elementReference></value>
655
+ </inputParameters>
656
+ <inputParameters>
657
+ <name>step</name>
658
+ <value><numberValue>1.0</numberValue></value>
659
+ </inputParameters>
660
+ <inputParameters>
661
+ <name>min</name>
662
+ <value><numberValue>1.0</numberValue></value>
663
+ </inputParameters>
664
+ <inputParameters>
665
+ <name>max</name>
666
+ <value><numberValue>20.0</numberValue></value>
667
+ </inputParameters>
668
+ <inputParameters>
669
+ <name>minCustomErrorMessage</name>
670
+ <value><stringValue>At least 1 technician required</stringValue></value>
671
+ </inputParameters>
672
+ <inputParameters>
673
+ <name>maxCustomErrorMessage</name>
674
+ <value><stringValue>Maximum 20 technicians per visit</stringValue></value>
675
+ </inputParameters>
676
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
677
+ <isRequired>true</isRequired>
678
+ <storeOutputAutomatically>true</storeOutputAutomatically>
679
+ <styleProperties>
680
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
681
+ <width><stringValue>12</stringValue></width>
682
+ </styleProperties>
683
+ </fields>
684
+ <fields>
685
+ <name>Input_Priority</name>
686
+ <choiceReferences>Priority_High</choiceReferences>
687
+ <choiceReferences>Priority_Medium</choiceReferences>
688
+ <choiceReferences>Priority_Low</choiceReferences>
689
+ <defaultValue><elementReference>v_Priority</elementReference></defaultValue>
690
+ <extensionName>runtime_service_fieldservice:dcRbGroup</extensionName>
691
+ <fieldText>Visit Priority · Radio Buttons</fieldText>
692
+ <fieldType>ComponentChoice</fieldType>
693
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
694
+ <isRequired>true</isRequired>
695
+ <storeOutputAutomatically>true</storeOutputAutomatically>
696
+ <styleProperties>
697
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
698
+ <width><stringValue>12</stringValue></width>
699
+ </styleProperties>
700
+ </fields>
701
+ <fields>
702
+ <name>Input_VisitStatus</name>
703
+ <choiceReferences>Status_InProgress</choiceReferences>
704
+ <choiceReferences>Status_OnHold</choiceReferences>
705
+ <choiceReferences>Status_Completed</choiceReferences>
706
+ <choiceReferences>Status_FollowUp</choiceReferences>
707
+ <defaultValue><elementReference>v_VisitStatus</elementReference></defaultValue>
708
+ <extensionName>runtime_service_fieldservice:dcPicklist</extensionName>
709
+ <fieldText>Visit Status · Compact Picklist</fieldText>
710
+ <fieldType>ComponentChoice</fieldType>
711
+ <inputParameters>
712
+ <name>isCompact</name>
713
+ <value><booleanValue>true</booleanValue></value>
714
+ </inputParameters>
715
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
716
+ <isRequired>true</isRequired>
717
+ <storeOutputAutomatically>true</storeOutputAutomatically>
718
+ <styleProperties>
719
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
720
+ <width><stringValue>12</stringValue></width>
721
+ </styleProperties>
722
+ </fields>
723
+ <nextOrFinishButtonLabel>Continue</nextOrFinishButtonLabel>
724
+ <showFooter>true</showFooter>
725
+ <showHeader>false</showHeader>
726
+ </screens>
727
+
728
+ <!-- ── Screen 3: Assessment ──────────────────────────────────
729
+ Long Text · Picklist Single · Picklist Multiple · Matrix
730
+ ──────────────────────────────────────────────────────────── -->
731
+ <screens>
732
+ <name>Screen_Assessment</name>
733
+ <label>Issue Assessment</label>
734
+ <locationX>0</locationX>
735
+ <locationY>0</locationY>
736
+ <allowBack>true</allowBack>
737
+ <allowFinish>true</allowFinish>
738
+ <allowPause>false</allowPause>
739
+ <connector>
740
+ <targetReference>Screen_EvidenceSignoff</targetReference>
741
+ </connector>
742
+ <fields>
743
+ <name>Hdr_Assessment</name>
744
+ <fieldText>&lt;p&gt;&lt;b&gt;Step 3 of 6 – 🔍 Issue Assessment&lt;/b&gt;&lt;/p&gt;&lt;div style="width: 100%; height: 8px; background-color: #C9C7C5; border-radius: 4px; margin: 5px 0 12px 0;"&gt;&lt;div style="width: 50%; height: 100%; background: linear-gradient(90deg, #2E844A 0%, #0176D3 100%); border-radius: 4px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Components: &lt;em&gt;Long Text · Picklist (Single) · Picklist (Multi) · Checkbox Group · Matrix&lt;/em&gt;&lt;/p&gt;</fieldText>
745
+ <fieldType>DisplayText</fieldType>
746
+ <styleProperties>
747
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
748
+ <width><stringValue>12</stringValue></width>
749
+ </styleProperties>
750
+ </fields>
751
+ <fields>
752
+ <name>Input_IssueDescription</name>
753
+ <extensionName>runtime_service_fieldservice:dcLongText</extensionName>
754
+ <fieldType>ComponentInstance</fieldType>
755
+ <inputParameters>
756
+ <name>label</name>
757
+ <value><stringValue>Issue Description · Long Text</stringValue></value>
758
+ </inputParameters>
759
+ <inputParameters>
760
+ <name>value</name>
761
+ <value><elementReference>v_IssueDescription</elementReference></value>
762
+ </inputParameters>
763
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
764
+ <isRequired>true</isRequired>
765
+ <storeOutputAutomatically>true</storeOutputAutomatically>
766
+ <styleProperties>
767
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
768
+ <width><stringValue>12</stringValue></width>
769
+ </styleProperties>
770
+ </fields>
771
+ <fields>
772
+ <name>Input_IssueType</name>
773
+ <choiceReferences>Issue_Electrical</choiceReferences>
774
+ <choiceReferences>Issue_Mechanical</choiceReferences>
775
+ <choiceReferences>Issue_Plumbing</choiceReferences>
776
+ <choiceReferences>Issue_Structural</choiceReferences>
777
+ <choiceReferences>Issue_Safety</choiceReferences>
778
+ <choiceReferences>Issue_Cosmetic</choiceReferences>
779
+ <choiceReferences>Issue_Preventive</choiceReferences>
780
+ <choiceReferences>Issue_Other</choiceReferences>
781
+ <extensionName>runtime_service_fieldservice:dcPicklist</extensionName>
782
+ <fieldText>Issue Type · Picklist (Single Select)</fieldText>
783
+ <fieldType>ComponentChoice</fieldType>
784
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
785
+ <isRequired>true</isRequired>
786
+ <storeOutputAutomatically>true</storeOutputAutomatically>
787
+ <styleProperties>
788
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
789
+ <width><stringValue>12</stringValue></width>
790
+ </styleProperties>
791
+ </fields>
792
+ <fields>
793
+ <name>Input_AffectedAreas</name>
794
+ <choiceReferences>Area_Reception</choiceReferences>
795
+ <choiceReferences>Area_Server</choiceReferences>
796
+ <choiceReferences>Area_Offices</choiceReferences>
797
+ <choiceReferences>Area_Restrooms</choiceReferences>
798
+ <choiceReferences>Area_Parking</choiceReferences>
799
+ <choiceReferences>Area_Roof</choiceReferences>
800
+ <choiceReferences>Area_Basement</choiceReferences>
801
+ <choiceReferences>Area_Kitchen</choiceReferences>
802
+ <choiceReferences>Area_Boardroom</choiceReferences>
803
+ <choiceReferences>Area_Warehouse</choiceReferences>
804
+ <choiceReferences>Area_Other</choiceReferences>
805
+ <extensionName>runtime_service_fieldservice:dcPicklist</extensionName>
806
+ <fieldText>Affected Areas · Picklist (Multi-Select)</fieldText>
807
+ <fieldType>ComponentMultiChoice</fieldType>
808
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
809
+ <isRequired>false</isRequired>
810
+ <storeOutputAutomatically>true</storeOutputAutomatically>
811
+ <styleProperties>
812
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
813
+ <width><stringValue>12</stringValue></width>
814
+ </styleProperties>
815
+ </fields>
816
+ <fields>
817
+ <name>Input_SafetyEquipment</name>
818
+ <choiceReferences>Safety_Helmet</choiceReferences>
819
+ <choiceReferences>Safety_Gloves</choiceReferences>
820
+ <choiceReferences>Safety_Vest</choiceReferences>
821
+ <choiceReferences>Safety_Harness</choiceReferences>
822
+ <choiceReferences>Safety_Boots</choiceReferences>
823
+ <choiceReferences>Safety_Goggles</choiceReferences>
824
+ <extensionName>runtime_service_fieldservice:dcCbGroup</extensionName>
825
+ <fieldText>Safety Equipment Used · Checkbox Group</fieldText>
826
+ <fieldType>ComponentMultiChoice</fieldType>
827
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
828
+ <isRequired>false</isRequired>
829
+ <storeOutputAutomatically>true</storeOutputAutomatically>
830
+ <styleProperties>
831
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
832
+ <width><stringValue>12</stringValue></width>
833
+ </styleProperties>
834
+ </fields>
835
+ <fields>
836
+ <name>Input_ConditionMatrix</name>
837
+ <choiceReferences>Cond_Good</choiceReferences>
838
+ <choiceReferences>Cond_Fair</choiceReferences>
839
+ <choiceReferences>Cond_Poor</choiceReferences>
840
+ <extensionName>runtime_service_fieldservice:dcMatrix</extensionName>
841
+ <fieldText>Asset Condition Ratings · Matrix</fieldText>
842
+ <fieldType>ComponentMultiChoice</fieldType>
843
+ <inputParameters>
844
+ <name>questions</name>
845
+ <value><stringValue>["Electrical Systems","Mechanical Equipment","Plumbing &amp; HVAC","Structural Elements","Safety Installations"]</stringValue></value>
846
+ </inputParameters>
847
+ <inputParameters>
848
+ <name>isDisabled</name>
849
+ <value><booleanValue>false</booleanValue></value>
850
+ </inputParameters>
851
+ <inputParameters>
852
+ <name>isReadonly</name>
853
+ <value><booleanValue>false</booleanValue></value>
854
+ </inputParameters>
855
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
856
+ <isRequired>false</isRequired>
857
+ <storeOutputAutomatically>true</storeOutputAutomatically>
858
+ <styleProperties>
859
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
860
+ <width><stringValue>12</stringValue></width>
861
+ </styleProperties>
862
+ </fields>
863
+ <nextOrFinishButtonLabel>Continue</nextOrFinishButtonLabel>
864
+ <showFooter>true</showFooter>
865
+ <showHeader>false</showHeader>
866
+ </screens>
867
+
868
+ <!-- ── Screen 4: Evidence & Sign-off ─────────────────────────
869
+ Upload Image · Upload File · Address+Coordinates · Signature
870
+ ──────────────────────────────────────────────────────────── -->
871
+ <screens>
872
+ <name>Screen_EvidenceSignoff</name>
873
+ <label>Evidence and Sign-off</label>
874
+ <locationX>0</locationX>
875
+ <locationY>0</locationY>
876
+ <allowBack>true</allowBack>
877
+ <allowFinish>true</allowFinish>
878
+ <allowPause>false</allowPause>
879
+ <connector>
880
+ <targetReference>Screen_LayoutFeatures</targetReference>
881
+ </connector>
882
+ <fields>
883
+ <name>Hdr_Evidence</name>
884
+ <fieldText>&lt;p&gt;&lt;b&gt;Step 4 of 6 – 📸 Evidence &amp;amp; Sign-off&lt;/b&gt;&lt;/p&gt;&lt;div style="width: 100%; height: 8px; background-color: #C9C7C5; border-radius: 4px; margin: 5px 0 12px 0;"&gt;&lt;div style="width: 67%; height: 100%; background: linear-gradient(90deg, #2E844A 0%, #0176D3 100%); border-radius: 4px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Components: &lt;em&gt;Static Image · Upload Image · Upload File · Address with GPS · Signature&lt;/em&gt;&lt;/p&gt;</fieldText>
885
+ <fieldType>DisplayText</fieldType>
886
+ <styleProperties>
887
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
888
+ <width><stringValue>12</stringValue></width>
889
+ </styleProperties>
890
+ </fields>
891
+ <fields>
892
+ <name>Callout_OfflineSync</name>
893
+ <fieldText>&lt;div style="background-color: #EAF5FE; border-left: 4px solid #0176D3; padding: 10px 14px; margin: 0 0 10px 0; border-radius: 4px;"&gt;&lt;p style="margin: 0; color: #014486; font-size: 13px;"&gt;&lt;b&gt;ℹ️ Offline capture:&lt;/b&gt; Photos, files, and signatures are stored locally and auto-sync to Salesforce once you're back online. No need to wait for a connection.&lt;/p&gt;&lt;/div&gt;</fieldText>
894
+ <fieldType>DisplayText</fieldType>
895
+ <styleProperties>
896
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
897
+ <width><stringValue>12</stringValue></width>
898
+ </styleProperties>
899
+ </fields>
900
+ <fields>
901
+ <name>Input_ReferenceImage</name>
902
+ <extensionName>runtime_service_fieldservice:dcFileView</extensionName>
903
+ <fieldType>ComponentInstance</fieldType>
904
+ <inputParameters>
905
+ <name>label</name>
906
+ <value><stringValue>Reference: PPE Compliance Checklist · Static Image</stringValue></value>
907
+ </inputParameters>
908
+ <inputParameters>
909
+ <name>fileName</name>
910
+ <value><stringValue>PPE_Compliance_Checklist</stringValue></value>
911
+ </inputParameters>
912
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
913
+ <isRequired>false</isRequired>
914
+ <storeOutputAutomatically>true</storeOutputAutomatically>
915
+ <styleProperties>
916
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
917
+ <width><stringValue>12</stringValue></width>
918
+ </styleProperties>
919
+ </fields>
920
+ <fields>
921
+ <name>Input_SitePhoto</name>
922
+ <extensionName>runtime_service_fieldservice:dcUpImage</extensionName>
923
+ <fieldType>ComponentInstance</fieldType>
924
+ <inputParameters>
925
+ <name>label</name>
926
+ <value><stringValue>Site Photos · Upload Image</stringValue></value>
927
+ </inputParameters>
928
+ <inputParameters>
929
+ <name>recordId</name>
930
+ <value><elementReference>parentRecordId</elementReference></value>
931
+ </inputParameters>
932
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
933
+ <isRequired>false</isRequired>
934
+ <storeOutputAutomatically>true</storeOutputAutomatically>
935
+ <styleProperties>
936
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
937
+ <width><stringValue>12</stringValue></width>
938
+ </styleProperties>
939
+ </fields>
940
+ <fields>
941
+ <name>Input_SupportingDocs</name>
942
+ <extensionName>runtime_service_fieldservice:dcUpFile</extensionName>
943
+ <fieldType>ComponentInstance</fieldType>
944
+ <inputParameters>
945
+ <name>label</name>
946
+ <value><stringValue>Supporting Documents · Upload File</stringValue></value>
947
+ </inputParameters>
948
+ <inputParameters>
949
+ <name>recordId</name>
950
+ <value><elementReference>parentRecordId</elementReference></value>
951
+ </inputParameters>
952
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
953
+ <isRequired>false</isRequired>
954
+ <storeOutputAutomatically>true</storeOutputAutomatically>
955
+ <styleProperties>
956
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
957
+ <width><stringValue>12</stringValue></width>
958
+ </styleProperties>
959
+ </fields>
960
+ <fields>
961
+ <name>Input_GPSLocation</name>
962
+ <extensionName>runtime_service_fieldservice:dcAddress</extensionName>
963
+ <fieldType>ComponentInstance</fieldType>
964
+ <inputParameters>
965
+ <name>label</name>
966
+ <value><stringValue>GPS Location · Address with Coordinates</stringValue></value>
967
+ </inputParameters>
968
+ <inputParameters>
969
+ <name>useCoordinates</name>
970
+ <value><booleanValue>true</booleanValue></value>
971
+ </inputParameters>
972
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
973
+ <isRequired>false</isRequired>
974
+ <storeOutputAutomatically>true</storeOutputAutomatically>
975
+ <styleProperties>
976
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
977
+ <width><stringValue>12</stringValue></width>
978
+ </styleProperties>
979
+ </fields>
980
+ <fields>
981
+ <name>Input_Signature</name>
982
+ <extensionName>runtime_service_fieldservice:dcSignature</extensionName>
983
+ <fieldType>ComponentInstance</fieldType>
984
+ <inputParameters>
985
+ <name>label</name>
986
+ <value><stringValue>Customer Sign-off · Signature</stringValue></value>
987
+ </inputParameters>
988
+ <inputParameters>
989
+ <name>parentRecordId</name>
990
+ <value><elementReference>parentRecordId</elementReference></value>
991
+ </inputParameters>
992
+ <inputParameters>
993
+ <name>recordId</name>
994
+ <value><elementReference>recordId</elementReference></value>
995
+ </inputParameters>
996
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
997
+ <isRequired>false</isRequired>
998
+ <storeOutputAutomatically>true</storeOutputAutomatically>
999
+ <styleProperties>
1000
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1001
+ <width><stringValue>12</stringValue></width>
1002
+ </styleProperties>
1003
+ </fields>
1004
+ <nextOrFinishButtonLabel>Continue</nextOrFinishButtonLabel>
1005
+ <showFooter>true</showFooter>
1006
+ <showHeader>false</showHeader>
1007
+ </screens>
1008
+
1009
+ <!-- ── Screen 5: Layout Features ────────────────────────────
1010
+ Lookup · Repeater · 2-column Section with visibility rule
1011
+ (Static Image View also included)
1012
+ ──────────────────────────────────────────────────────────── -->
1013
+ <screens>
1014
+ <name>Screen_LayoutFeatures</name>
1015
+ <label>Layout Features</label>
1016
+ <locationX>0</locationX>
1017
+ <locationY>0</locationY>
1018
+ <allowBack>true</allowBack>
1019
+ <allowFinish>true</allowFinish>
1020
+ <allowPause>false</allowPause>
1021
+ <connector>
1022
+ <targetReference>Screen_LayoutFeaturesRepeater</targetReference>
1023
+ </connector>
1024
+ <fields>
1025
+ <name>Hdr_Layout</name>
1026
+ <fieldText>&lt;p&gt;&lt;b&gt;Step 5 of 6 – 🧩 Parts &amp;amp; Related Records&lt;/b&gt;&lt;/p&gt;&lt;div style="width: 100%; height: 8px; background-color: #C9C7C5; border-radius: 4px; margin: 5px 0 12px 0;"&gt;&lt;div style="width: 83%; height: 100%; background: linear-gradient(90deg, #2E844A 0%, #0176D3 100%); border-radius: 4px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Components: &lt;em&gt;Lookup · 2-Column Section · Conditional Visibility · Parts (persisted as child records)&lt;/em&gt;&lt;/p&gt;</fieldText>
1027
+ <fieldType>DisplayText</fieldType>
1028
+ <styleProperties>
1029
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1030
+ <width><stringValue>12</stringValue></width>
1031
+ </styleProperties>
1032
+ </fields>
1033
+ <!-- Lookup -->
1034
+ <fields>
1035
+ <name>Input_RelatedAsset</name>
1036
+ <extensionName>runtime_service_fieldservice:dcLookup</extensionName>
1037
+ <fieldType>ComponentInstance</fieldType>
1038
+ <inputParameters>
1039
+ <name>label</name>
1040
+ <value><stringValue>Related Asset · Lookup (multi-select, search by Name &amp; Serial)</stringValue></value>
1041
+ </inputParameters>
1042
+ <inputParameters>
1043
+ <name>objectApiName</name>
1044
+ <value><stringValue>Asset</stringValue></value>
1045
+ </inputParameters>
1046
+ <inputParameters>
1047
+ <name>searchedFields</name>
1048
+ <value><stringValue>Name, SerialNumber</stringValue></value>
1049
+ </inputParameters>
1050
+ <inputParameters>
1051
+ <name>isMultiSelection</name>
1052
+ <value><booleanValue>true</booleanValue></value>
1053
+ </inputParameters>
1054
+ <inputParameters>
1055
+ <name>isRequired</name>
1056
+ <value><booleanValue>false</booleanValue></value>
1057
+ </inputParameters>
1058
+ <inputParameters>
1059
+ <name>isDisabled</name>
1060
+ <value><booleanValue>false</booleanValue></value>
1061
+ </inputParameters>
1062
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
1063
+ <isRequired>false</isRequired>
1064
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1065
+ <styleProperties>
1066
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1067
+ <width><stringValue>12</stringValue></width>
1068
+ </styleProperties>
1069
+ </fields>
1070
+ <!-- Parts Used: Repeater (each row persists as a CustomFormPart__c child) -->
1071
+ <fields>
1072
+ <name>Hdr_Parts</name>
1073
+ <fieldText>&lt;p&gt;&lt;strong&gt;Parts Used&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Add one row per part — tap + Add Row for more. Each row becomes a child CustomFormPart__c record when you submit.&lt;/em&gt;&lt;/p&gt;</fieldText>
1074
+ <fieldType>DisplayText</fieldType>
1075
+ <styleProperties>
1076
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1077
+ <width><stringValue>12</stringValue></width>
1078
+ </styleProperties>
1079
+ </fields>
1080
+ <fields>
1081
+ <name>Input_PartsRepeater</name>
1082
+ <fieldType>Repeater</fieldType>
1083
+ <fields>
1084
+ <name>Input_PartName</name>
1085
+ <extensionName>runtime_service_fieldservice:dcTextInput</extensionName>
1086
+ <fieldType>ComponentInstance</fieldType>
1087
+ <inputParameters>
1088
+ <name>label</name>
1089
+ <value><stringValue>Part Name / Description</stringValue></value>
1090
+ </inputParameters>
1091
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
1092
+ <isRequired>true</isRequired>
1093
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1094
+ <styleProperties>
1095
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1096
+ <width><stringValue>12</stringValue></width>
1097
+ </styleProperties>
1098
+ </fields>
1099
+ <fields>
1100
+ <name>Input_PartQty</name>
1101
+ <extensionName>runtime_service_fieldservice:dcCounter</extensionName>
1102
+ <fieldType>ComponentInstance</fieldType>
1103
+ <inputParameters>
1104
+ <name>label</name>
1105
+ <value><stringValue>Quantity</stringValue></value>
1106
+ </inputParameters>
1107
+ <inputParameters>
1108
+ <name>value</name>
1109
+ <value><numberValue>1.0</numberValue></value>
1110
+ </inputParameters>
1111
+ <inputParameters>
1112
+ <name>step</name>
1113
+ <value><numberValue>1.0</numberValue></value>
1114
+ </inputParameters>
1115
+ <inputParameters>
1116
+ <name>min</name>
1117
+ <value><numberValue>1.0</numberValue></value>
1118
+ </inputParameters>
1119
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
1120
+ <isRequired>true</isRequired>
1121
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1122
+ <styleProperties>
1123
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1124
+ <width><stringValue>12</stringValue></width>
1125
+ </styleProperties>
1126
+ </fields>
1127
+ <isRequired>false</isRequired>
1128
+ <styleProperties>
1129
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1130
+ <width><stringValue>12</stringValue></width>
1131
+ </styleProperties>
1132
+ </fields>
1133
+ <!-- 2-column section: Numeric + conditional Compact Picklist -->
1134
+ <fields>
1135
+ <name>Section_PartsAvailability</name>
1136
+ <fieldText>Parts Availability · 2-Column Section with Conditional Visibility</fieldText>
1137
+ <fieldType>RegionContainer</fieldType>
1138
+ <fields>
1139
+ <name>Section_PartsAvailability_Col1</name>
1140
+ <fieldType>Region</fieldType>
1141
+ <fields>
1142
+ <name>Input_EstimatedHours</name>
1143
+ <extensionName>runtime_service_fieldservice:dcNumeric</extensionName>
1144
+ <fieldType>ComponentInstance</fieldType>
1145
+ <inputParameters>
1146
+ <name>label</name>
1147
+ <value><stringValue>Estimated Hours to Complete (enter 0 if done)</stringValue></value>
1148
+ </inputParameters>
1149
+ <inputParameters>
1150
+ <name>value</name>
1151
+ <value><elementReference>v_EstimatedHours</elementReference></value>
1152
+ </inputParameters>
1153
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
1154
+ <isRequired>true</isRequired>
1155
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1156
+ <styleProperties>
1157
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1158
+ <width><stringValue>12</stringValue></width>
1159
+ </styleProperties>
1160
+ </fields>
1161
+ <inputParameters>
1162
+ <name>width</name>
1163
+ <value><stringValue>6</stringValue></value>
1164
+ </inputParameters>
1165
+ <isRequired>false</isRequired>
1166
+ </fields>
1167
+ <fields>
1168
+ <name>Section_PartsAvailability_Col2</name>
1169
+ <fieldType>Region</fieldType>
1170
+ <fields>
1171
+ <!-- Visible only when Estimated Hours > 0 -->
1172
+ <name>Input_PartsStatus</name>
1173
+ <choiceReferences>Parts_InStock</choiceReferences>
1174
+ <choiceReferences>Parts_OrderRequired</choiceReferences>
1175
+ <choiceReferences>Parts_NA</choiceReferences>
1176
+ <extensionName>runtime_service_fieldservice:dcPicklist</extensionName>
1177
+ <fieldText>Parts Status (visible when hours &gt; 0)</fieldText>
1178
+ <fieldType>ComponentChoice</fieldType>
1179
+ <inputParameters>
1180
+ <name>isCompact</name>
1181
+ <value><booleanValue>true</booleanValue></value>
1182
+ </inputParameters>
1183
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
1184
+ <isRequired>false</isRequired>
1185
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1186
+ <styleProperties>
1187
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1188
+ <width><stringValue>12</stringValue></width>
1189
+ </styleProperties>
1190
+ <visibilityRule>
1191
+ <conditionLogic>and</conditionLogic>
1192
+ <conditions>
1193
+ <leftValueReference>Input_EstimatedHours.value</leftValueReference>
1194
+ <operator>GreaterThan</operator>
1195
+ <rightValue><numberValue>0.0</numberValue></rightValue>
1196
+ </conditions>
1197
+ </visibilityRule>
1198
+ </fields>
1199
+ <inputParameters>
1200
+ <name>width</name>
1201
+ <value><stringValue>6</stringValue></value>
1202
+ </inputParameters>
1203
+ <isRequired>false</isRequired>
1204
+ </fields>
1205
+ <isRequired>false</isRequired>
1206
+ <regionContainerType>SectionWithHeader</regionContainerType>
1207
+ <styleProperties>
1208
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1209
+ <width><stringValue>12</stringValue></width>
1210
+ </styleProperties>
1211
+ </fields>
1212
+ <nextOrFinishButtonLabel>Continue</nextOrFinishButtonLabel>
1213
+ <showFooter>true</showFooter>
1214
+ <showHeader>false</showHeader>
1215
+ </screens>
1216
+
1217
+ <!-- ── Screen 5b: Parts via Repeater ────────────────────────
1218
+ Mirrors Screen 5 but uses the Repeater component.
1219
+ Each repeater row persists as a child CustomFormPart__c.
1220
+ ──────────────────────────────────────────────────────────── -->
1221
+ <screens>
1222
+ <name>Screen_LayoutFeaturesRepeater</name>
1223
+ <label>Parts (Repeater)</label>
1224
+ <locationX>0</locationX>
1225
+ <locationY>0</locationY>
1226
+ <allowBack>true</allowBack>
1227
+ <allowFinish>true</allowFinish>
1228
+ <allowPause>false</allowPause>
1229
+ <connector>
1230
+ <targetReference>Screen_Review</targetReference>
1231
+ </connector>
1232
+ <fields>
1233
+ <name>Hdr_LayoutRepeater</name>
1234
+ <fieldText>&lt;p&gt;&lt;b&gt;Step 5b of 6 – 🔁 Parts via Repeater&lt;/b&gt;&lt;/p&gt;&lt;div style="width: 100%; height: 8px; background-color: #C9C7C5; border-radius: 4px; margin: 5px 0 12px 0;"&gt;&lt;div style="width: 92%; height: 100%; background: linear-gradient(90deg, #2E844A 0%, #0176D3 100%); border-radius: 4px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Components: &lt;em&gt;Repeater with nested Text + Counter. Each row becomes a CustomFormPart__c child record via an outer Loop + recordCreate at end-of-flow.&lt;/em&gt;&lt;/p&gt;
1235
+ &lt;div style="background-color: #EAF5FE; border-left: 4px solid #0176D3; padding: 10px 14px; margin: 6px 0 0 0; border-radius: 4px;"&gt;&lt;p style="margin: 0; color: #014486; font-size: 13px;"&gt;&lt;b&gt;ℹ️ Tip:&lt;/b&gt; Use the &lt;b&gt;+ Add Row&lt;/b&gt; button below to add as many parts as you need — each row will save as its own child record.&lt;/p&gt;&lt;/div&gt;</fieldText>
1236
+ <fieldType>DisplayText</fieldType>
1237
+ <styleProperties>
1238
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1239
+ <width><stringValue>12</stringValue></width>
1240
+ </styleProperties>
1241
+ </fields>
1242
+ <fields>
1243
+ <name>Input_PartsRepeaterV2</name>
1244
+ <fieldType>Repeater</fieldType>
1245
+ <fields>
1246
+ <name>Input_PartNameV2</name>
1247
+ <extensionName>runtime_service_fieldservice:dcTextInput</extensionName>
1248
+ <fieldType>ComponentInstance</fieldType>
1249
+ <inputParameters>
1250
+ <name>label</name>
1251
+ <value><stringValue>Part Name / Description</stringValue></value>
1252
+ </inputParameters>
1253
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
1254
+ <isRequired>true</isRequired>
1255
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1256
+ <styleProperties>
1257
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1258
+ <width><stringValue>12</stringValue></width>
1259
+ </styleProperties>
1260
+ </fields>
1261
+ <fields>
1262
+ <name>Input_PartQtyV2</name>
1263
+ <extensionName>runtime_service_fieldservice:dcCounter</extensionName>
1264
+ <fieldType>ComponentInstance</fieldType>
1265
+ <inputParameters>
1266
+ <name>label</name>
1267
+ <value><stringValue>Quantity</stringValue></value>
1268
+ </inputParameters>
1269
+ <inputParameters>
1270
+ <name>value</name>
1271
+ <value><numberValue>1.0</numberValue></value>
1272
+ </inputParameters>
1273
+ <inputParameters>
1274
+ <name>step</name>
1275
+ <value><numberValue>1.0</numberValue></value>
1276
+ </inputParameters>
1277
+ <inputParameters>
1278
+ <name>min</name>
1279
+ <value><numberValue>1.0</numberValue></value>
1280
+ </inputParameters>
1281
+ <inputsOnNextNavToAssocScrn>UseStoredValues</inputsOnNextNavToAssocScrn>
1282
+ <isRequired>true</isRequired>
1283
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1284
+ <styleProperties>
1285
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1286
+ <width><stringValue>12</stringValue></width>
1287
+ </styleProperties>
1288
+ </fields>
1289
+ <isRequired>false</isRequired>
1290
+ <styleProperties>
1291
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1292
+ <width><stringValue>12</stringValue></width>
1293
+ </styleProperties>
1294
+ </fields>
1295
+ <nextOrFinishButtonLabel>Continue to Review</nextOrFinishButtonLabel>
1296
+ <showFooter>true</showFooter>
1297
+ <showHeader>false</showHeader>
1298
+ </screens>
1299
+
1300
+ <!-- ── Screen 6: Review & Submit ─────────────────────────────
1301
+ Review screen — routes to Decision_SaveMode on Submit
1302
+ ──────────────────────────────────────────────────────────── -->
1303
+ <screens>
1304
+ <name>Screen_Review</name>
1305
+ <label>Review and Submit</label>
1306
+ <locationX>0</locationX>
1307
+ <locationY>0</locationY>
1308
+ <allowBack>true</allowBack>
1309
+ <allowFinish>true</allowFinish>
1310
+ <allowPause>false</allowPause>
1311
+ <connector>
1312
+ <targetReference>Decision_SaveMode</targetReference>
1313
+ </connector>
1314
+ <fields>
1315
+ <name>Hdr_Review</name>
1316
+ <fieldText>&lt;p&gt;&lt;b&gt;Step 6 of 6 – ✅ Review &amp;amp; Submit&lt;/b&gt;&lt;/p&gt;&lt;div style="width: 100%; height: 8px; background-color: #C9C7C5; border-radius: 4px; margin: 5px 0 12px 0;"&gt;&lt;div style="width: 100%; height: 100%; background: linear-gradient(90deg, #2E844A 0%, #0176D3 100%); border-radius: 4px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="color: #706E6B; font-size: 13px; margin: 0 0 8px 0;"&gt;Double-check everything below before tapping &lt;strong&gt;Submit Report&lt;/strong&gt;.&lt;/p&gt;</fieldText>
1317
+ <fieldType>DisplayText</fieldType>
1318
+ <styleProperties>
1319
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1320
+ <width><stringValue>12</stringValue></width>
1321
+ </styleProperties>
1322
+ </fields>
1323
+ <fields>
1324
+ <name>Card_Site</name>
1325
+ <fieldText>&lt;div style="border: 1px solid #DDDBDA; border-radius: 8px; padding: 14px 16px; margin: 8px 0; background-color: #FAFAF9;"&gt;&lt;p style="margin: 0 0 8px 0; color: #0176D3; font-size: 14px;"&gt;&lt;b&gt;📍 Site &amp;amp; Contact&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Site:&lt;/b&gt; {!Input_SiteName.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Contact:&lt;/b&gt; {!Input_ContactName.firstName} {!Input_ContactName.lastName}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Email:&lt;/b&gt; {!Input_ContactEmail.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Phone:&lt;/b&gt; {!Input_ContactPhone.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Floors:&lt;/b&gt; {!Input_FloorCount.value}&lt;/p&gt;&lt;/div&gt;</fieldText>
1326
+ <fieldType>DisplayText</fieldType>
1327
+ <styleProperties>
1328
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1329
+ <width><stringValue>12</stringValue></width>
1330
+ </styleProperties>
1331
+ </fields>
1332
+ <fields>
1333
+ <name>Card_Scheduling</name>
1334
+ <fieldText>&lt;div style="border: 1px solid #DDDBDA; border-radius: 8px; padding: 14px 16px; margin: 8px 0; background-color: #FAFAF9;"&gt;&lt;p style="margin: 0 0 8px 0; color: #0176D3; font-size: 14px;"&gt;&lt;b&gt;🗓️ Scheduling &amp;amp; Status&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Visit Date:&lt;/b&gt; {!Input_VisitDate.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Appointment:&lt;/b&gt; {!Input_AppointmentTime.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Emergency:&lt;/b&gt; {!Input_IsEmergency.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;After-Hours Access:&lt;/b&gt; {!Input_AfterHoursAccess.isActive}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Technicians:&lt;/b&gt; {!Input_TechCount.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Priority:&lt;/b&gt; {!Input_Priority.selectedChoiceValues}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Status:&lt;/b&gt; {!Input_VisitStatus.selectedChoiceValues}&lt;/p&gt;&lt;/div&gt;</fieldText>
1335
+ <fieldType>DisplayText</fieldType>
1336
+ <styleProperties>
1337
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1338
+ <width><stringValue>12</stringValue></width>
1339
+ </styleProperties>
1340
+ </fields>
1341
+ <fields>
1342
+ <name>Card_Assessment</name>
1343
+ <fieldText>&lt;div style="border: 1px solid #DDDBDA; border-radius: 8px; padding: 14px 16px; margin: 8px 0; background-color: #FAFAF9;"&gt;&lt;p style="margin: 0 0 8px 0; color: #0176D3; font-size: 14px;"&gt;&lt;b&gt;🔍 Issue Assessment&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Issue Type:&lt;/b&gt; {!Input_IssueType.selectedChoiceValues}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Description:&lt;/b&gt; {!Input_IssueDescription.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Affected Areas:&lt;/b&gt; {!Input_AffectedAreas.selectedChoiceValues}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Safety Equipment:&lt;/b&gt; {!Input_SafetyEquipment.selectedChoiceValues}&lt;/p&gt;&lt;/div&gt;</fieldText>
1344
+ <fieldType>DisplayText</fieldType>
1345
+ <styleProperties>
1346
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1347
+ <width><stringValue>12</stringValue></width>
1348
+ </styleProperties>
1349
+ </fields>
1350
+ <fields>
1351
+ <name>Card_WorkPlan</name>
1352
+ <fieldText>&lt;div style="border: 1px solid #DDDBDA; border-radius: 8px; padding: 14px 16px; margin: 8px 0; background-color: #FAFAF9;"&gt;&lt;p style="margin: 0 0 8px 0; color: #0176D3; font-size: 14px;"&gt;&lt;b&gt;🧩 Work Plan&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Estimated Hours:&lt;/b&gt; {!Input_EstimatedHours.value}&lt;/p&gt;&lt;p style="margin: 2px 0;"&gt;&lt;b&gt;Parts Status:&lt;/b&gt; {!Input_PartsStatus.selectedChoiceValues}&lt;/p&gt;&lt;p style="margin: 8px 0 2px 0; color: #706E6B; font-size: 12px;"&gt;&lt;em&gt;Each row from the Parts Repeaters on Screen 5 &amp;amp; 5b will save as a child CustomFormPart__c record on Submit.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</fieldText>
1353
+ <fieldType>DisplayText</fieldType>
1354
+ <styleProperties>
1355
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1356
+ <width><stringValue>12</stringValue></width>
1357
+ </styleProperties>
1358
+ </fields>
1359
+ <fields>
1360
+ <name>Callout_ReadyToSync</name>
1361
+ <fieldText>&lt;div style="background-color: #E8F5E9; border-left: 4px solid #2E844A; padding: 12px 14px; margin: 12px 0; border-radius: 4px;"&gt;&lt;p style="margin: 0; color: #1B5E20; font-size: 13px;"&gt;&lt;b&gt;✅ Ready to submit.&lt;/b&gt; Your report will save locally and sync to Salesforce automatically when online.&lt;/p&gt;&lt;/div&gt;</fieldText>
1362
+ <fieldType>DisplayText</fieldType>
1363
+ <styleProperties>
1364
+ <verticalAlignment><stringValue>top</stringValue></verticalAlignment>
1365
+ <width><stringValue>12</stringValue></width>
1366
+ </styleProperties>
1367
+ </fields>
1368
+ <nextOrFinishButtonLabel>Submit Report</nextOrFinishButtonLabel>
1369
+ <showFooter>true</showFooter>
1370
+ <showHeader>false</showHeader>
1371
+ </screens>
1372
+
1373
+ <!-- ══════════════════════════════════════════════════════════
1374
+ DECISIONS
1375
+ ══════════════════════════════════════════════════════════ -->
1376
+ <decisions>
1377
+ <name>Decision_Mode</name>
1378
+ <label>Which Mode?</label>
1379
+ <locationX>0</locationX>
1380
+ <locationY>0</locationY>
1381
+ <defaultConnector>
1382
+ <targetReference>Screen_SiteContact</targetReference>
1383
+ </defaultConnector>
1384
+ <defaultConnectorLabel>New Form</defaultConnectorLabel>
1385
+ <rules>
1386
+ <name>Rule_Continue</name>
1387
+ <conditionLogic>and</conditionLogic>
1388
+ <conditions>
1389
+ <leftValueReference>Input_ModeChoice.selectedChoiceValues</leftValueReference>
1390
+ <operator>EqualTo</operator>
1391
+ <rightValue><stringValue>Continue</stringValue></rightValue>
1392
+ </conditions>
1393
+ <conditions>
1394
+ <leftValueReference>Input_ExistingForm.recordId</leftValueReference>
1395
+ <operator>IsNull</operator>
1396
+ <rightValue><booleanValue>false</booleanValue></rightValue>
1397
+ </conditions>
1398
+ <connector>
1399
+ <targetReference>Get_ExistingForm</targetReference>
1400
+ </connector>
1401
+ <label>Continue Existing</label>
1402
+ </rules>
1403
+ </decisions>
1404
+ <decisions>
1405
+ <name>Decision_SaveMode</name>
1406
+ <label>Create or Update?</label>
1407
+ <locationX>0</locationX>
1408
+ <locationY>0</locationY>
1409
+ <defaultConnector>
1410
+ <targetReference>Create_CustomForm</targetReference>
1411
+ </defaultConnector>
1412
+ <defaultConnectorLabel>Create New</defaultConnectorLabel>
1413
+ <rules>
1414
+ <name>Rule_UpdateExisting</name>
1415
+ <conditionLogic>and</conditionLogic>
1416
+ <conditions>
1417
+ <leftValueReference>Input_ModeChoice.selectedChoiceValues</leftValueReference>
1418
+ <operator>EqualTo</operator>
1419
+ <rightValue><stringValue>Continue</stringValue></rightValue>
1420
+ </conditions>
1421
+ <conditions>
1422
+ <leftValueReference>Input_ExistingForm.recordId</leftValueReference>
1423
+ <operator>IsNull</operator>
1424
+ <rightValue><booleanValue>false</booleanValue></rightValue>
1425
+ </conditions>
1426
+ <connector>
1427
+ <targetReference>Update_CustomForm</targetReference>
1428
+ </connector>
1429
+ <label>Update Existing</label>
1430
+ </rules>
1431
+ </decisions>
1432
+
1433
+ <!-- ══════════════════════════════════════════════════════════
1434
+ RECORD LOOKUPS
1435
+ ══════════════════════════════════════════════════════════ -->
1436
+ <recordLookups>
1437
+ <name>Get_ExistingForm</name>
1438
+ <label>Get Existing CustomForm</label>
1439
+ <locationX>0</locationX>
1440
+ <locationY>0</locationY>
1441
+ <assignNullValuesIfNoRecordsFound>true</assignNullValuesIfNoRecordsFound>
1442
+ <connector>
1443
+ <targetReference>Screen_SiteContact</targetReference>
1444
+ </connector>
1445
+ <filterLogic>and</filterLogic>
1446
+ <filters>
1447
+ <field>Id</field>
1448
+ <operator>EqualTo</operator>
1449
+ <value>
1450
+ <elementReference>Input_ExistingForm.recordId</elementReference>
1451
+ </value>
1452
+ </filters>
1453
+ <getFirstRecordOnly>true</getFirstRecordOnly>
1454
+ <object>CustomForm__c</object>
1455
+ <outputAssignments>
1456
+ <assignToReference>v_SiteName</assignToReference>
1457
+ <field>SiteName__c</field>
1458
+ </outputAssignments>
1459
+ <outputAssignments>
1460
+ <assignToReference>v_ContactEmail</assignToReference>
1461
+ <field>ContactEmail__c</field>
1462
+ </outputAssignments>
1463
+ <outputAssignments>
1464
+ <assignToReference>v_ContactPhone</assignToReference>
1465
+ <field>ContactPhone__c</field>
1466
+ </outputAssignments>
1467
+ <outputAssignments>
1468
+ <assignToReference>v_ContactFirstName</assignToReference>
1469
+ <field>ContactFirstName__c</field>
1470
+ </outputAssignments>
1471
+ <outputAssignments>
1472
+ <assignToReference>v_ContactLastName</assignToReference>
1473
+ <field>ContactLastName__c</field>
1474
+ </outputAssignments>
1475
+ <outputAssignments>
1476
+ <assignToReference>v_FloorCount</assignToReference>
1477
+ <field>FloorCount__c</field>
1478
+ </outputAssignments>
1479
+ <outputAssignments>
1480
+ <assignToReference>v_SiteAddress</assignToReference>
1481
+ <field>SiteAddress__c</field>
1482
+ </outputAssignments>
1483
+ <outputAssignments>
1484
+ <assignToReference>v_VisitDate</assignToReference>
1485
+ <field>VisitDate__c</field>
1486
+ </outputAssignments>
1487
+ <outputAssignments>
1488
+ <assignToReference>v_AppointmentTime</assignToReference>
1489
+ <field>AppointmentTime__c</field>
1490
+ </outputAssignments>
1491
+ <outputAssignments>
1492
+ <assignToReference>v_IsEmergency</assignToReference>
1493
+ <field>IsEmergency__c</field>
1494
+ </outputAssignments>
1495
+ <outputAssignments>
1496
+ <assignToReference>v_AfterHoursAccess</assignToReference>
1497
+ <field>AfterHoursAccess__c</field>
1498
+ </outputAssignments>
1499
+ <outputAssignments>
1500
+ <assignToReference>v_TechCount</assignToReference>
1501
+ <field>TechCount__c</field>
1502
+ </outputAssignments>
1503
+ <outputAssignments>
1504
+ <assignToReference>v_Priority</assignToReference>
1505
+ <field>Priority__c</field>
1506
+ </outputAssignments>
1507
+ <outputAssignments>
1508
+ <assignToReference>v_VisitStatus</assignToReference>
1509
+ <field>VisitStatus__c</field>
1510
+ </outputAssignments>
1511
+ <outputAssignments>
1512
+ <assignToReference>v_IssueDescription</assignToReference>
1513
+ <field>IssueDescription__c</field>
1514
+ </outputAssignments>
1515
+ <outputAssignments>
1516
+ <assignToReference>v_IssueType</assignToReference>
1517
+ <field>IssueType__c</field>
1518
+ </outputAssignments>
1519
+ <outputAssignments>
1520
+ <assignToReference>v_AffectedAreas</assignToReference>
1521
+ <field>AffectedAreas__c</field>
1522
+ </outputAssignments>
1523
+ <outputAssignments>
1524
+ <assignToReference>v_SafetyEquipment</assignToReference>
1525
+ <field>SafetyEquipment__c</field>
1526
+ </outputAssignments>
1527
+ <outputAssignments>
1528
+ <assignToReference>v_EstimatedHours</assignToReference>
1529
+ <field>EstimatedHours__c</field>
1530
+ </outputAssignments>
1531
+ <outputAssignments>
1532
+ <assignToReference>v_PartsStatus</assignToReference>
1533
+ <field>PartsStatus__c</field>
1534
+ </outputAssignments>
1535
+ </recordLookups>
1536
+
1537
+ <!-- ══════════════════════════════════════════════════════════
1538
+ RECORD CREATES / UPDATES
1539
+ ══════════════════════════════════════════════════════════ -->
1540
+ <recordCreates>
1541
+ <name>Create_CustomForm</name>
1542
+ <label>Create CustomForm</label>
1543
+ <locationX>0</locationX>
1544
+ <locationY>0</locationY>
1545
+ <connector>
1546
+ <targetReference>Assign_NewFormId</targetReference>
1547
+ </connector>
1548
+ <inputAssignments>
1549
+ <field>Name</field>
1550
+ <value><elementReference>Input_SiteName.value</elementReference></value>
1551
+ </inputAssignments>
1552
+ <inputAssignments>
1553
+ <field>SiteName__c</field>
1554
+ <value><elementReference>Input_SiteName.value</elementReference></value>
1555
+ </inputAssignments>
1556
+ <inputAssignments>
1557
+ <field>ContactEmail__c</field>
1558
+ <value><elementReference>Input_ContactEmail.value</elementReference></value>
1559
+ </inputAssignments>
1560
+ <inputAssignments>
1561
+ <field>ContactPhone__c</field>
1562
+ <value><elementReference>Input_ContactPhone.value</elementReference></value>
1563
+ </inputAssignments>
1564
+ <inputAssignments>
1565
+ <field>ContactFirstName__c</field>
1566
+ <value><elementReference>Input_ContactName.firstName</elementReference></value>
1567
+ </inputAssignments>
1568
+ <inputAssignments>
1569
+ <field>ContactLastName__c</field>
1570
+ <value><elementReference>Input_ContactName.lastName</elementReference></value>
1571
+ </inputAssignments>
1572
+ <inputAssignments>
1573
+ <field>FloorCount__c</field>
1574
+ <value><elementReference>Input_FloorCount.value</elementReference></value>
1575
+ </inputAssignments>
1576
+ <inputAssignments>
1577
+ <field>VisitDate__c</field>
1578
+ <value><elementReference>Input_VisitDate.value</elementReference></value>
1579
+ </inputAssignments>
1580
+ <inputAssignments>
1581
+ <field>AppointmentTime__c</field>
1582
+ <value><elementReference>Input_AppointmentTime.value</elementReference></value>
1583
+ </inputAssignments>
1584
+ <inputAssignments>
1585
+ <field>IsEmergency__c</field>
1586
+ <value><elementReference>Input_IsEmergency.value</elementReference></value>
1587
+ </inputAssignments>
1588
+ <inputAssignments>
1589
+ <field>AfterHoursAccess__c</field>
1590
+ <value><elementReference>Input_AfterHoursAccess.isActive</elementReference></value>
1591
+ </inputAssignments>
1592
+ <inputAssignments>
1593
+ <field>TechCount__c</field>
1594
+ <value><elementReference>Input_TechCount.value</elementReference></value>
1595
+ </inputAssignments>
1596
+ <inputAssignments>
1597
+ <field>Priority__c</field>
1598
+ <value><elementReference>Input_Priority.selectedChoiceValues</elementReference></value>
1599
+ </inputAssignments>
1600
+ <inputAssignments>
1601
+ <field>VisitStatus__c</field>
1602
+ <value><elementReference>Input_VisitStatus.selectedChoiceValues</elementReference></value>
1603
+ </inputAssignments>
1604
+ <inputAssignments>
1605
+ <field>IssueDescription__c</field>
1606
+ <value><elementReference>Input_IssueDescription.value</elementReference></value>
1607
+ </inputAssignments>
1608
+ <inputAssignments>
1609
+ <field>IssueType__c</field>
1610
+ <value><elementReference>Input_IssueType.selectedChoiceValues</elementReference></value>
1611
+ </inputAssignments>
1612
+ <inputAssignments>
1613
+ <field>AffectedAreas__c</field>
1614
+ <value><elementReference>Input_AffectedAreas.selectedChoiceValues</elementReference></value>
1615
+ </inputAssignments>
1616
+ <inputAssignments>
1617
+ <field>SafetyEquipment__c</field>
1618
+ <value><elementReference>Input_SafetyEquipment.selectedChoiceValues</elementReference></value>
1619
+ </inputAssignments>
1620
+ <inputAssignments>
1621
+ <field>EstimatedHours__c</field>
1622
+ <value><elementReference>Input_EstimatedHours.value</elementReference></value>
1623
+ </inputAssignments>
1624
+ <inputAssignments>
1625
+ <field>PartsStatus__c</field>
1626
+ <value><elementReference>Input_PartsStatus.selectedChoiceValues</elementReference></value>
1627
+ </inputAssignments>
1628
+ <object>CustomForm__c</object>
1629
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1630
+ </recordCreates>
1631
+ <recordCreates>
1632
+ <name>Create_PartFromScreen5</name>
1633
+ <label>Create Part (Screen 5 Repeater row)</label>
1634
+ <locationX>0</locationX>
1635
+ <locationY>0</locationY>
1636
+ <connector>
1637
+ <targetReference>Loop_PartsScreen5</targetReference>
1638
+ </connector>
1639
+ <inputAssignments>
1640
+ <field>CustomForm__c</field>
1641
+ <value><elementReference>v_CustomFormId</elementReference></value>
1642
+ </inputAssignments>
1643
+ <inputAssignments>
1644
+ <field>PartName__c</field>
1645
+ <value><elementReference>Loop_PartsScreen5.Input_PartName.value</elementReference></value>
1646
+ </inputAssignments>
1647
+ <inputAssignments>
1648
+ <field>Quantity__c</field>
1649
+ <value><elementReference>Loop_PartsScreen5.Input_PartQty.value</elementReference></value>
1650
+ </inputAssignments>
1651
+ <object>CustomFormPart__c</object>
1652
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1653
+ </recordCreates>
1654
+ <recordCreates>
1655
+ <name>Create_PartFromScreen5b</name>
1656
+ <label>Create Part (Screen 5b Repeater row)</label>
1657
+ <locationX>0</locationX>
1658
+ <locationY>0</locationY>
1659
+ <connector>
1660
+ <targetReference>Loop_PartsScreen5b</targetReference>
1661
+ </connector>
1662
+ <inputAssignments>
1663
+ <field>CustomForm__c</field>
1664
+ <value><elementReference>v_CustomFormId</elementReference></value>
1665
+ </inputAssignments>
1666
+ <inputAssignments>
1667
+ <field>PartName__c</field>
1668
+ <value><elementReference>Loop_PartsScreen5b.Input_PartNameV2.value</elementReference></value>
1669
+ </inputAssignments>
1670
+ <inputAssignments>
1671
+ <field>Quantity__c</field>
1672
+ <value><elementReference>Loop_PartsScreen5b.Input_PartQtyV2.value</elementReference></value>
1673
+ </inputAssignments>
1674
+ <object>CustomFormPart__c</object>
1675
+ <storeOutputAutomatically>true</storeOutputAutomatically>
1676
+ </recordCreates>
1677
+ <recordUpdates>
1678
+ <name>Update_CustomForm</name>
1679
+ <label>Update CustomForm</label>
1680
+ <locationX>0</locationX>
1681
+ <locationY>0</locationY>
1682
+ <connector>
1683
+ <targetReference>Assign_ExistingFormId</targetReference>
1684
+ </connector>
1685
+ <filterLogic>and</filterLogic>
1686
+ <filters>
1687
+ <field>Id</field>
1688
+ <operator>EqualTo</operator>
1689
+ <value><elementReference>Input_ExistingForm.recordId</elementReference></value>
1690
+ </filters>
1691
+ <inputAssignments>
1692
+ <field>SiteName__c</field>
1693
+ <value><elementReference>Input_SiteName.value</elementReference></value>
1694
+ </inputAssignments>
1695
+ <inputAssignments>
1696
+ <field>ContactEmail__c</field>
1697
+ <value><elementReference>Input_ContactEmail.value</elementReference></value>
1698
+ </inputAssignments>
1699
+ <inputAssignments>
1700
+ <field>ContactPhone__c</field>
1701
+ <value><elementReference>Input_ContactPhone.value</elementReference></value>
1702
+ </inputAssignments>
1703
+ <inputAssignments>
1704
+ <field>ContactFirstName__c</field>
1705
+ <value><elementReference>Input_ContactName.firstName</elementReference></value>
1706
+ </inputAssignments>
1707
+ <inputAssignments>
1708
+ <field>ContactLastName__c</field>
1709
+ <value><elementReference>Input_ContactName.lastName</elementReference></value>
1710
+ </inputAssignments>
1711
+ <inputAssignments>
1712
+ <field>FloorCount__c</field>
1713
+ <value><elementReference>Input_FloorCount.value</elementReference></value>
1714
+ </inputAssignments>
1715
+ <inputAssignments>
1716
+ <field>VisitDate__c</field>
1717
+ <value><elementReference>Input_VisitDate.value</elementReference></value>
1718
+ </inputAssignments>
1719
+ <inputAssignments>
1720
+ <field>AppointmentTime__c</field>
1721
+ <value><elementReference>Input_AppointmentTime.value</elementReference></value>
1722
+ </inputAssignments>
1723
+ <inputAssignments>
1724
+ <field>IsEmergency__c</field>
1725
+ <value><elementReference>Input_IsEmergency.value</elementReference></value>
1726
+ </inputAssignments>
1727
+ <inputAssignments>
1728
+ <field>AfterHoursAccess__c</field>
1729
+ <value><elementReference>Input_AfterHoursAccess.isActive</elementReference></value>
1730
+ </inputAssignments>
1731
+ <inputAssignments>
1732
+ <field>TechCount__c</field>
1733
+ <value><elementReference>Input_TechCount.value</elementReference></value>
1734
+ </inputAssignments>
1735
+ <inputAssignments>
1736
+ <field>Priority__c</field>
1737
+ <value><elementReference>Input_Priority.selectedChoiceValues</elementReference></value>
1738
+ </inputAssignments>
1739
+ <inputAssignments>
1740
+ <field>VisitStatus__c</field>
1741
+ <value><elementReference>Input_VisitStatus.selectedChoiceValues</elementReference></value>
1742
+ </inputAssignments>
1743
+ <inputAssignments>
1744
+ <field>IssueDescription__c</field>
1745
+ <value><elementReference>Input_IssueDescription.value</elementReference></value>
1746
+ </inputAssignments>
1747
+ <inputAssignments>
1748
+ <field>IssueType__c</field>
1749
+ <value><elementReference>Input_IssueType.selectedChoiceValues</elementReference></value>
1750
+ </inputAssignments>
1751
+ <inputAssignments>
1752
+ <field>AffectedAreas__c</field>
1753
+ <value><elementReference>Input_AffectedAreas.selectedChoiceValues</elementReference></value>
1754
+ </inputAssignments>
1755
+ <inputAssignments>
1756
+ <field>SafetyEquipment__c</field>
1757
+ <value><elementReference>Input_SafetyEquipment.selectedChoiceValues</elementReference></value>
1758
+ </inputAssignments>
1759
+ <inputAssignments>
1760
+ <field>EstimatedHours__c</field>
1761
+ <value><elementReference>Input_EstimatedHours.value</elementReference></value>
1762
+ </inputAssignments>
1763
+ <inputAssignments>
1764
+ <field>PartsStatus__c</field>
1765
+ <value><elementReference>Input_PartsStatus.selectedChoiceValues</elementReference></value>
1766
+ </inputAssignments>
1767
+ <object>CustomForm__c</object>
1768
+ </recordUpdates>
1769
+
1770
+ <!-- ══════════════════════════════════════════════════════════
1771
+ LOOPS — iterate each Repeater via .AllItems accessor
1772
+ ══════════════════════════════════════════════════════════ -->
1773
+ <loops>
1774
+ <name>Loop_PartsScreen5</name>
1775
+ <label>Loop over Screen 5 Repeater rows</label>
1776
+ <locationX>0</locationX>
1777
+ <locationY>0</locationY>
1778
+ <collectionReference>Input_PartsRepeater.AllItems</collectionReference>
1779
+ <iterationOrder>Asc</iterationOrder>
1780
+ <nextValueConnector>
1781
+ <targetReference>Create_PartFromScreen5</targetReference>
1782
+ </nextValueConnector>
1783
+ <noMoreValuesConnector>
1784
+ <targetReference>Loop_PartsScreen5b</targetReference>
1785
+ </noMoreValuesConnector>
1786
+ </loops>
1787
+ <loops>
1788
+ <name>Loop_PartsScreen5b</name>
1789
+ <label>Loop over Screen 5b Repeater rows</label>
1790
+ <locationX>0</locationX>
1791
+ <locationY>0</locationY>
1792
+ <collectionReference>Input_PartsRepeaterV2.AllItems</collectionReference>
1793
+ <iterationOrder>Asc</iterationOrder>
1794
+ <nextValueConnector>
1795
+ <targetReference>Create_PartFromScreen5b</targetReference>
1796
+ </nextValueConnector>
1797
+ </loops>
1798
+
1799
+ <!-- ══════════════════════════════════════════════════════════
1800
+ ASSIGNMENTS — form Id capture (then routes into CUD chain)
1801
+ ══════════════════════════════════════════════════════════ -->
1802
+ <assignments>
1803
+ <name>Assign_NewFormId</name>
1804
+ <label>Capture new CustomForm Id</label>
1805
+ <locationX>0</locationX>
1806
+ <locationY>0</locationY>
1807
+ <assignmentItems>
1808
+ <assignToReference>v_CustomFormId</assignToReference>
1809
+ <operator>Assign</operator>
1810
+ <value><elementReference>Create_CustomForm</elementReference></value>
1811
+ </assignmentItems>
1812
+ <connector>
1813
+ <targetReference>Loop_PartsScreen5</targetReference>
1814
+ </connector>
1815
+ </assignments>
1816
+ <assignments>
1817
+ <name>Assign_ExistingFormId</name>
1818
+ <label>Capture existing CustomForm Id</label>
1819
+ <locationX>0</locationX>
1820
+ <locationY>0</locationY>
1821
+ <assignmentItems>
1822
+ <assignToReference>v_CustomFormId</assignToReference>
1823
+ <operator>Assign</operator>
1824
+ <value><elementReference>Input_ExistingForm.recordId</elementReference></value>
1825
+ </assignmentItems>
1826
+ <connector>
1827
+ <targetReference>Loop_PartsScreen5</targetReference>
1828
+ </connector>
1829
+ </assignments>
1830
+
1831
+ <!-- ══════════════════════════════════════════════════════════
1832
+ START
1833
+ ══════════════════════════════════════════════════════════ -->
1834
+ <start>
1835
+ <locationX>0</locationX>
1836
+ <locationY>0</locationY>
1837
+ <connector>
1838
+ <targetReference>Screen_ChooseMode</targetReference>
1839
+ </connector>
1840
+ </start>
1841
+ <status>Active</status>
1842
+
1843
+ <!-- ══════════════════════════════════════════════════════════
1844
+ VARIABLES — required inputs for DataCaptureFlow
1845
+ + internal state (v_*)
1846
+ ══════════════════════════════════════════════════════════ -->
1847
+ <variables>
1848
+ <name>v_CustomFormId</name>
1849
+ <dataType>String</dataType>
1850
+ <isCollection>false</isCollection>
1851
+ <isInput>false</isInput>
1852
+ <isOutput>false</isOutput>
1853
+ </variables>
1854
+ <variables>
1855
+ <name>v_SiteName</name>
1856
+ <dataType>String</dataType>
1857
+ <isCollection>false</isCollection>
1858
+ <isInput>false</isInput>
1859
+ <isOutput>false</isOutput>
1860
+ </variables>
1861
+ <variables>
1862
+ <name>v_ContactEmail</name>
1863
+ <dataType>String</dataType>
1864
+ <isCollection>false</isCollection>
1865
+ <isInput>false</isInput>
1866
+ <isOutput>false</isOutput>
1867
+ </variables>
1868
+ <variables>
1869
+ <name>v_ContactPhone</name>
1870
+ <dataType>String</dataType>
1871
+ <isCollection>false</isCollection>
1872
+ <isInput>false</isInput>
1873
+ <isOutput>false</isOutput>
1874
+ </variables>
1875
+ <variables>
1876
+ <name>v_ContactFirstName</name>
1877
+ <dataType>String</dataType>
1878
+ <isCollection>false</isCollection>
1879
+ <isInput>false</isInput>
1880
+ <isOutput>false</isOutput>
1881
+ </variables>
1882
+ <variables>
1883
+ <name>v_ContactLastName</name>
1884
+ <dataType>String</dataType>
1885
+ <isCollection>false</isCollection>
1886
+ <isInput>false</isInput>
1887
+ <isOutput>false</isOutput>
1888
+ </variables>
1889
+ <variables>
1890
+ <name>v_FloorCount</name>
1891
+ <dataType>Number</dataType>
1892
+ <isCollection>false</isCollection>
1893
+ <isInput>false</isInput>
1894
+ <isOutput>false</isOutput>
1895
+ <scale>0</scale>
1896
+ </variables>
1897
+ <variables>
1898
+ <name>v_SiteAddress</name>
1899
+ <dataType>String</dataType>
1900
+ <isCollection>false</isCollection>
1901
+ <isInput>false</isInput>
1902
+ <isOutput>false</isOutput>
1903
+ </variables>
1904
+ <variables>
1905
+ <name>v_VisitDate</name>
1906
+ <dataType>Date</dataType>
1907
+ <isCollection>false</isCollection>
1908
+ <isInput>false</isInput>
1909
+ <isOutput>false</isOutput>
1910
+ </variables>
1911
+ <variables>
1912
+ <name>v_AppointmentTime</name>
1913
+ <dataType>DateTime</dataType>
1914
+ <isCollection>false</isCollection>
1915
+ <isInput>false</isInput>
1916
+ <isOutput>false</isOutput>
1917
+ </variables>
1918
+ <variables>
1919
+ <name>v_IsEmergency</name>
1920
+ <dataType>Boolean</dataType>
1921
+ <isCollection>false</isCollection>
1922
+ <isInput>false</isInput>
1923
+ <isOutput>false</isOutput>
1924
+ </variables>
1925
+ <variables>
1926
+ <name>v_AfterHoursAccess</name>
1927
+ <dataType>Boolean</dataType>
1928
+ <isCollection>false</isCollection>
1929
+ <isInput>false</isInput>
1930
+ <isOutput>false</isOutput>
1931
+ </variables>
1932
+ <variables>
1933
+ <name>v_TechCount</name>
1934
+ <dataType>Number</dataType>
1935
+ <isCollection>false</isCollection>
1936
+ <isInput>false</isInput>
1937
+ <isOutput>false</isOutput>
1938
+ <scale>0</scale>
1939
+ </variables>
1940
+ <variables>
1941
+ <name>v_Priority</name>
1942
+ <dataType>String</dataType>
1943
+ <isCollection>false</isCollection>
1944
+ <isInput>false</isInput>
1945
+ <isOutput>false</isOutput>
1946
+ </variables>
1947
+ <variables>
1948
+ <name>v_VisitStatus</name>
1949
+ <dataType>String</dataType>
1950
+ <isCollection>false</isCollection>
1951
+ <isInput>false</isInput>
1952
+ <isOutput>false</isOutput>
1953
+ </variables>
1954
+ <variables>
1955
+ <name>v_IssueDescription</name>
1956
+ <dataType>String</dataType>
1957
+ <isCollection>false</isCollection>
1958
+ <isInput>false</isInput>
1959
+ <isOutput>false</isOutput>
1960
+ </variables>
1961
+ <variables>
1962
+ <name>v_IssueType</name>
1963
+ <dataType>String</dataType>
1964
+ <isCollection>false</isCollection>
1965
+ <isInput>false</isInput>
1966
+ <isOutput>false</isOutput>
1967
+ </variables>
1968
+ <variables>
1969
+ <name>v_AffectedAreas</name>
1970
+ <dataType>String</dataType>
1971
+ <isCollection>false</isCollection>
1972
+ <isInput>false</isInput>
1973
+ <isOutput>false</isOutput>
1974
+ </variables>
1975
+ <variables>
1976
+ <name>v_SafetyEquipment</name>
1977
+ <dataType>String</dataType>
1978
+ <isCollection>false</isCollection>
1979
+ <isInput>false</isInput>
1980
+ <isOutput>false</isOutput>
1981
+ </variables>
1982
+ <variables>
1983
+ <name>v_EstimatedHours</name>
1984
+ <dataType>Number</dataType>
1985
+ <isCollection>false</isCollection>
1986
+ <isInput>false</isInput>
1987
+ <isOutput>false</isOutput>
1988
+ <scale>2</scale>
1989
+ </variables>
1990
+ <variables>
1991
+ <name>v_PartsStatus</name>
1992
+ <dataType>String</dataType>
1993
+ <isCollection>false</isCollection>
1994
+ <isInput>false</isInput>
1995
+ <isOutput>false</isOutput>
1996
+ </variables>
1997
+ <variables>
1998
+ <description>Required input for Data Capture flows</description>
1999
+ <name>parentObjectType</name>
2000
+ <dataType>String</dataType>
2001
+ <isCollection>false</isCollection>
2002
+ <isInput>true</isInput>
2003
+ <isOutput>false</isOutput>
2004
+ </variables>
2005
+ <variables>
2006
+ <description>Required input for Data Capture flows</description>
2007
+ <name>parentRecordId</name>
2008
+ <dataType>String</dataType>
2009
+ <isCollection>false</isCollection>
2010
+ <isInput>true</isInput>
2011
+ <isOutput>false</isOutput>
2012
+ </variables>
2013
+ <variables>
2014
+ <description>Required input for Data Capture flows</description>
2015
+ <name>recordId</name>
2016
+ <dataType>String</dataType>
2017
+ <isCollection>false</isCollection>
2018
+ <isInput>true</isInput>
2019
+ <isOutput>false</isOutput>
2020
+ </variables>
2021
+
2022
+ </Flow>