From 693dc18a9d58c17b71a6c0f6c0756d43b2986820 Mon Sep 17 00:00:00 2001 From: sbharatiya Date: Mon, 22 Apr 2024 15:37:28 +0530 Subject: [PATCH] Fast track Identity Onboarding --- .../FastTrackUserOnboarding.json | 120 +++ .../fasttrack-identity-onboarding/README.md | 18 + .../User Onboarding Form.json | 883 ++++++++++++++++++ .../UserOnboardingAssignRoles.json | 85 ++ .../UserOnboardingServiceNowRequests.json | 490 ++++++++++ 5 files changed, 1596 insertions(+) create mode 100644 workflows/fasttrack-identity-onboarding/FastTrackUserOnboarding.json create mode 100644 workflows/fasttrack-identity-onboarding/README.md create mode 100644 workflows/fasttrack-identity-onboarding/User Onboarding Form.json create mode 100644 workflows/fasttrack-identity-onboarding/UserOnboardingAssignRoles.json create mode 100644 workflows/fasttrack-identity-onboarding/UserOnboardingServiceNowRequests.json 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