Skip to content

Commit 224210b

Browse files
authored
Merge pull request #22 from srivilliamsai/add-workplace-adjustment-passport
Add Workplace Adjustment & Accessibility Passport Extend app example
2 parents 5d0dbca + 75c3d2d commit 224210b

14 files changed

Lines changed: 725 additions & 0 deletions

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ Community examples, open to everyone. This is the section external contributions
130130
| [`workday-orchestrate-skill`](examples/workday-orchestrate-skill) | A markdown skill that reviews an Orchestrate flow for Maya file shape, expressions, and secrets. | Agent Skill |
131131
| [`workday-pmd-skill`](examples/workday-pmd-skill) | A markdown skill that reviews an Extend page for a security domain, endpoint failures, widget ids, labels, and secrets. | Agent Skill |
132132
| [`workday-skill`](examples/workday-skill) | A markdown skill that chooses which Workday agent skill to apply when a task starts a new app or touches more than one artifact. | Agent Skill |
133+
| [`workplace-adjustment-passport`](examples/workplace-adjustment-passport) | An Extend app with a Home page card, custom business object, and PMD pages that gives employees a confidential, portable accommodation passport that carries forward with them as they change teams or managers. | Extend App |
133134
| [`wql-anniversary-celebrations`](examples/wql-anniversary-celebrations) | An orchestration that queries Workday via WQL for active workers celebrating milestone work anniversaries and formats an announcement digest payload for collaboration channels. | Orchestration |
134135
<!-- examples:end -->
135136

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Workplace Adjustment & Accessibility Passport
2+
3+
## What it is
4+
5+
An Extend application and Workday Home Card that gives employees a confidential, portable **Workplace Adjustment Passport**.
6+
7+
Employees with disabilities, neurodivergent work patterns, chronic medical conditions, or ergonomic requirements often face friction repeatedly disclosing and renegotiating their accommodations whenever they change teams, managers, or office locations.
8+
9+
This solution records approved workplace adjustments (such as assistive software, ergonomic equipment, sensory focus hours, and communication preferences) into a secure custom business object. When an employee transfers, the new manager receives an executive briefing of active accommodations without disclosing sensitive diagnostic or medical records. Employees retain granular consent controls over what information is shared with managers versus kept solely with HR specialists.
10+
11+
## What's inside
12+
13+
- `appManifest.json`: Application metadata definition, reference ID, and version configuration.
14+
- `cards/passportSpotlight.carddefinition`: Workday Home card definition providing 1-click status visibility and quick launch actions.
15+
- `model/WorkplaceAdjustmentPassport.businessobject`: Custom business object schema storing employee references, adjustment categories, equipment specifications, review dates, and manager sharing consent.
16+
- `model/PassportSecurityDomain.securitydomain`: Security domain configuring role-based page and data permissions.
17+
- `model/AdjustmentPassportBP.businessprocess`: Business process definition routing new adjustment submissions for review and acknowledgment.
18+
- `presentation/passport.amd`: Application Metadata Definition registering tasks and routing patterns for worker, request, and manager briefing views.
19+
- `presentation/passport.smd`: Site Metadata Definition configuring authentication and localization.
20+
- `presentation/myPassport.pmd`: Worker self-service landing page displaying active adjustments, privacy safeguards, and renewal timelines.
21+
- `presentation/requestAdjustment.pmd`: Interactive form to record practical accommodations and manage consent.
22+
- `presentation/teamBriefing.pmd`: Manager view summarizing approved team accommodations for smooth onboarding and team collaboration.
23+
- `sample-data/sample-passport-entry.json`: Realistic, sanitized sample records illustrating assistive technology, ergonomic equipment, and flexible schedule entries.
24+
- `example.json`: Metadata file powering the Workday Developer Program gallery.
25+
26+
## How to use it
27+
28+
1. Deploy the app source to your Workday Cloud Platform (WCP) development tenant using App Builder, the Workday CLI (WDCLI), or Local Disk Sync.
29+
2. In your tenant, map `PassportSecurityDomain` to your target security groups (e.g., Employee Self-Service, Manager Self-Service, and HR Workplace Accommodations Partner).
30+
3. Activate the `passportSpotlight` card in your tenant's Workday Home configuration under **Configure Workday Home**.
31+
4. Launch the application from the Home card or the App Launcher to review active adjustments or submit a new workplace accommodation request.
32+
33+
## Before you deploy
34+
35+
Before deploying this example to your target tenant, verify the following configuration points:
36+
37+
- **App reference id**: `workplaceAdjustmentPassport` in `appManifest.json`, `presentation/passport.amd`, and `presentation/passport.smd` is the sample app reference ID. Replace it with the ID generated by your tenant during app creation, or access it dynamically using `site.applicationId` in PMD scripts.
38+
- **Security domains**: Map `PassportSecurityDomain` in `model/PassportSecurityDomain.securitydomain` to your organization's appropriate security groups (e.g., All Workers for employee self-service view, and People Leaders / Managers for the team briefing view).
39+
- **Base URLs**: All PMD endpoints utilize `baseUrlType: "workday-apps"` to resolve your tenant's API gateway without hardcoding tenant URLs or environments.
40+
- **Business Process Routing**: In `model/AdjustmentPassportBP.businessprocess`, ensure the review step is assigned to your organization's designated HR Workplace Accommodations Partner security group.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"id": "e3a89047b1924d55a201f92e6245d81b",
3+
"referenceId": "workplaceAdjustmentPassport",
4+
"name": "WorkplaceAdjustmentPassport",
5+
"description": "Confidential, portable workplace accommodations and adjustments passport for employees and managers.",
6+
"latestVersion": "1.0.0",
7+
"organizationId": "9ff68ed1-68e4-4225-9f3d-68dbf554c38b"
8+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"id": "passportSpotlight",
3+
"presentation": {
4+
"type": "inlineCard",
5+
"header": {
6+
"type": "cardHeader",
7+
"title": "Workplace Adjustment Passport",
8+
"subtitle": "Your active accommodations",
9+
"icon": "wd-accent-shield"
10+
},
11+
"body": {
12+
"type": "simpleCard",
13+
"value": "Access your portable workplace adjustments, manage manager sharing consent, and request new accommodation equipment or scheduling flexibility."
14+
}
15+
}
16+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"title": "Workplace Adjustment & Accessibility Passport",
3+
"description": "An Extend app with a Home page card, custom business object, and PMD pages that gives employees a confidential, portable accommodation passport that carries forward with them as they change teams or managers.",
4+
"type": "Extend App",
5+
"components": [
6+
"Presentation",
7+
"Card",
8+
"Model",
9+
"Business Process"
10+
],
11+
"products": [
12+
"Workday Extend",
13+
"Workday HCM"
14+
],
15+
"authors": [
16+
"srivilliamsai"
17+
],
18+
"tutorial": "",
19+
"source": "community"
20+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"id": 1,
3+
"name": "AdjustmentPassportBP",
4+
"label": "Workplace Adjustment Review Event",
5+
"securityDomain": "PassportSecurityDomain",
6+
"steps": [
7+
{
8+
"order": 1,
9+
"name": "InitiateAdjustmentRequest",
10+
"type": "Initiation",
11+
"assignedTo": "Employee"
12+
},
13+
{
14+
"order": 2,
15+
"name": "AccommodationReviewAndApproval",
16+
"type": "Approval",
17+
"assignedTo": "HR Workplace Accommodations Partner"
18+
},
19+
{
20+
"order": 3,
21+
"name": "ImplementationNotification",
22+
"type": "Notification",
23+
"assignedTo": "Manager"
24+
}
25+
]
26+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"id": 1,
3+
"name": "PassportSecurityDomain",
4+
"enabledForPageSecurity": true,
5+
"enabledForOrchestrationSecurity": true
6+
}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
{
2+
"id": 1,
3+
"name": "WorkplaceAdjustmentPassport",
4+
"label": "Workplace Adjustment Passport",
5+
"defaultSecurityDomains": [
6+
"PassportSecurityDomain"
7+
],
8+
"defaultCollection": {
9+
"name": "workplaceAdjustmentPassports",
10+
"label": "Workplace Adjustment Passports"
11+
},
12+
"fields": [
13+
{
14+
"id": 1,
15+
"name": "workerName",
16+
"type": "TEXT",
17+
"isReferenceId": false,
18+
"useForDisplay": true,
19+
"isPurgeable": false,
20+
"enableIndex": false,
21+
"enableSearch": false
22+
},
23+
{
24+
"id": 2,
25+
"name": "workerId",
26+
"type": "TEXT",
27+
"isReferenceId": false,
28+
"useForDisplay": false,
29+
"isPurgeable": false,
30+
"enableIndex": false,
31+
"enableSearch": false
32+
},
33+
{
34+
"id": 3,
35+
"name": "adjustmentCategory",
36+
"type": "TEXT",
37+
"isReferenceId": false,
38+
"useForDisplay": false,
39+
"isPurgeable": false,
40+
"enableIndex": false,
41+
"enableSearch": false
42+
},
43+
{
44+
"id": 4,
45+
"name": "adjustmentTitle",
46+
"type": "TEXT",
47+
"isReferenceId": false,
48+
"useForDisplay": false,
49+
"isPurgeable": false,
50+
"enableIndex": false,
51+
"enableSearch": false
52+
},
53+
{
54+
"id": 5,
55+
"name": "adjustmentDetails",
56+
"type": "TEXT",
57+
"isReferenceId": false,
58+
"useForDisplay": false,
59+
"isPurgeable": false,
60+
"enableIndex": false,
61+
"enableSearch": false
62+
},
63+
{
64+
"id": 6,
65+
"name": "status",
66+
"type": "TEXT",
67+
"isReferenceId": false,
68+
"useForDisplay": false,
69+
"isPurgeable": false,
70+
"enableIndex": false,
71+
"enableSearch": false
72+
},
73+
{
74+
"id": 7,
75+
"name": "reviewCadenceMonths",
76+
"type": "TEXT",
77+
"isReferenceId": false,
78+
"useForDisplay": false,
79+
"isPurgeable": false,
80+
"enableIndex": false,
81+
"enableSearch": false
82+
},
83+
{
84+
"id": 8,
85+
"name": "lastReviewedDate",
86+
"type": "TEXT",
87+
"isReferenceId": false,
88+
"useForDisplay": false,
89+
"isPurgeable": false,
90+
"enableIndex": false,
91+
"enableSearch": false
92+
},
93+
{
94+
"id": 9,
95+
"name": "managerConsent",
96+
"type": "TEXT",
97+
"isReferenceId": false,
98+
"useForDisplay": false,
99+
"isPurgeable": false,
100+
"enableIndex": false,
101+
"enableSearch": false
102+
},
103+
{
104+
"id": 10,
105+
"name": "supportContact",
106+
"type": "TEXT",
107+
"isReferenceId": false,
108+
"useForDisplay": false,
109+
"isPurgeable": false,
110+
"enableIndex": false,
111+
"enableSearch": false
112+
}
113+
]
114+
}
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
{
2+
"id": "myPassport",
3+
"securityDomains": [
4+
"PassportSecurityDomain"
5+
],
6+
"endPoints": [
7+
{
8+
"name": "passportsData",
9+
"baseUrlType": "workday-apps",
10+
"url": "<% `/apps/{{site.applicationId}}/v1/workplaceAdjustmentPassports` %>",
11+
"authType": "sso",
12+
"failOnStatusCodes": [
13+
{
14+
"code": 400
15+
},
16+
{
17+
"code": 403
18+
}
19+
]
20+
}
21+
],
22+
"presentation": {
23+
"headerSize": "VPS_DEFAULT",
24+
"title": {
25+
"type": "title",
26+
"id": "passportTitle",
27+
"label": "My Workplace Adjustment Passport"
28+
},
29+
"body": {
30+
"type": "section",
31+
"id": "mainSection",
32+
"children": [
33+
{
34+
"type": "text",
35+
"id": "passportMissionText",
36+
"value": "Your Workplace Adjustment Passport is a confidential record of approved workplace accommodations, assistive technology, and flexible working arrangements. When you transfer teams or report to a new manager, your adjustments travel with you so you don't have to re-explain your requirements."
37+
},
38+
{
39+
"type": "section",
40+
"id": "actionButtonBar",
41+
"horizontal": true,
42+
"children": [
43+
{
44+
"type": "button",
45+
"id": "requestNewBtn",
46+
"label": "Request New Adjustment",
47+
"action": "PRIMARY",
48+
"task": "requestAdjustment"
49+
},
50+
{
51+
"type": "button",
52+
"id": "viewManagerBriefingBtn",
53+
"label": "Preview Manager Briefing View",
54+
"action": "SECONDARY",
55+
"task": "teamBriefing"
56+
}
57+
]
58+
},
59+
{
60+
"type": "section",
61+
"id": "privacyGuaranteeCallout",
62+
"children": [
63+
{
64+
"type": "text",
65+
"id": "privacyCalloutHeader",
66+
"value": "🔒 Confidentiality & Privacy Notice: Diagnostic and medical information is never requested, collected, or displayed in this passport. Only practical accommodations needed for your day-to-day productivity are recorded."
67+
}
68+
]
69+
},
70+
{
71+
"type": "grid",
72+
"id": "adjustmentsGrid",
73+
"label": "Active Workplace Adjustments",
74+
"rows": "<% passportsData.data %>",
75+
"rowVariableName": "item",
76+
"columns": [
77+
{
78+
"type": "column",
79+
"id": "categoryCol",
80+
"columnId": "categoryColId",
81+
"label": "Category",
82+
"cellTemplate": {
83+
"type": "text",
84+
"id": "categoryCell",
85+
"value": "<% item.adjustmentCategory %>"
86+
}
87+
},
88+
{
89+
"type": "column",
90+
"id": "titleCol",
91+
"columnId": "titleColId",
92+
"label": "Adjustment Title",
93+
"cellTemplate": {
94+
"type": "text",
95+
"id": "titleCell",
96+
"value": "<% item.adjustmentTitle %>"
97+
}
98+
},
99+
{
100+
"type": "column",
101+
"id": "detailsCol",
102+
"columnId": "detailsColId",
103+
"label": "Details & Equipment",
104+
"cellTemplate": {
105+
"type": "text",
106+
"id": "detailsCell",
107+
"value": "<% item.adjustmentDetails %>"
108+
}
109+
},
110+
{
111+
"type": "column",
112+
"id": "cadenceCol",
113+
"columnId": "cadenceColId",
114+
"label": "Review Cadence",
115+
"cellTemplate": {
116+
"type": "text",
117+
"id": "cadenceCell",
118+
"value": "<% item.reviewCadenceMonths %>"
119+
}
120+
},
121+
{
122+
"type": "column",
123+
"id": "consentCol",
124+
"columnId": "consentColId",
125+
"label": "Manager Sharing",
126+
"cellTemplate": {
127+
"type": "text",
128+
"id": "consentCell",
129+
"value": "<% item.managerConsent %>"
130+
}
131+
},
132+
{
133+
"type": "column",
134+
"id": "statusCol",
135+
"columnId": "statusColId",
136+
"label": "Status",
137+
"cellTemplate": {
138+
"type": "text",
139+
"id": "statusCell",
140+
"value": "<% item.status %>"
141+
}
142+
}
143+
]
144+
}
145+
]
146+
}
147+
}
148+
}

0 commit comments

Comments
 (0)