diff --git a/workflows/fasttrack-identity-onboarding/FastTrackUserOnboarding.json b/workflows/fasttrack-identity-onboarding/FastTrackUserOnboarding.json
new file mode 100644
index 0000000..b4d35bb
--- /dev/null
+++ b/workflows/fasttrack-identity-onboarding/FastTrackUserOnboarding.json
@@ -0,0 +1,120 @@
+{
+ "name": "Fast Track User Onboarding",
+ "description": "Fast Track User Onboarding Workflow",
+ "definition": {
+ "start": "Wait",
+ "steps": {
+ "Define Variable": {
+ "attributes": {
+ "id": "sp:define-variable",
+ "variables": [
+ {
+ "description": "Start Date",
+ "name": "Start Date",
+ "transforms": [
+ {
+ "id": "sp:transform:substring:string",
+ "input": {
+ "length": 10,
+ "start": 0
+ }
+ }
+ ],
+ "variableA.$": "$.form.formData.startDate"
+ }
+ ]
+ },
+ "nextStep": "Send Email",
+ "type": "Mutation"
+ },
+ "End Step — Success": {
+ "type": "success"
+ },
+ "Form": {
+ "actionId": "sp:forms",
+ "attributes": {
+ "deadline": "7d",
+ "formDefinitionId": "5e1810c7-cf38-4d1a-bedf-e6326248840f",
+ "inputForForm_email.$": "$.trigger.attributes.email",
+ "inputForForm_employeeName.$": "$.trigger.attributes.displayName",
+ "inputForForm_employeeNumber.$": "$.trigger.attributes.employeeNumber",
+ "inputForForm_phone.$": "$.trigger.attributes.phone",
+ "inputForForm_startDate.$": "$.trigger.attributes.startDate",
+ "inputForForm_userType": "true",
+ "notificationBody": "Hello,
Please fill out the form below for {{$.trigger.identity.name}}. It includes the additional information required by IT for hardware procurement.
Regards,
IT Team",
+ "notificationSubject": "ATTN : Please fill in onboarding information for - {{$.$.trigger.attributes.displayName}}",
+ "recipient.$": "$.trigger.attributes.manager.id",
+ "reminder": "2d",
+ "reminderBody": "Hello,
Please fill out the form below for {{$.trigger.identity.name}}. It includes the additional information required by IT for hardware procurement.
Regards,
IT Team"
+ },
+ "description": "User Onboarding form",
+ "nextStep": "Get Identity",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Get Identity": {
+ "actionId": "sp:get-identity",
+ "attributes": {
+ "id.$": "$.trigger.attributes.manager.id"
+ },
+ "description": "Get Identity Manager",
+ "nextStep": "Define Variable",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Send Email": {
+ "actionId": "sp:send-email",
+ "attributes": {
+ "body": "Hi,
\nThank you for filing out the Additional Information for user ${employeeName}.
\nPersonal Details
\nEmployee Name - ${employeeName}
\nEmployee Number - ${employeeNumber}
\nUser Type - #if( ${userType} == 'true')Full Time#{else}Part Time#end
\nPhone - ${phone}
\nEmail - ${email}
\nStart Date - ${startDate}
\nLocation
\nLocation - ${location}
\n#if(${city})
City - ${city}
#end\n
IT Requests
\nPreferred Laptop - ${preferredLaptop}
\n#if($preferredLaptop == 'Windows')Windows OS - ${windowsOsVersion}
#end\n#if($preferredLaptop == 'Linux')Linux OS - ${linuxOs}
#end
\nRequire Access to Applications :
\nSiebel Client - #if( ${siebel} == 'true')Yes#{else}No#end
\nOracle - #if( ${oracle} == 'true')Yes#{else}No#end
\nEclipse IDE - #if( ${eclipse} == 'true')Yes#{else}No#end
\nAdobe Acrobat - #if( ${acrobat} == 'true')Yes#{else}No#end
\nAdobe Photoshop - #if( ${photoshop} == 'true')Yes#{else}No#end
\nMicrosoft Powerpoint - #if( ${powerpoint} == 'true')Yes#{else}No#end
\nAdditional Requests - #if($additionalRequests)${additionalRequests}#{else}None#end
\nAdditional Roles Requested: \n#if($roles)Yes#{else}No#end
\nThank you,
\nIAM Team
",
+ "context": {
+ "acrobat.$": "$.form.formData.acrobat",
+ "additionalRequests.$": "$.form.formData.additionalRequests",
+ "city.$": "$.form.formData.city",
+ "eclipse.$": "$.form.formData.eclipse",
+ "email.$": "$.form.formData.email",
+ "employeeName.$": "$.form.formData.employeeName",
+ "employeeNumber.$": "$.form.formData.employeeNumber",
+ "linuxOs.$": "$.form.formData.linuxOs",
+ "location.$": "$.form.formData.location",
+ "oracle.$": "$.form.formData.oracle",
+ "phone.$": "$.form.formData.phone",
+ "photoshop.$": "$.form.formData.photoshop",
+ "powerpoint.$": "$.form.formData.powerpoint",
+ "preferredLaptop.$": "$.form.formData.preferredLaptop",
+ "roles.$": "$.form.formData.roles",
+ "siebel.$": "$.form.formData.siebel",
+ "startDate.$": "$.defineVariable.startDate",
+ "userType.$": "$.form.formData.userType",
+ "windowsOsVersion.$": "$.form.formData.windowsOsVersion"
+ },
+ "from": null,
+ "recipientEmailList.$": "$.getIdentity.attributes.email",
+ "replyTo.$": "",
+ "subject": "User Onboarding Form Submission Complete"
+ },
+ "description": "Send Email Notification To Manager",
+ "nextStep": "End Step — Success",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Wait": {
+ "actionId": "sp:sleep",
+ "attributes": {
+ "duration": "1m",
+ "type": "waitFor"
+ },
+ "displayName": "",
+ "nextStep": "Form",
+ "type": "action",
+ "versionNumber": 1
+ }
+ }
+ },
+ "trigger": {
+ "type": "EVENT",
+ "attributes": {
+ "description": "Identity Created",
+ "id": "idn:identity-created"
+ }
+ }
+}
\ No newline at end of file
diff --git a/workflows/fasttrack-identity-onboarding/README.md b/workflows/fasttrack-identity-onboarding/README.md
new file mode 100644
index 0000000..fe9150f
--- /dev/null
+++ b/workflows/fasttrack-identity-onboarding/README.md
@@ -0,0 +1,18 @@
+Fast Track Identity Onboarding
+
+These workflows will help you fast track Identity onboarding in Identity Security Cloud.
+
+Workflow 1 - FastTrackUserOnboarding.json
+ Sends a form (User Onboarding Form.json) to the manager to collect information and sends back email notification with response.
+
+Workflow 2 - UserOnboardingServiceNowRequests.json
+ Receives form submitted by manager and based on the repsonse, creates Service Now ticket
+
+Workflow 3 - UserOnboardingAssignRoles.json
+ Receives form submitted by manager and based on the repsonse, requests roles for the user.
+
+
+For more details about this form and workflow please refer to the blog here:
+https://developer.sailpoint.com/discuss/t/fast-track-identity-onboarding/50793
+
+PS - To import the form into your tenant you may have to remove the image tags from it.
\ No newline at end of file
diff --git a/workflows/fasttrack-identity-onboarding/User Onboarding Form.json b/workflows/fasttrack-identity-onboarding/User Onboarding Form.json
new file mode 100644
index 0000000..08218c9
--- /dev/null
+++ b/workflows/fasttrack-identity-onboarding/User Onboarding Form.json
@@ -0,0 +1,883 @@
+{
+ "name": "Cybersolve User Onboarding",
+ "description": "New User Onboarding Form to collect additional information for user provisioning",
+ "owner": {
+ "type": "IDENTITY",
+ "id": "56e4dc7ef18a45008921c911a239025c"
+ },
+ "usedBy": [
+ {
+ "type": "MySailPoint",
+ "id": "MySailPoint"
+ },
+ {
+ "type": "WORKFLOW",
+ "id": "9f32d3fb-d49f-4c36-9bec-a477ad68d57a"
+ }
+ ],
+ "formInput": [
+ {
+ "id": "employeeName",
+ "type": "STRING",
+ "label": "Employee Name",
+ "description": "Employee Name"
+ },
+ {
+ "id": "employeeNumber",
+ "type": "STRING",
+ "label": "Employee Number",
+ "description": "Employee Number"
+ },
+ {
+ "id": "userType",
+ "type": "STRING",
+ "label": "User Type",
+ "description": "User Type"
+ },
+ {
+ "id": "phone",
+ "type": "STRING",
+ "label": "Phone",
+ "description": "Phone"
+ },
+ {
+ "id": "email",
+ "type": "STRING",
+ "label": "Email",
+ "description": "Email"
+ },
+ {
+ "id": "startDate",
+ "type": "STRING",
+ "label": "Start Date",
+ "description": "Start Date"
+ }
+ ],
+ "formElements": [
+ {
+ "id": "1684040207998",
+ "elementType": "SECTION",
+ "config": {
+ "alignment": "CENTER",
+ "description": "Full Time and Part Time Employee Information",
+ "formElements": [
+ {
+ "config": {
+ "alignment": "CENTER",
+ "altText": "CyberSolve",
+ "fileId": "01HPZXB6GH6DT1GMT3NTWQT1PC.png",
+ "label": "Logo",
+ "mimeType": "image/png",
+ "originalFilename": "logo-consider-it-solved.png",
+ "showLabel": false
+ },
+ "elementType": "IMAGE",
+ "id": "128379913052",
+ "key": "",
+ "validations": []
+ },
+ {
+ "config": {
+ "description": "
Please enter the information on this form to help accelerate user onboarding process
",
+ "label": "Description Field",
+ "showLabel": false
+ },
+ "elementType": "DESCRIPTION",
+ "id": "236874197365",
+ "key": "",
+ "validations": []
+ },
+ {
+ "config": {
+ "columnCount": 2,
+ "columns": [
+ [
+ {
+ "config": {
+ "default": "",
+ "description": "",
+ "helpText": "",
+ "label": "Employee Name",
+ "placeholder": "John Doe",
+ "required": true
+ },
+ "elementType": "TEXT",
+ "id": "1429005651615",
+ "key": "employeeName",
+ "validations": [
+ {
+ "validationType": "REQUIRED"
+ }
+ ]
+ },
+ {
+ "config": {
+ "default": "",
+ "description": "",
+ "helpText": "",
+ "label": "Employee Number",
+ "placeholder": "12345678",
+ "required": true
+ },
+ "elementType": "TEXT",
+ "id": "1671045461835",
+ "key": "employeeNumber",
+ "validations": [
+ {
+ "validationType": "REQUIRED"
+ },
+ {
+ "config": {
+ "min": 5
+ },
+ "validationType": "MIN_LENGTH"
+ },
+ {
+ "config": {
+ "max": 10
+ },
+ "validationType": "MAX_LENGTH"
+ }
+ ]
+ },
+ {
+ "config": {
+ "default": true,
+ "falseLabel": "Part Time",
+ "helpText": "Full Time employee or a Part Time employee?",
+ "label": "User Type",
+ "trueLabel": "Full Time"
+ },
+ "elementType": "TOGGLE",
+ "id": "1609723929797",
+ "key": "userType",
+ "validations": []
+ }
+ ],
+ [
+ {
+ "config": {
+ "default": "",
+ "description": "",
+ "formatAsYouType": true,
+ "helpText": "",
+ "internationalized": true,
+ "label": "Phone",
+ "placeholder": "",
+ "required": false
+ },
+ "elementType": "PHONE",
+ "id": "1515015928726",
+ "key": "phone",
+ "validations": [
+ {
+ "validationType": "PHONE"
+ }
+ ]
+ },
+ {
+ "config": {
+ "default": "",
+ "description": "",
+ "helpText": "",
+ "label": "Email",
+ "placeholder": "john.doe@gmail.com",
+ "required": false
+ },
+ "elementType": "EMAIL",
+ "id": "701850857199",
+ "key": "email",
+ "validations": [
+ {
+ "validationType": "EMAIL"
+ }
+ ]
+ },
+ {
+ "config": {
+ "default": "",
+ "description": "",
+ "helpText": "",
+ "label": "Start Date",
+ "placeholder": "04-01-2023",
+ "required": false
+ },
+ "elementType": "TEXT",
+ "id": "993043223809",
+ "key": "startDate",
+ "validations": []
+ }
+ ]
+ ],
+ "description": "",
+ "label": "Employee Information",
+ "labelStyle": "h5",
+ "showLabel": true
+ },
+ "elementType": "COLUMN_SET",
+ "id": "255820385363",
+ "key": "",
+ "validations": []
+ },
+ {
+ "config": {
+ "dataSource": {
+ "config": {
+ "options": [
+ {
+ "label": "Virginia Office",
+ "subLabel": "",
+ "value": "Virginia Office"
+ },
+ {
+ "label": "Texas Office",
+ "subLabel": "",
+ "value": "Texas Office"
+ },
+ {
+ "label": "Boston Office",
+ "subLabel": "",
+ "value": "Boston Office"
+ },
+ {
+ "label": "Remote",
+ "subLabel": "",
+ "value": "Remote"
+ }
+ ]
+ },
+ "dataSourceType": "STATIC"
+ },
+ "forceSelect": true,
+ "helpText": "Primary Work Location of employee",
+ "label": "Location",
+ "maximum": 1,
+ "placeholder": "Office",
+ "required": false
+ },
+ "elementType": "SELECT",
+ "id": "925801422871",
+ "key": "location",
+ "validations": [
+ {
+ "validationType": "DATA_SOURCE"
+ }
+ ]
+ },
+ {
+ "config": {
+ "dataSource": {
+ "config": {
+ "aggregationBucketField": "attributes.city.exact",
+ "indices": [
+ "identities"
+ ],
+ "query": "attributes.cloudLifecycleState:active"
+ },
+ "dataSourceType": "SEARCH"
+ },
+ "forceSelect": true,
+ "helpText": "",
+ "label": "City",
+ "maximum": 1,
+ "placeholder": "",
+ "required": false
+ },
+ "elementType": "SELECT",
+ "id": "1664914974591",
+ "key": "city",
+ "validations": []
+ }
+ ],
+ "label": "User Onboarding Form",
+ "labelStyle": "h2",
+ "showLabel": false
+ },
+ "validations": []
+ },
+ {
+ "id": "1337327807775",
+ "elementType": "SECTION",
+ "config": {
+ "alignment": "LEFT",
+ "description": "Please select the hardware options",
+ "formElements": [
+ {
+ "config": {
+ "dataSource": {
+ "config": {
+ "options": [
+ {
+ "label": "Windows",
+ "subLabel": "",
+ "value": "Windows"
+ },
+ {
+ "label": "Mac",
+ "subLabel": "",
+ "value": "Mac"
+ },
+ {
+ "label": "Linux",
+ "subLabel": "",
+ "value": "Linux"
+ },
+ {
+ "label": "Chromebook",
+ "subLabel": "",
+ "value": "Chromebook"
+ }
+ ]
+ },
+ "dataSourceType": "STATIC"
+ },
+ "forceSelect": true,
+ "helpText": "Choose a preferred Laptop Type",
+ "label": "Preferred Laptop",
+ "maximum": 1,
+ "placeholder": "Laptop",
+ "required": false
+ },
+ "elementType": "SELECT",
+ "id": "373090611599",
+ "key": "preferredLaptop",
+ "validations": []
+ },
+ {
+ "config": {
+ "dataSource": {
+ "config": {
+ "options": [
+ {
+ "label": "Windows 10",
+ "subLabel": "",
+ "value": "Windows 10"
+ },
+ {
+ "label": "Windows 11",
+ "subLabel": "",
+ "value": "Windows 11"
+ }
+ ]
+ },
+ "dataSourceType": "STATIC"
+ },
+ "forceSelect": true,
+ "helpText": "Please select the Windows OS Version",
+ "label": "Windows OS Version",
+ "maximum": 1,
+ "placeholder": "Windows 10",
+ "required": false
+ },
+ "elementType": "SELECT",
+ "id": "384477034392",
+ "key": "windowsOsVersion",
+ "validations": []
+ },
+ {
+ "config": {
+ "dataSource": {
+ "config": {
+ "options": [
+ {
+ "label": "Ubuntu",
+ "subLabel": "",
+ "value": "Ubuntu"
+ },
+ {
+ "label": "Fedora",
+ "subLabel": "",
+ "value": "Fedora"
+ },
+ {
+ "label": "RHEL",
+ "subLabel": "",
+ "value": "RHEL"
+ }
+ ]
+ },
+ "dataSourceType": "STATIC"
+ },
+ "forceSelect": true,
+ "helpText": "Please select the Linux OS",
+ "label": "Linux OS",
+ "maximum": 1,
+ "placeholder": "Ubuntu",
+ "required": false
+ },
+ "elementType": "SELECT",
+ "id": "189407976938",
+ "key": "linuxOs",
+ "validations": []
+ },
+ {
+ "config": {
+ "columnCount": 2,
+ "columns": [
+ [
+ {
+ "config": {
+ "default": false,
+ "falseLabel": "No",
+ "helpText": "",
+ "label": "Siebel Client",
+ "trueLabel": "Yes"
+ },
+ "elementType": "TOGGLE",
+ "id": "96112758113",
+ "key": "siebel",
+ "validations": []
+ },
+ {
+ "config": {
+ "default": false,
+ "falseLabel": "No",
+ "helpText": "",
+ "label": "Oracle",
+ "trueLabel": "Yes"
+ },
+ "elementType": "TOGGLE",
+ "id": "973789489229",
+ "key": "oracle",
+ "validations": []
+ },
+ {
+ "config": {
+ "default": false,
+ "falseLabel": "No",
+ "helpText": "",
+ "label": "Eclipse IDE",
+ "trueLabel": "Yes"
+ },
+ "elementType": "TOGGLE",
+ "id": "138255766474",
+ "key": "eclipse",
+ "validations": []
+ }
+ ],
+ [
+ {
+ "config": {
+ "default": false,
+ "falseLabel": "No",
+ "helpText": "",
+ "label": "Adobe Acrobat",
+ "trueLabel": "Yes"
+ },
+ "elementType": "TOGGLE",
+ "id": "224544041115",
+ "key": "acrobat",
+ "validations": []
+ },
+ {
+ "config": {
+ "default": false,
+ "falseLabel": "No",
+ "helpText": "",
+ "label": "Adobe Photoshop",
+ "trueLabel": "Yes"
+ },
+ "elementType": "TOGGLE",
+ "id": "1564902885354",
+ "key": "photoshop",
+ "validations": []
+ },
+ {
+ "config": {
+ "default": false,
+ "falseLabel": "No",
+ "helpText": "",
+ "label": "Microsoft Powerpoint",
+ "trueLabel": "Yes"
+ },
+ "elementType": "TOGGLE",
+ "id": "631636696630",
+ "key": "powerpoint",
+ "validations": []
+ }
+ ]
+ ],
+ "description": "",
+ "label": "Require Access to Applications",
+ "labelStyle": "h5",
+ "showLabel": true
+ },
+ "elementType": "COLUMN_SET",
+ "id": "96610211858",
+ "key": "",
+ "validations": []
+ },
+ {
+ "config": {
+ "default": "",
+ "description": "",
+ "helpText": "",
+ "label": "Additional Requests",
+ "placeholder": "Please provide information about any additional requests",
+ "required": false,
+ "resize": false,
+ "rows": 2
+ },
+ "elementType": "TEXTAREA",
+ "id": "1422617803725",
+ "key": "additionalRequests",
+ "validations": []
+ }
+ ],
+ "label": "IT Resources",
+ "labelStyle": "h5",
+ "showLabel": true
+ },
+ "validations": []
+ },
+ {
+ "id": "1673574343463",
+ "elementType": "SECTION",
+ "config": {
+ "alignment": "LEFT",
+ "description": "Please select any additional roles/groups that should be assigned to the user",
+ "formElements": [
+ {
+ "config": {
+ "dataSource": {
+ "config": {
+ "objectType": "ROLE"
+ },
+ "dataSourceType": "INTERNAL"
+ },
+ "forceSelect": true,
+ "helpText": "",
+ "label": "Roles",
+ "maximum": 3,
+ "placeholder": "Select Role",
+ "required": false
+ },
+ "elementType": "SELECT",
+ "id": "542277159769",
+ "key": "roles",
+ "validations": [
+ {
+ "validationType": "DATA_SOURCE"
+ }
+ ]
+ }
+ ],
+ "label": "Additional Roles",
+ "labelStyle": "h2",
+ "showLabel": true
+ },
+ "validations": []
+ }
+ ],
+ "formConditions": [
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "INPUT",
+ "source": "Employee Number",
+ "operator": "NOT_EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "SET_DEFAULT_VALUE",
+ "config": {
+ "defaultValueLabel": "Employee Number",
+ "element": "1671045461835"
+ }
+ },
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "1671045461835"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "INPUT",
+ "source": "Employee Name",
+ "operator": "NOT_EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "SET_DEFAULT_VALUE",
+ "config": {
+ "defaultValueLabel": "Employee Name",
+ "element": "1429005651615"
+ }
+ },
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "1429005651615"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "INPUT",
+ "source": "User Type",
+ "operator": "NOT_EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "1609723929797"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "INPUT",
+ "source": "Phone",
+ "operator": "NOT_EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "1515015928726"
+ }
+ },
+ {
+ "effectType": "SET_DEFAULT_VALUE",
+ "config": {
+ "defaultValueLabel": "Phone",
+ "element": "1515015928726"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "INPUT",
+ "source": "Email",
+ "operator": "NOT_EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "701850857199"
+ }
+ },
+ {
+ "effectType": "SET_DEFAULT_VALUE",
+ "config": {
+ "defaultValueLabel": "Email",
+ "element": "701850857199"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "INPUT",
+ "source": "Start Date",
+ "operator": "NOT_EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "993043223809"
+ }
+ },
+ {
+ "effectType": "SET_DEFAULT_VALUE",
+ "config": {
+ "defaultValueLabel": "Start Date",
+ "element": "993043223809"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "ELEMENT",
+ "source": "userType",
+ "operator": "EQ",
+ "valueType": "BOOLEAN",
+ "value": "false"
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "HIDE",
+ "config": {
+ "element": "1337327807775"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "ELEMENT",
+ "source": "location",
+ "operator": "NOT_CO",
+ "valueType": "STRING",
+ "value": "Remote"
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "1664914974591"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "AND",
+ "rules": [
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "HIDE",
+ "config": {
+ "element": "96610211858"
+ }
+ },
+ {
+ "effectType": "HIDE",
+ "config": {
+ "element": "1422617803725"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "OR",
+ "rules": [
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EQ",
+ "valueType": "STRING",
+ "value": "Linux"
+ },
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EQ",
+ "valueType": "STRING",
+ "value": "Mac"
+ },
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EQ",
+ "valueType": "STRING",
+ "value": "Chromebook"
+ },
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "HIDE",
+ "config": {
+ "element": "384477034392"
+ }
+ }
+ ]
+ },
+ {
+ "ruleOperator": "OR",
+ "rules": [
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EQ",
+ "valueType": "STRING",
+ "value": "Windows"
+ },
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EQ",
+ "valueType": "STRING",
+ "value": "Mac"
+ },
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EQ",
+ "valueType": "STRING",
+ "value": "Chromebook"
+ },
+ {
+ "sourceType": "ELEMENT",
+ "source": "preferredLaptop",
+ "operator": "EM",
+ "valueType": "STRING",
+ "value": ""
+ }
+ ],
+ "effects": [
+ {
+ "effectType": "HIDE",
+ "config": {
+ "element": "189407976938"
+ }
+ },
+ {
+ "effectType": "DISABLE",
+ "config": {
+ "element": "189407976938"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/workflows/fasttrack-identity-onboarding/UserOnboardingAssignRoles.json b/workflows/fasttrack-identity-onboarding/UserOnboardingAssignRoles.json
new file mode 100644
index 0000000..af4046b
--- /dev/null
+++ b/workflows/fasttrack-identity-onboarding/UserOnboardingAssignRoles.json
@@ -0,0 +1,85 @@
+{
+ "name": "User Onboarding Assign Roles",
+ "description": "User Onboarding Assign Roles to a user via Forms Selection",
+ "definition": {
+ "start": "Verify Data Type",
+ "steps": {
+ "End Step — Success": {
+ "type": "success"
+ },
+ "Get Identity": {
+ "actionId": "sp:get-identity",
+ "attributes": {
+ "id.$": "$.getListOfIdentities.identities[0].id"
+ },
+ "nextStep": "Loop",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Get List of Identities": {
+ "actionId": "sp:get-identities",
+ "attributes": {
+ "inputQuery": "attributes.identificationNumber.exact:{{$.trigger.formData.employeeNumber}}",
+ "searchBy": "searchQuery"
+ },
+ "nextStep": "Get Identity",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Loop": {
+ "actionId": "sp:loop:iterator",
+ "attributes": {
+ "context.$": "$.getIdentity",
+ "input.$": "$.trigger.formData.roles",
+ "start": "Manage Access",
+ "steps": {
+ "End Step — Success 1": {
+ "type": "success"
+ },
+ "Manage Access": {
+ "actionId": "sp:access:manage",
+ "attributes": {
+ "addIdentities.$": "$.loop.context.id",
+ "comments": "Providing additional access as requested by manager",
+ "removeIdentity.$": "$.getIdentity.id",
+ "requestType": "GRANT_ACCESS",
+ "requestedItems": [
+ {
+ "id": "{{$.loop.loopInput}}",
+ "type": "ROLE"
+ }
+ ]
+ },
+ "nextStep": "End Step — Success 1",
+ "type": "action",
+ "versionNumber": 1
+ }
+ }
+ },
+ "nextStep": "End Step — Success",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Verify Data Type": {
+ "choiceList": [
+ {
+ "comparator": "IsPresent",
+ "nextStep": "Get List of Identities",
+ "variableA.$": "$.trigger.formData.roles"
+ }
+ ],
+ "defaultStep": "End Step — Success",
+ "description": "Verify Roles have been selected by manager",
+ "displayName": "",
+ "type": "choice"
+ }
+ }
+ },
+ "trigger": {
+ "type": "EVENT",
+ "attributes": {
+ "formDefinitionId": "5e1810c7-cf38-4d1a-bedf-e6326248840f",
+ "id": "sp:form-submitted"
+ }
+ }
+}
\ No newline at end of file
diff --git a/workflows/fasttrack-identity-onboarding/UserOnboardingServiceNowRequests.json b/workflows/fasttrack-identity-onboarding/UserOnboardingServiceNowRequests.json
new file mode 100644
index 0000000..2e334e2
--- /dev/null
+++ b/workflows/fasttrack-identity-onboarding/UserOnboardingServiceNowRequests.json
@@ -0,0 +1,490 @@
+{
+ "name": "User Onboarding Service Now Requests",
+ "description": "User Onboarding Service Now Requests",
+ "definition": {
+ "start": "Get Identity",
+ "steps": {
+ "Compare Numbers": {
+ "choiceList": [
+ {
+ "comparator": "NumericEquals",
+ "nextStep": "Send Email",
+ "variableA.$": "$.manageServiceNowTicket.statusCode",
+ "variableB": 201
+ }
+ ],
+ "defaultStep": "Send Email 3",
+ "description": "Check Manage Service Now Ticket action completed successfully",
+ "type": "choice"
+ },
+ "Compare Strings": {
+ "choiceList": [
+ {
+ "comparator": "StringEquals",
+ "nextStep": "Send Email 1",
+ "variableA.$": "$.manageServiceNowTicket1.body.result[?(@.task_effective_number=='{{$.manageServiceNowTicket.body.result.task_effective_number}}')].request_state",
+ "variableB": "closed_complete"
+ }
+ ],
+ "defaultStep": "Send Email 2",
+ "description": null,
+ "type": "choice"
+ },
+ "Compare Strings 1": {
+ "choiceList": [
+ {
+ "comparator": "StringEquals",
+ "nextStep": "Manage ServiceNow Ticket 2",
+ "variableA.$": "$.trigger.formData.preferredLaptop",
+ "variableB": "Windows"
+ }
+ ],
+ "defaultStep": "Compare Strings 2",
+ "description": "Windows Laptop",
+ "displayName": "",
+ "type": "choice"
+ },
+ "Compare Strings 2": {
+ "choiceList": [
+ {
+ "comparator": "StringEquals",
+ "nextStep": "Manage ServiceNow Ticket 3",
+ "variableA.$": "$.trigger.formData.preferredLaptop",
+ "variableB": "Linux"
+ }
+ ],
+ "defaultStep": "Manage ServiceNow Ticket",
+ "description": "Linux Laptop",
+ "displayName": "",
+ "type": "choice"
+ },
+ "Define Variable": {
+ "attributes": {
+ "id": "sp:define-variable",
+ "variables": [
+ {
+ "description": "Calculate Ticket Due Date",
+ "name": "ticketDueDate",
+ "transforms": [
+ {
+ "id": "sp:transform:substring:string",
+ "input": {
+ "length": 10,
+ "start": 0
+ }
+ }
+ ],
+ "variableA.$": "$.now()"
+ }
+ ]
+ },
+ "displayName": "",
+ "nextStep": "Get Accounts",
+ "type": "Mutation"
+ },
+ "Define Variable 1": {
+ "attributes": {
+ "id": "sp:define-variable",
+ "variables": [
+ {
+ "description": "Account ID",
+ "name": "accountID",
+ "transforms": [
+ {
+ "id": "sp:transform:substring:string",
+ "input": {
+ "length": 32,
+ "start": 0
+ }
+ }
+ ],
+ "variableA.$": "$.getAccounts.accounts[?(@.attributes.name=='{{$.trigger.formData.employeeName}}')].nativeIdentity"
+ }
+ ]
+ },
+ "displayName": "",
+ "nextStep": "Define Variable 2",
+ "type": "Mutation"
+ },
+ "Define Variable 2": {
+ "attributes": {
+ "id": "sp:define-variable",
+ "variables": [
+ {
+ "description": "Adobe Acrobat",
+ "name": "acrobatFlag",
+ "transforms": [
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "true",
+ "replacement": "Yes"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "false",
+ "replacement": "No"
+ }
+ }
+ ],
+ "variableA": "{{$.trigger.formData.acrobat}}"
+ },
+ {
+ "description": "Eclipse Flag",
+ "name": "eclipseFlag",
+ "transforms": [
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "true",
+ "replacement": "Yes"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "false",
+ "replacement": "No"
+ }
+ }
+ ],
+ "variableA": "{{$.trigger.formData.eclipse}}"
+ },
+ {
+ "description": "Oracle Flag",
+ "name": "oracleFlag",
+ "transforms": [
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "true",
+ "replacement": "Yes"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "false",
+ "replacement": "No"
+ }
+ }
+ ],
+ "variableA": "{{$.trigger.formData.oracle}}"
+ },
+ {
+ "description": "Adobe Photoshop Flag",
+ "name": "photoshopFlag",
+ "transforms": [
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "true",
+ "replacement": "Yes"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "false",
+ "replacement": "No"
+ }
+ }
+ ],
+ "variableA": "{{$.trigger.formData.photoshop}}"
+ },
+ {
+ "description": "MS Powerpoint Flag",
+ "name": "powerpointFlag",
+ "transforms": [
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "true",
+ "replacement": "Yes"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "false",
+ "replacement": "No"
+ }
+ }
+ ],
+ "variableA": "{{$.trigger.formData.powerpoint}}"
+ },
+ {
+ "description": "Siebel Flag",
+ "name": "siebelFlag",
+ "transforms": [
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "true",
+ "replacement": "Yes"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "false",
+ "replacement": "No"
+ }
+ }
+ ],
+ "variableA": "{{$.trigger.formData.siebel}}"
+ },
+ {
+ "description": "Laptop Price",
+ "name": "laptopPrice",
+ "transforms": [
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "Windows",
+ "replacement": "950"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "Linux",
+ "replacement": "800"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "Mac",
+ "replacement": "1800"
+ }
+ },
+ {
+ "id": "sp:transform:replace:string",
+ "input": {
+ "pattern": "Chromebook",
+ "replacement": "500"
+ }
+ }
+ ],
+ "variableA": "{{$.trigger.formData.preferredLaptop}}"
+ }
+ ]
+ },
+ "displayName": "",
+ "nextStep": "Compare Strings 1",
+ "type": "Mutation"
+ },
+ "End Step — Success": {
+ "description": "Request Success",
+ "type": "success"
+ },
+ "End Step — Success 1": {
+ "type": "success"
+ },
+ "End Step — Success 2": {
+ "type": "success"
+ },
+ "Get Accounts": {
+ "actionId": "sp:get-accounts",
+ "attributes": {
+ "filterCriteria": "sourceId",
+ "getAccountsBy": "filters",
+ "identity": "308c97e4c41c47fd9ab23fa879fa14ab",
+ "operator": "eq",
+ "value": "4bce9ea74776402aa3e2dd42d3160d31"
+ },
+ "description": "Get Service Now Accounts",
+ "displayName": "",
+ "nextStep": "Define Variable 1",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Get Identity": {
+ "actionId": "sp:get-identity",
+ "attributes": {
+ "id.$": "$.trigger.submittedBy.id"
+ },
+ "description": "Get User's Manager",
+ "nextStep": "Define Variable",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Manage ServiceNow Ticket": {
+ "actionId": "sp:snow",
+ "attributes": {
+ "action": "create",
+ "authenticationType": "basic",
+ "basicAuthPassword": "",
+ "basicAuthUserName": "admin",
+ "caller": "admin",
+ "customFields": "requested_for:{{$.defineVariable1.accountID}}\nassignment_group:Hardware\ndue_date:{{$.defineVariable.ticketDueDate}}\ncomments:New Ticket for provisioning user Hardware\nspecial_instructions:Preferred Laptop - {{$.trigger.formData.preferredLaptop}}, {{$.trigger.formData.additionalRequests}}, Adobe Acrobat - {{$.defineVariable2.acrobatFlag}}, Adobe Photoshop - {{$.defineVariable2.photoshopFlag}}, Siebel Client - {{$.defineVariable2.siebelFlag}}, Oracle - {{$.defineVariable2.oracleFlag}}, Eclipse IDE - {{$.defineVariable2.eclipseFlag}}, Microsoft Powerpoint - {{$.defineVariable2.powerpointFlag}}\nprice:{{$.defineVariable2.laptopPrice}}\nlocation:1e3c49b037d0200044e0bfc8bcbe5dd7",
+ "description": "Please provision Hardware for the user with Employee Number - {{$.trigger.formData.employeeNumber}}",
+ "shortDescription": "New User {{$.trigger.formData.employeeName}} created in Sailpoint IDN",
+ "subCategory": "",
+ "urgency": "2",
+ "url": "https://tenant.service-now.com/api/now/v1/table/sc_request",
+ "watchlist": "admin"
+ },
+ "description": "Create a Service Now Request for Hardware",
+ "nextStep": "Wait",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Manage ServiceNow Ticket 1": {
+ "actionId": "sp:snow",
+ "attributes": {
+ "action": "get",
+ "authenticationType": "basic",
+ "basicAuthPassword": "",
+ "basicAuthUserName": "admin",
+ "ticket": "{{$.manageServiceNowTicket.body.result.task_effective_number}}",
+ "url": "https://tenant.service-now.com/api/now/v1/table/sc_request?sysparm_query="
+ },
+ "description": "Check Ticket Status",
+ "nextStep": "Compare Strings",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Manage ServiceNow Ticket 2": {
+ "actionId": "sp:snow",
+ "attributes": {
+ "action": "create",
+ "authenticationType": "basic",
+ "basicAuthPassword": "",
+ "basicAuthUserName": "admin",
+ "caller": "admin",
+ "customFields": "requested_for:{{$.defineVariable1.accountID}}\nassignment_group:Windows Hardware Support\ndue_date:{{$.defineVariable.ticketDueDate}}\ncomments:New Ticket for provisioning user Hardware\nspecial_instructions:Preferred Laptop - {{$.trigger.formData.preferredLaptop}}, OS - {{$.trigger.formData.windowsOsVersion}}, {{$.trigger.formData.additionalRequests}}, Adobe Acrobat - {{$.defineVariable2.acrobatFlag}}, Adobe Photoshop - {{$.defineVariable2.photoshopFlag}}, Siebel Client - {{$.defineVariable2.siebelFlag}}, Oracle - {{$.defineVariable2.oracleFlag}}, Eclipse IDE - {{$.defineVariable2.eclipseFlag}}, Microsoft Powerpoint - {{$.defineVariable2.powerpointFlag}}\nprice:{{$.defineVariable2.laptopPrice}}\nlocation:1e3c49b037d0200044e0bfc8bcbe5dd7",
+ "description": "Please provision Hardware for the user with Employee Number - {{$.trigger.formData.employeeNumber}}",
+ "shortDescription": "New User {{$.trigger.formData.employeeName}} created in Sailpoint IDN",
+ "subCategory": null,
+ "urgency": "2",
+ "url": "https://tenant.service-now.com/api/now/v1/table/sc_request",
+ "watchlist": "admin"
+ },
+ "description": "Create a Service Now Request for Hardware",
+ "displayName": "",
+ "nextStep": "Wait",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Manage ServiceNow Ticket 3": {
+ "actionId": "sp:snow",
+ "attributes": {
+ "action": "create",
+ "authenticationType": "basic",
+ "basicAuthPassword": "",
+ "basicAuthUserName": "admin",
+ "caller": "admin",
+ "customFields": "requested_for:{{$.defineVariable1.accountID}}\nassignment_group:Hardware\ndue_date:{{$.defineVariable.ticketDueDate}}\ncomments:New Ticket for provisioning user Hardware\nspecial_instructions:Preferred Laptop - {{$.trigger.formData.preferredLaptop}}, OS - {{$.trigger.formData.linuxOs}}, {{$.trigger.formData.additionalRequests}}, Adobe Acrobat - {{$.defineVariable2.acrobatFlag}}, Adobe Photoshop - {{$.defineVariable2.photoshopFlag}}, Siebel Client - {{$.defineVariable2.siebelFlag}}, Oracle - {{$.defineVariable2.oracleFlag}}, Eclipse IDE - {{$.defineVariable2.eclipseFlag}}, Microsoft Powerpoint - {{$.defineVariable2.powerpointFlag}}\nprice:{{$.defineVariable2.laptopPrice}}\nlocation:1e3c49b037d0200044e0bfc8bcbe5dd7",
+ "description": "Please provision Hardware for the user with Employee Number - {{$.trigger.formData.employeeNumber}}",
+ "shortDescription": "New User {{$.trigger.formData.employeeName}} created in Sailpoint IDN",
+ "subCategory": "",
+ "urgency": "2",
+ "url": "https://tenant.service-now.com/api/now/v1/table/sc_request",
+ "watchlist": "admin"
+ },
+ "description": "Create a Service Now Request for Hardware",
+ "displayName": "",
+ "nextStep": "Wait",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Send Email": {
+ "actionId": "sp:send-email",
+ "attributes": {
+ "body": "Hi,
\nService Now Ticket for user ${displayName} has been created successfully. \n
\nThe Ticket Number is ${ticketNumber}.\n
\nThanks,
\nYour IAM Team",
+ "context": {
+ "displayName.$": "$.trigger.formData.employeeName",
+ "ticketNumber.$": "$.manageServiceNowTicket.body.result.task_effective_number"
+ },
+ "recipientEmailList.$": "$.getIdentity.attributes.email",
+ "subject": "Service Now Ticket {{$.manageServiceNowTicket.body.result.task_effective_number}} Created"
+ },
+ "description": "Notify Manager about Service Now Ticket Creation",
+ "nextStep": "Wait 1",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Send Email 1": {
+ "actionId": "sp:send-email",
+ "attributes": {
+ "body": "Service Now Ticket ${ticketNumber} for user ${displayName} is now Closed.\n
\nPlease note that Hardware provisioning for new user is now complete.\n
\nThanks,
\nIAM Team",
+ "context": {
+ "displayName.$": "$.trigger.formData.employeeName",
+ "ticketNumber.$": "$.manageServiceNowTicket.body.result.task_effective_number"
+ },
+ "recipientEmailList.$": "$.getIdentity.attributes.email",
+ "subject": "Service Now Ticket {{$.manageServiceNowTicket.body.result.task_effective_number}} Closed"
+ },
+ "description": "Notify Manager of Service Now Ticket Completetion",
+ "nextStep": "End Step — Success",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Send Email 2": {
+ "actionId": "sp:send-email",
+ "attributes": {
+ "body": "Hi,
\nService Now Ticket ${ticketNumber} for user ${displayName} is ${status}.\n
\nPlease check with Hardware Team if provisioning is completed.
\nThanks,
\nYour IAM Team",
+ "context": {
+ "displayName.$": "$.trigger.formData.employeeName",
+ "status.$": "$.manageServiceNowTicket1.body.result[?(@.task_effective_number=='{{$.manageServiceNowTicket.body.result.task_effective_number}}')].request_state",
+ "ticketNumber.$": "$.manageServiceNowTicket.body.result.task_effective_number"
+ },
+ "recipientEmailList.$": "$.getIdentity.attributes.email",
+ "subject": "Service Now Ticket {{$.manageServiceNowTicket.body.result.task_effective_number}} Status"
+ },
+ "description": "Notify Manager about Service Now Ticket Status",
+ "nextStep": "End Step — Success 2",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Send Email 3": {
+ "actionId": "sp:send-email",
+ "attributes": {
+ "body": "Hi,
\nService Now Ticket creation for user ${displayName} has failed. \n
\nPlease create provisioning request with Hardware Team from Service Now.\n
\nThanks,
\nYour IAM Team",
+ "context": {
+ "displayName.$": "$.trigger.formData.employeeName"
+ },
+ "recipientEmailList.$": "$.getIdentity.attributes.email",
+ "subject": "Service Now Ticket Creation Failure"
+ },
+ "description": "Notify Manager about Service Now Ticket Creation Failure",
+ "nextStep": "End Step — Success 1",
+ "type": "action",
+ "versionNumber": 2
+ },
+ "Wait": {
+ "actionId": "sp:sleep",
+ "attributes": {
+ "duration": "1m",
+ "type": "waitFor"
+ },
+ "description": "Wait for Service Now Ticket Creation",
+ "nextStep": "Compare Numbers",
+ "type": "action",
+ "versionNumber": 1
+ },
+ "Wait 1": {
+ "actionId": "sp:sleep",
+ "attributes": {
+ "duration": "1m",
+ "type": "waitFor"
+ },
+ "description": "Wait for a few days to check Ticket Status",
+ "nextStep": "Manage ServiceNow Ticket 1",
+ "type": "action",
+ "versionNumber": 1
+ }
+ }
+ },
+ "trigger": {
+ "type": "EVENT",
+ "attributes": {
+ "description": "User Onboarding Form Submitted",
+ "id": "sp:form-submitted"
+ }
+ }
+}
\ No newline at end of file