diff --git a/workflows/account-aggregation-failed-notification/AccountAggregationFailedNotification.json b/workflows/account-aggregation-failed-notification/AccountAggregationFailedNotification.json new file mode 100644 index 0000000..4392b6d --- /dev/null +++ b/workflows/account-aggregation-failed-notification/AccountAggregationFailedNotification.json @@ -0,0 +1,55 @@ +{ + "name": "Account Aggregation Failed Notification", + "description": "Account Aggregation Failed Notification", + "definition": { + "start": "Compare Strings", + "steps": { + "Compare Strings": { + "choiceList": [ + { + "comparator": "StringEquals", + "nextStep": "Send Email", + "variableA.$": "$.trigger.status", + "variableB": "Error" + } + ], + "defaultStep": "End Step — Success 1", + "description": "Check if aggregation status equals failed", + "type": "choice" + }, + "End Step — Success": { + "type": "success" + }, + "End Step — Success 1": { + "description": "Aggregation Completed Successfully without any Errors", + "type": "success" + }, + "Send Email": { + "actionId": "sp:send-email", + "attributes": { + "body": "Hi,

Account Aggregation for Source ${sourceName} has Failed.
Aggregation Start Time : ${startTime}
Aggregation Completion Time ${completedTime}.

Thank you,
IAM Team", + "context": { + "completedTime.$": "$.trigger.completed", + "sourceName.$": "$.trigger.source.name", + "startTime.$": "$.trigger.started" + }, + "recipientEmailList": [ + "sshah@sshah.com" + ], + "subject": "ALERT: {{$.trigger.source.name}} source aggregation has Failed" + }, + "description": "Notify the Source Admin of Source aggregation failure", + "nextStep": "End Step — Success", + "type": "action", + "versionNumber": 2 + } + } + }, + "trigger": { + "type": "EVENT", + "attributes": { + "filter.$": "$[?(@.source.name ==\"Active Directory\")]", + "id": "idn:account-aggregation-completed" + } + } +} \ No newline at end of file diff --git a/workflows/account-aggregation-failed-notification/README.md b/workflows/account-aggregation-failed-notification/README.md new file mode 100644 index 0000000..8f793eb --- /dev/null +++ b/workflows/account-aggregation-failed-notification/README.md @@ -0,0 +1,5 @@ +Account Aggregation Failed Notification + +This workflow sends out an email notification to the Source admin whenever source aggregation fails. + +Please modify the Source Name and Recipient Email address in the workflow. \ No newline at end of file diff --git a/workflows/emergency-termination/README.md b/workflows/emergency-termination/README.md new file mode 100644 index 0000000..d4c5a37 --- /dev/null +++ b/workflows/emergency-termination/README.md @@ -0,0 +1,6 @@ +Emergency Terminations + +This workflow can be invoked from any target system (eg SAP) that supports API calls. Once triggered it will disable the identity access and target account (eg. AD) immediately. You will have to modify the workflow to populate the actual workflow ID in the trigger and also modify any source ids as required in the Manage Accounts step. + +For more details about this workflow please refer this blog: +https://developer.sailpoint.com/discuss/t/emergency-terminations-of-identities-using-identitynow/12827 \ No newline at end of file diff --git a/workflows/manage-service-now-ticket/README.md b/workflows/manage-service-now-ticket/README.md new file mode 100644 index 0000000..9f5265a --- /dev/null +++ b/workflows/manage-service-now-ticket/README.md @@ -0,0 +1,9 @@ +Managing Service Now Tickets from Workflows + +There are two workflows : + + 1. Manage Managing Service Now Tickets from Workflows & + 2. Managing Service Now Tickets from Workflows using HTTP Request + +For more details about this workflow please refer this blog: +https://developer.sailpoint.com/discuss/t/managing-service-now-tickets-in-workflows/14420 \ No newline at end of file diff --git a/workflows/run-unoptomized-aggregation/README.md b/workflows/run-unoptomized-aggregation/README.md new file mode 100644 index 0000000..0a33966 --- /dev/null +++ b/workflows/run-unoptomized-aggregation/README.md @@ -0,0 +1,10 @@ +Run Unoptimized Aggregation + +This workflows uses an HTTP Request to call load Accounts API to run an unoptized aggregation for a source. + +Please modify: +1. Modify the scheduled trigger time based on your needs. +2. The tenant name, client ID, secret and source ID in HTTP Request action. +3. The receipient email address in Send Email action. + +Note: This HTTP Request URL will have to be modified once we receive a V3 or a BETA API replacement for loadAccounts CC API. \ No newline at end of file diff --git a/workflows/run-unoptomized-aggregation/RunUnoptimizedAggregation.json b/workflows/run-unoptomized-aggregation/RunUnoptimizedAggregation.json new file mode 100644 index 0000000..c382e9b --- /dev/null +++ b/workflows/run-unoptomized-aggregation/RunUnoptimizedAggregation.json @@ -0,0 +1,89 @@ +{ + "name": "Run Unoptimized Aggregation", + "description": "Run Unoptimized Aggregation", + "definition": { + "start": "HTTP Request", + "steps": { + "Compare Numbers": { + "choiceList": [ + { + "comparator": "NumericEquals", + "nextStep": "Send Email", + "variableA.$": "$.hTTPRequest.statusCode", + "variableB": 200 + } + ], + "defaultStep": "Send Email 1", + "type": "choice" + }, + "HTTP Request": { + "actionId": "sp:http", + "attributes": { + "authenticationType": "OAuth", + "formRequestBody": "disableOptimization:true", + "method": "post", + "oAuthClientId": "", + "oAuthClientSecret": "", + "oAuthCredentialLocation": "oAuthInHeader", + "oAuthTokenUrl": "https://tenant.api.identitynow-demo.com/oauth/token", + "requestContentType": "form", + "url": "https://tenant.api.identitynow-demo.com/cc/api/source/loadAccounts/XXXXX" + }, + "description": "Run unoptimized aggregation", + "nextStep": "Compare Numbers", + "type": "action", + "versionNumber": 2 + }, + "Send Email": { + "actionId": "sp:send-email", + "attributes": { + "body": "Unoptimized Aggregation for Active Directory has been completed..
IAM Team", + "context": {}, + "from": null, + "recipientEmailList": [ + "sshah@sshah.com" + ], + "subject": "Run Unoptimized Aggregation" + }, + "description": "Run Unoptimized Aggregations", + "nextStep": "success", + "type": "action", + "versionNumber": 2 + }, + "Send Email 1": { + "actionId": "sp:send-email", + "attributes": { + "body": "Unoptimized Aggregation for Active Directory has Failed.
IAM Team", + "context": {}, + "from": null, + "recipientEmailList": [ + "sbharatiya@cybersolve.com" + ], + "subject": "Run Unoptimized Aggregation" + }, + "description": "Run Unoptimized Aggregation Failed", + "nextStep": "success", + "type": "action", + "versionNumber": 2 + }, + "success": { + "description": "End", + "type": "success" + } + } + }, + "trigger": { + "type": "SCHEDULED", + "attributes": { + "cronString": "0 15 * * 6", + "frequency": "weekly", + "timeZone": "US/Eastern", + "weeklyDays": [ + "Saturday" + ], + "weeklyTimes": [ + "1969-12-31T20:30:00.000Z" + ] + } + } +} \ No newline at end of file diff --git a/workflows/scheduled-full-source-aggregation-delta/README.md b/workflows/scheduled-full-source-aggregation-delta/README.md new file mode 100644 index 0000000..ad340a1 --- /dev/null +++ b/workflows/scheduled-full-source-aggregation-delta/README.md @@ -0,0 +1,10 @@ +Scheduled Full Source Aggregation for source that supports Delta Aggregation + +This workflows runs a scheduled full source aggregation for a source enabled for delta aggregation. It uses HTTP Request to disable delta aggregation, then run a full aggregation for the source and finally reinstate the delta aggregation flag to true. + +Please modify: +1. Modify the scheduled trigger time based on your needs. +2. The tenant name, client ID, secret and source ID in HTTP Request actions. +3. Add a Send Email action if an Admin notification is required. + +Note: This HTTP Request URL will have to be modified once we receive a V3 or a BETA API replacement for loadAccounts CC API. \ No newline at end of file diff --git a/workflows/scheduled-full-source-aggregation-delta/ScheduledFullSourceAggregation.json b/workflows/scheduled-full-source-aggregation-delta/ScheduledFullSourceAggregation.json new file mode 100644 index 0000000..0c03ed3 --- /dev/null +++ b/workflows/scheduled-full-source-aggregation-delta/ScheduledFullSourceAggregation.json @@ -0,0 +1,131 @@ +{ + "name": "Full Source Aggregation", + "description": "Run a scheduled full source aggregation for a source enabled for delta aggregation", + "definition": { + "start": "HTTP Request", + "steps": { + "Compare Numbers": { + "choiceList": [ + { + "comparator": "NumericEquals", + "nextStep": "HTTP Request 1", + "variableA.$": "$.hTTPRequest.statusCode", + "variableB": 200 + } + ], + "defaultStep": "End Step — Success", + "description": null, + "type": "choice" + }, + "Compare Numbers 1": { + "choiceList": [ + { + "comparator": "NumericEquals", + "nextStep": "HTTP Request 2", + "variableA.$": "$.hTTPRequest1.statusCode", + "variableB": 200 + } + ], + "defaultStep": "End Step — Success", + "description": null, + "type": "choice" + }, + "Compare Numbers 2": { + "choiceList": [ + { + "comparator": "NumericEquals", + "nextStep": "End Step — Success", + "variableA.$": "$.hTTPRequest2.statusCode", + "variableB": 200 + } + ], + "defaultStep": "End Step — Success", + "description": null, + "type": "choice" + }, + "End Step — Success": { + "type": "success" + }, + "HTTP Request": { + "actionId": "sp:http", + "attributes": { + "authenticationType": "OAuth", + "jsonPatchRequestBody": [ + { + "op": "replace", + "path": "/connectorAttributes/deltaAggregationEnabled", + "value": "false" + } + ], + "method": "patch", + "oAuthClientId": "", + "oAuthClientSecret": "", + "oAuthCredentialLocation": "oAuthInHeader", + "oAuthTokenUrl": "https://tenant.api.identitynow-demo.com/oauth/token", + "requestContentType": "json-patch+json", + "url": "https://tenant.api.identitynow-demo.com/v3/sources/ef7ad4d0f07a46d6b62064cd3efa1abe" + }, + "description": "Update the source configuration using REST API and set Delta aggregation flag to false", + "nextStep": "Compare Numbers", + "type": "action", + "versionNumber": 2 + }, + "HTTP Request 1": { + "actionId": "sp:http", + "attributes": { + "authenticationType": "OAuth", + "jsonPatchRequestBody": null, + "method": "post", + "oAuthClientId": "", + "oAuthClientSecret": "", + "oAuthCredentialLocation": "oAuthInHeader", + "oAuthTokenUrl": "https://tenant.api.identitynow-demo.com/oauth/token", + "requestContentType": "json-patch+json", + "url": "https://tenant.api.identitynow-demo.com/cc/api/source/loadAccounts/XXXXX" + }, + "description": "Trigger a Full Source Account Aggregation", + "nextStep": "Compare Numbers 1", + "type": "action", + "versionNumber": 2 + }, + "HTTP Request 2": { + "actionId": "sp:http", + "attributes": { + "authenticationType": "OAuth", + "jsonPatchRequestBody": [ + { + "op": "replace", + "path": "/connectorAttributes/deltaAggregationEnabled", + "value": "true" + } + ], + "method": "patch", + "oAuthClientId": "", + "oAuthClientSecret": "", + "oAuthCredentialLocation": "oAuthInHeader", + "oAuthTokenUrl": "https://tenant.api.identitynow-demo.com/oauth/token", + "requestContentType": "json-patch+json", + "url": "https://tenant.api.identitynow-demo.com/v3/sources/ef7ad4d0f07a46d6b62064cd3efa1abe" + }, + "description": "Update the source configuration using REST API and set Delta aggregation flag to true", + "nextStep": "Compare Numbers 2", + "type": "action", + "versionNumber": 2 + } + } + }, + "trigger": { + "type": "SCHEDULED", + "attributes": { + "cronString": "0 2 * * 6", + "frequency": "weekly", + "timeZone": "Asia/Kolkata", + "weeklyDays": [ + "Saturday" + ], + "weeklyTimes": [ + "1969-12-31T20:30:00.000Z" + ] + } + } +} \ No newline at end of file