From 013c05ea45ebe727a8f92c8e1aeb519d63deb6a9 Mon Sep 17 00:00:00 2001 From: Preston Hales Date: Thu, 26 Feb 2026 17:16:13 -0700 Subject: [PATCH 1/7] wip --- src/cli/iga/iga-workflow-delete.ts | 66 ++++++++ src/cli/iga/iga-workflow-export.ts | 189 +++++++++++++++++++++ src/cli/iga/iga-workflow-import.ts | 122 ++++++++++++++ src/cli/iga/iga-workflow-list.ts | 61 +++++++ src/cli/iga/iga-workflow.ts | 27 +++ src/cli/iga/iga.ts | 13 ++ src/ops/cloud/iga/IgaWorkflowOps.ts | 246 ++++++++++++++++++++++++++++ 7 files changed, 724 insertions(+) create mode 100644 src/cli/iga/iga-workflow-delete.ts create mode 100644 src/cli/iga/iga-workflow-export.ts create mode 100644 src/cli/iga/iga-workflow-import.ts create mode 100644 src/cli/iga/iga-workflow-list.ts create mode 100644 src/cli/iga/iga-workflow.ts create mode 100644 src/cli/iga/iga.ts create mode 100644 src/ops/cloud/iga/IgaWorkflowOps.ts diff --git a/src/cli/iga/iga-workflow-delete.ts b/src/cli/iga/iga-workflow-delete.ts new file mode 100644 index 000000000..5c57d46a1 --- /dev/null +++ b/src/cli/iga/iga-workflow-delete.ts @@ -0,0 +1,66 @@ +import { Option } from 'commander'; + +import { getTokens } from '../../ops/AuthenticateOps'; +import { + deleteAllIGAWorkflows, + deleteIGAWorkflowById, +} from '../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../utils/Console.js'; +import { FrodoCommand } from '../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand('frodo iga workflow delete'); + + program + .description('Delete iga workflows.') + .addOption( + new Option( + '-i, --workflow-id ', + 'IGA workflow id/name. If specified, -a and -A are ignored.' + ) + ) + .addOption( + new Option( + '-a, --all', + 'Delete all policies in a realm. Ignored with -i.' + ) + ) + .action( + // implement command logic inside action handler + async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + // delete by id + if (options.workflowId && (await getTokens())) { + verboseMessage('Deleting iga workflow...'); + const outcome = await deleteIGAWorkflowById(options.workflowId); + if (!outcome) process.exitCode = 1; + } + // --all -a + else if (options.all && (await getTokens())) { + verboseMessage('Deleting all iga workflows...'); + const outcome = await deleteAllIGAWorkflows(); + if (!outcome) process.exitCode = 1; + } + // unrecognized combination of options or no options + else { + printMessage('Unrecognized combination of options or no options...'); + program.help(); + process.exitCode = 1; + } + } + // end command logic inside action handler + ); + + return program; +} diff --git a/src/cli/iga/iga-workflow-export.ts b/src/cli/iga/iga-workflow-export.ts new file mode 100644 index 000000000..954d03ca5 --- /dev/null +++ b/src/cli/iga/iga-workflow-export.ts @@ -0,0 +1,189 @@ +import { frodo, state } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { getTokens } from '../../ops/AuthenticateOps'; +import { + exportWorkflowsToFile, + exportWorkflowsToFiles, + exportWorkflowToFile, +} from '../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../utils/Console.js'; +import { FrodoCommand } from '../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand( + 'frodo iga workflow export', + [], + deploymentTypes + ); + + program + .description('Export workflows.') + .addOption( + new Option( + '-i, --workflow-id ', + 'Workflow id. If specified, -a and -A are ignored.' + ) + ) + .addOption( + new Option( + '-f, --file [file]', + 'Name of the export file. Ignored with -A. Defaults to .workflow.json.' + ) + ) + .addOption( + new Option( + '-a, --all', + 'Export all workflows to a single file. Ignored with -i.' + ) + ) + .addOption( + new Option( + '-A, --all-separate', + 'Export all workflows as separate files .workflow.json. Ignored with -i, and -a.' + ) + ) + .addOption( + new Option( + '-N, --no-metadata', + 'Does not include metadata in the export file.' + ) + ) + + .addOption( + new Option( + '-x, --extract', + 'Extract the scripts from the exported file, and save them to separate files. Ignored with -a.' + ) + ) + .addOption( + new Option( + '--use-string-arrays', + 'Where applicable, use string arrays to store scripts.' + ).default(false, 'off') + ) + .addOption( + new Option( + '-R, --read-only', + 'Export read-only config (with the exception of default scripts) in addition to the importable config.' + ) + ) + .addOption( + new Option( + '--no-coords', + 'Do not include the x and y coordinate positions of the journey/tree nodes.' + ) + ) + .addOption( + new Option( + '--no-deps', + 'Do not include any dependencies (scripts, email templates, request forms, events, etc.).' + ) + ) + .action( + // implement command logic inside action handler + async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + // export by id + if (!options.workflowId && !options.all && !options.allSeparate) { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + return; + } + const getTokensIsSuccessful = await getTokens(false, true, deploymentTypes); + if (!getTokensIsSuccessful) { + printMessage( + 'Error getting tokens', + 'error' + ); + process.exitCode = 1; + return; + } + if (!state.getIsIGA()) { + printMessage( + 'Command not supported for non-IGA cloud tenants', + 'error' + ); + process.exitCode = 1; + return; + } + // --workflow-id -i + if ( + options.workflowId + ) { + verboseMessage( + `Exporting workflow "${ + options.workflowId + }"...` + ); + const outcome = await exportWorkflowToFile( + options.workflowId, + options.file, + options.metadata, + options.extract, + { + deps: options.deps, + useStringArrays: options.useStringArrays, + coords: options.coords, + includeReadOnly: options.readOnly, + } + ); + if (!outcome) process.exitCode = 1; + } + // --all -a + else if ( + options.all + ) { + verboseMessage('Exporting all workflows to a single file...'); + const outcome = await exportWorkflowsToFile( + options.file, + options.metadata, + options.extract, + { + deps: options.deps, + useStringArrays: options.useStringArrays, + coords: options.coords, + includeReadOnly: options.readOnly, + } + ); + if (!outcome) process.exitCode = 1; + } + // --all-separate -A + else if ( + options.allSeparate + ) { + verboseMessage('Exporting all workflows to separate files...'); + const outcome = await exportWorkflowsToFiles( + options.metadata, + options.extract, + { + deps: options.deps, + useStringArrays: options.useStringArrays, + coords: options.coords, + includeReadOnly: options.readOnly, + } + ); + if (!outcome) process.exitCode = 1; + } + + } + // end command logic inside action handler + ); + + return program; +} diff --git a/src/cli/iga/iga-workflow-import.ts b/src/cli/iga/iga-workflow-import.ts new file mode 100644 index 000000000..a25191fa3 --- /dev/null +++ b/src/cli/iga/iga-workflow-import.ts @@ -0,0 +1,122 @@ +import { Option } from 'commander'; + +import { getTokens } from '../../ops/AuthenticateOps'; +import { + importFirstIGAWorkflowFromFile, + importIGAWorkflowFromFile, + importIGAWorkflowsFromFile, + importIGAWorkflowsFromFiles, +} from '../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../utils/Console.js'; +import { FrodoCommand } from '../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand( + 'frodo iga workflow import', + [], + deploymentTypes + ); + + program + .description('Import IGA workflows.') + .addOption( + new Option( + '-i, --workflow-id ', + 'IGA workflow id. If specified, -a and -A are ignored.' + ) + ) + .addOption(new Option('-f, --file ', 'Name of the import file.')) + .addOption( + new Option( + '-a, --all', + 'Import all iga workflows from single file. Ignored with -i.' + ) + ) + .addOption( + new Option( + '-A, --all-separate', + 'Import all iga workflows from separate files (*.workflow.iga.json) in the current directory. Ignored with -i or -a.' + ) + ) + .action( + // implement program logic inside action handler + async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + // import by id + if ( + options.file && + options.workflowId && + (await getTokens(false, true, deploymentTypes)) + ) { + verboseMessage(`Importing iga workflow "${options.workflowId}"...`); + const outcome = await importIGAWorkflowFromFile( + options.workflowId, + options.file, + options.raw + ); + if (!outcome) process.exitCode = 1; + } + // --all -a + else if ( + options.all && + options.file && + (await getTokens(false, true, deploymentTypes)) + ) { + verboseMessage( + `Importing all iga workflows from a single file (${options.file})...` + ); + const outcome = await importIGAWorkflowsFromFile(options.file); + if (!outcome) process.exitCode = 1; + } + // --all-separate -A + else if ( + options.allSeparate && + !options.file && + (await getTokens(false, true, deploymentTypes)) + ) { + verboseMessage( + 'Importing all iga workflows from separate files (*.workflow.iga.json) in current directory...' + ); + const outcome = await importIGAWorkflowsFromFiles(options.raw); + if (!outcome) process.exitCode = 1; + } + // import first workflow from file + else if ( + options.file && + (await getTokens(false, true, deploymentTypes)) + ) { + verboseMessage( + `Importing first iga workflow from file "${options.file}"...` + ); + const outcome = await importFirstIGAWorkflowFromFile( + options.file, + options.raw + ); + if (!outcome) process.exitCode = 1; + } + // unrecognized combination of options or no options + else { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + } + } + // end program logic inside action handler + ); + + return program; +} diff --git a/src/cli/iga/iga-workflow-list.ts b/src/cli/iga/iga-workflow-list.ts new file mode 100644 index 000000000..6a79f7e6c --- /dev/null +++ b/src/cli/iga/iga-workflow-list.ts @@ -0,0 +1,61 @@ +import { frodo, state } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { getTokens } from '../../ops/AuthenticateOps'; +import { listWorkflows } from '../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../utils/Console.js'; +import { FrodoCommand } from '../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand( + 'frodo iga workflow list', + [], + deploymentTypes + ); + + program + .description('List workflows.') + .addOption( + new Option('-l, --long', 'Long with all fields.').default(false, 'false') + ) + .action( + // implement command logic inside action handler + async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + const getTokensIsSuccessful = await getTokens(false, true, deploymentTypes); + if (!getTokensIsSuccessful) { + printMessage( + 'Error getting tokens', + 'error' + ); + process.exitCode = 1; + return; + } + if (!state.getIsIGA()) { + printMessage( + 'Command not supported for non-IGA cloud tenants', + 'error' + ); + process.exitCode = 1; + return; + } + verboseMessage(`Listing workflows ...`); + const outcome = await listWorkflows(options.long); + if (!outcome) process.exitCode = 1; + } + // end command logic inside action handler + ); + + return program; +} diff --git a/src/cli/iga/iga-workflow.ts b/src/cli/iga/iga-workflow.ts new file mode 100644 index 000000000..ff3273263 --- /dev/null +++ b/src/cli/iga/iga-workflow.ts @@ -0,0 +1,27 @@ +import { FrodoStubCommand } from '../FrodoCommand'; +import DeleteCmd from './iga-workflow-delete.js'; +import ExportCmd from './iga-workflow-export.js'; +import ImportCmd from './iga-workflow-import.js'; +import ListCmd from './iga-workflow-list.js'; + +export default function setup() { + const program = new FrodoStubCommand('frodo iga workflow'); + + program.description('Manage workflows.'); + + program.addCommand( + DeleteCmd().name('delete').description('Delete workflows.') + ); + + program.addCommand(ListCmd().name('list').description('List workflows.')); + + program.addCommand( + ExportCmd().name('export').description('Export workflows.') + ); + + program.addCommand( + ImportCmd().name('import').description('Import workflows.') + ); + + return program; +} diff --git a/src/cli/iga/iga.ts b/src/cli/iga/iga.ts new file mode 100644 index 000000000..7f2c99513 --- /dev/null +++ b/src/cli/iga/iga.ts @@ -0,0 +1,13 @@ +import { FrodoStubCommand } from '../FrodoCommand'; +import WorkflowCmd from './iga-workflow'; + +export default function setup() { + const program = new FrodoStubCommand('iga').description( + 'Manage IGA configuration.' + ); + + program.addCommand(WorkflowCmd().name('workflow').showHelpAfterError()); + + program.showHelpAfterError(); + return program; +} diff --git a/src/ops/cloud/iga/IgaWorkflowOps.ts b/src/ops/cloud/iga/IgaWorkflowOps.ts new file mode 100644 index 000000000..01197f3a6 --- /dev/null +++ b/src/ops/cloud/iga/IgaWorkflowOps.ts @@ -0,0 +1,246 @@ +import { frodo } from '@rockcarver/frodo-lib'; +import { errorHandler } from '../../utils/OpsUtils'; + +import { + createProgressIndicator, + createTable, + debugMessage, + printError, + printMessage, + stopProgressIndicator, + updateProgressIndicator, +} from '../../../utils/Console'; +import { WorkflowExportInterface, WorkflowExportOptions, WorkflowGroup } from '@rockcarver/frodo-lib/types/ops/cloud/iga/IgaWorkflowOps'; +import { ApprovalTask, ScriptTask, WorkflowExpression } from '@rockcarver/frodo-lib/types/api/cloud/iga/IgaWorkflowApi'; +import { extractDataToFile } from '../../../utils/Config'; +const { + getTypedFilename, + saveJsonToFile, + getRealmString, + getFilePath, + getWorkingDirectory, +} = frodo.utils; +const { + readWorkflows, + readDraftWorkflow, + readPublishedWorkflow, + readWorkflowGroups, + exportWorkflow, + exportWorkflows, + deleteDraftWorkflow, + deletePublishedWorkflow, + deleteWorkflows +} = frodo.cloud.iga.workflow; +/** + * List all the workflows + * @param {boolean} long Long version, all the fields + * @returns {Promise} a promise resolving to true if successful, false otherwise + */ +export async function listWorkflows( + long: boolean = false, +): Promise { + let workflows: WorkflowGroup[] = []; + try { + workflows = await readWorkflowGroups(); + if (!long) { + for (const workflow of workflows) { + printMessage(`${workflow.published ? workflow.published.id : workflow.draft.id}`, 'data'); + } + return true; + } + const table = createTable(['ID', 'Name', 'Drafted', 'Published', 'Mutable']); + for (const workflowGroup of workflows) { + const workflow = workflowGroup.published ?? workflowGroup.draft; + table.push([ + `${workflow.id}`, + workflow.name, + workflowGroup.draft ? 'true'['brightGreen'] : 'false'['brightRed'], + workflowGroup.published ? 'true'['brightGreen'] : 'false'['brightRed'], + workflow.mutable ? 'true'['brightGreen'] : 'false'['brightRed'] + ]); + } + printMessage(table.toString(), 'data'); + return true; + } catch (error) { + printError(error); + } + return false; +} + +/** + * Export workflow to file + * @param {string} workflowId workflow id + * @param {string} file file name + * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true + * @param {boolean} extract extracts the scripts from the export into separate files if true. Default: false + * @param {WorkflowExportOptions} options export options + * @returns {Promise} true if successful, false otherwise + */ +export async function exportWorkflowToFile( + workflowId: string, + file: string, + includeMeta: boolean = true, + extract: boolean = false, + options: WorkflowExportOptions = { + deps: true, + useStringArrays: true, + coords: true, + includeReadOnly: false, + } +): Promise { + const indicatorId = createProgressIndicator( + 'determinate', + 1, + `Exporting ${workflowId}...` + ); + try { + const exportData = await exportWorkflow(workflowId, options, errorHandler); + if (!file) { + file = getTypedFilename(workflowId, 'workflow'); + } + const filePath = getFilePath(file, true); + if (extract) + extractCustomNodeScriptsToFiles( + exportData, + undefined, + undefined, + !!nodeName + ); + updateProgressIndicator(indicatorId, `Saving ${workflowId} to ${filePath}...`); + saveJsonToFile(exportData, filePath, includeMeta); + stopProgressIndicator( + indicatorId, + `Exported workflow ${workflowId} to file`, + 'success' + ); + return true; + } catch (error) { + stopProgressIndicator( + indicatorId, + `Error exporting workflow ${workflowId} to file`, + 'fail' + ); + printError(error); + } + return false; +} + +/** + * Export all custom nodes to file + * @param {string} file file name + * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true + * @param {CustomNodeExportOptions} options export options + * @returns {Promise} true if successful, false otherwise + */ +export async function exportCustomNodesToFile( + file: string, + includeMeta: boolean = true, + options: CustomNodeExportOptions = { + useStringArrays: true, + } +): Promise { + try { + const exportData = await exportCustomNodes(options); + if (!file) { + file = getTypedFilename(`allCustomNodes`, 'nodeTypes'); + } + saveJsonToFile(exportData, getFilePath(file, true), includeMeta); + return true; + } catch (error) { + printError(error, `Error exporting custom nodes to file`); + } + return false; +} + +/** + * Export all custom nodes to separate files + * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true + * @param {boolean} extract extracts the scripts from the exports into separate files if true. Default: false + * @param {CustomNodeExportOptions} options export options + * @returns {Promise} true if successful, false otherwise + */ +export async function exportCustomNodesToFiles( + includeMeta: boolean = true, + extract: boolean = false, + options: CustomNodeExportOptions = { + useStringArrays: true, + } +): Promise { + try { + const exportData = await exportCustomNodes(options); + if (extract) extractCustomNodeScriptsToFiles(exportData); + for (const customNode of Object.values(exportData.nodeTypes)) { + saveToFile( + 'nodeTypes', + customNode, + '_id', + getFilePath( + getTypedFilename(customNode.displayName, 'nodeTypes'), + true + ), + includeMeta + ); + } + return true; + } catch (error) { + printError(error, `Error exporting custom nodes to files`); + } + return false; +} + +/** + * Extracts scripts from a workflow export into separate files. + * @param {WorkflowExportInterface} exportData The workflow export + * @param {string} workflowId The workflow id to extract a specific script from. If undefined, will extract scripts from all workflows. + * @param {string} directory The directory within the base directory to save the script files + * @returns {boolean} true if successful, false otherwise + */ +export function extractWorkflowScriptsToFiles( + exportData: WorkflowExportInterface, + workflowId?: string, + directory?: string, +): boolean { + try { + const workflows = workflowId + ? [exportData.workflow[workflowId]] + : Object.values(exportData.workflow); + for (const workflowGroup of workflows) { + for (const workflow of [workflowGroup.draft, workflowGroup.published].filter(w => w)) { + for (const step of workflow.steps) { + switch (step.type) { + case 'approvalTask': + case 'fulfillmentTask': + case 'violationTask': + const actors = (step[step.type] as ApprovalTask).actors; + if (!actors || Array.isArray(actors) || !actors.isExpression) continue; + const actorScriptText = Array.isArray(actors.value) ? actors.value.join('\n') : actors.value; + const actorFileName = getTypedFilename( + step.name, + 'workflow', + 'js' + ); + ((step[step.type] as ApprovalTask).actors as WorkflowExpression).value = extractDataToFile(actorScriptText, actorFileName, `${directory ? directory + '/' : ''}${workflow.id}/${workflow.status}`); + continue; + case 'scriptTask': + if (!step.name.startsWith('scriptTask')) continue; + const script = (step[step.type] as ScriptTask).script; + const scriptText = Array.isArray(script) ? script.join('\n') : script; + const scriptFileName = getTypedFilename( + step.name, + 'workflow', + (step[step.type] as ScriptTask).language === 'javascript' ? 'js' : 'unknown' + ); + (step[step.type] as ScriptTask).script = extractDataToFile(scriptText, scriptFileName, `${directory ? directory + '/' : ''}${workflow.id}/${workflow.status}`); + continue; + default: + continue; + } + } + } + } + return true; + } catch (error) { + printError(error); + } + return false; +} \ No newline at end of file From 0441ca5d0f76385ffef7ba282fe6b09d4a74baa5 Mon Sep 17 00:00:00 2001 From: Preston Hales Date: Mon, 2 Mar 2026 18:28:22 -0700 Subject: [PATCH 2/7] wip --- src/app.ts | 2 + src/cli/iga/iga-workflow-delete.ts | 66 -- src/cli/iga/iga-workflow-import.ts | 122 ---- src/cli/iga/iga.ts | 2 +- src/cli/iga/workflow/iga-workflow-delete.ts | 101 +++ src/cli/iga/workflow/iga-workflow-describe.ts | 72 +++ .../iga/{ => workflow}/iga-workflow-export.ts | 42 +- src/cli/iga/workflow/iga-workflow-import.ts | 146 +++++ .../iga/{ => workflow}/iga-workflow-list.ts | 19 +- src/cli/iga/{ => workflow}/iga-workflow.ts | 2 +- src/ops/NodeOps.ts | 19 +- src/ops/cloud/iga/IgaWorkflowOps.ts | 584 ++++++++++++++++-- src/utils/Console.ts | 19 +- 13 files changed, 892 insertions(+), 304 deletions(-) delete mode 100644 src/cli/iga/iga-workflow-delete.ts delete mode 100644 src/cli/iga/iga-workflow-import.ts create mode 100644 src/cli/iga/workflow/iga-workflow-delete.ts create mode 100644 src/cli/iga/workflow/iga-workflow-describe.ts rename src/cli/iga/{ => workflow}/iga-workflow-export.ts (83%) create mode 100644 src/cli/iga/workflow/iga-workflow-import.ts rename src/cli/iga/{ => workflow}/iga-workflow-list.ts (75%) rename src/cli/iga/{ => workflow}/iga-workflow.ts (92%) diff --git a/src/app.ts b/src/app.ts index 21024e0a0..2a94db490 100755 --- a/src/app.ts +++ b/src/app.ts @@ -22,6 +22,7 @@ import { } from './cli/FrodoCommand'; import idm from './cli/idm/idm'; import idp from './cli/idp/idp'; +import iga from './cli/iga/iga'; import info from './cli/info/info'; import journey from './cli/journey/journey'; import log from './cli/log/log'; @@ -90,6 +91,7 @@ process.argv = normalizeExpandedHelpArgv(process.argv); program.addCommand(esv()); program.addCommand(idm()); program.addCommand(idp()); + program.addCommand(iga()); program.addCommand(info()); program.addCommand(journey()); program.addCommand(log()); diff --git a/src/cli/iga/iga-workflow-delete.ts b/src/cli/iga/iga-workflow-delete.ts deleted file mode 100644 index 5c57d46a1..000000000 --- a/src/cli/iga/iga-workflow-delete.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Option } from 'commander'; - -import { getTokens } from '../../ops/AuthenticateOps'; -import { - deleteAllIGAWorkflows, - deleteIGAWorkflowById, -} from '../../ops/cloud/iga/IgaWorkflowOps'; -import { printMessage, verboseMessage } from '../../utils/Console.js'; -import { FrodoCommand } from '../FrodoCommand'; - -const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; - -const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; - -export default function setup() { - const program = new FrodoCommand('frodo iga workflow delete'); - - program - .description('Delete iga workflows.') - .addOption( - new Option( - '-i, --workflow-id ', - 'IGA workflow id/name. If specified, -a and -A are ignored.' - ) - ) - .addOption( - new Option( - '-a, --all', - 'Delete all policies in a realm. Ignored with -i.' - ) - ) - .action( - // implement command logic inside action handler - async (host, realm, user, password, options, command) => { - command.handleDefaultArgsAndOpts( - host, - realm, - user, - password, - options, - command - ); - // delete by id - if (options.workflowId && (await getTokens())) { - verboseMessage('Deleting iga workflow...'); - const outcome = await deleteIGAWorkflowById(options.workflowId); - if (!outcome) process.exitCode = 1; - } - // --all -a - else if (options.all && (await getTokens())) { - verboseMessage('Deleting all iga workflows...'); - const outcome = await deleteAllIGAWorkflows(); - if (!outcome) process.exitCode = 1; - } - // unrecognized combination of options or no options - else { - printMessage('Unrecognized combination of options or no options...'); - program.help(); - process.exitCode = 1; - } - } - // end command logic inside action handler - ); - - return program; -} diff --git a/src/cli/iga/iga-workflow-import.ts b/src/cli/iga/iga-workflow-import.ts deleted file mode 100644 index a25191fa3..000000000 --- a/src/cli/iga/iga-workflow-import.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { Option } from 'commander'; - -import { getTokens } from '../../ops/AuthenticateOps'; -import { - importFirstIGAWorkflowFromFile, - importIGAWorkflowFromFile, - importIGAWorkflowsFromFile, - importIGAWorkflowsFromFiles, -} from '../../ops/cloud/iga/IgaWorkflowOps'; -import { printMessage, verboseMessage } from '../../utils/Console.js'; -import { FrodoCommand } from '../FrodoCommand'; - -const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; - -const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; - -export default function setup() { - const program = new FrodoCommand( - 'frodo iga workflow import', - [], - deploymentTypes - ); - - program - .description('Import IGA workflows.') - .addOption( - new Option( - '-i, --workflow-id ', - 'IGA workflow id. If specified, -a and -A are ignored.' - ) - ) - .addOption(new Option('-f, --file ', 'Name of the import file.')) - .addOption( - new Option( - '-a, --all', - 'Import all iga workflows from single file. Ignored with -i.' - ) - ) - .addOption( - new Option( - '-A, --all-separate', - 'Import all iga workflows from separate files (*.workflow.iga.json) in the current directory. Ignored with -i or -a.' - ) - ) - .action( - // implement program logic inside action handler - async (host, realm, user, password, options, command) => { - command.handleDefaultArgsAndOpts( - host, - realm, - user, - password, - options, - command - ); - // import by id - if ( - options.file && - options.workflowId && - (await getTokens(false, true, deploymentTypes)) - ) { - verboseMessage(`Importing iga workflow "${options.workflowId}"...`); - const outcome = await importIGAWorkflowFromFile( - options.workflowId, - options.file, - options.raw - ); - if (!outcome) process.exitCode = 1; - } - // --all -a - else if ( - options.all && - options.file && - (await getTokens(false, true, deploymentTypes)) - ) { - verboseMessage( - `Importing all iga workflows from a single file (${options.file})...` - ); - const outcome = await importIGAWorkflowsFromFile(options.file); - if (!outcome) process.exitCode = 1; - } - // --all-separate -A - else if ( - options.allSeparate && - !options.file && - (await getTokens(false, true, deploymentTypes)) - ) { - verboseMessage( - 'Importing all iga workflows from separate files (*.workflow.iga.json) in current directory...' - ); - const outcome = await importIGAWorkflowsFromFiles(options.raw); - if (!outcome) process.exitCode = 1; - } - // import first workflow from file - else if ( - options.file && - (await getTokens(false, true, deploymentTypes)) - ) { - verboseMessage( - `Importing first iga workflow from file "${options.file}"...` - ); - const outcome = await importFirstIGAWorkflowFromFile( - options.file, - options.raw - ); - if (!outcome) process.exitCode = 1; - } - // unrecognized combination of options or no options - else { - printMessage( - 'Unrecognized combination of options or no options...', - 'error' - ); - program.help(); - process.exitCode = 1; - } - } - // end program logic inside action handler - ); - - return program; -} diff --git a/src/cli/iga/iga.ts b/src/cli/iga/iga.ts index 7f2c99513..3da94c735 100644 --- a/src/cli/iga/iga.ts +++ b/src/cli/iga/iga.ts @@ -1,5 +1,5 @@ import { FrodoStubCommand } from '../FrodoCommand'; -import WorkflowCmd from './iga-workflow'; +import WorkflowCmd from './workflow/iga-workflow'; export default function setup() { const program = new FrodoStubCommand('iga').description( diff --git a/src/cli/iga/workflow/iga-workflow-delete.ts b/src/cli/iga/workflow/iga-workflow-delete.ts new file mode 100644 index 000000000..14cb6df2d --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow-delete.ts @@ -0,0 +1,101 @@ +import { frodo, state } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { getTokens } from '../../../ops/AuthenticateOps'; +import { + deleteWorkflow, + deleteWorkflows, +} from '../../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../../utils/Console.js'; +import { FrodoCommand } from '../../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand('frodo iga workflow delete'); + + program + .description('Delete workflows.') + .addOption( + new Option( + '-i, --workflow-id ', + 'Workflow id/name. If specified, -a is ignored. By default, deletes both draft and published unless -d or -p are defined exclusively.' + ) + ) + .addOption( + new Option( + '-d, --draft-only', + 'Delete only the draft workflow. Ignored with -a.' + ) + ) + .addOption( + new Option( + '-p, --published-only', + 'Delete only the published workflow. Ignored with -a.' + ) + ) + .addOption( + new Option('-a, --all', 'Delete all workflows. Ignored with -i.') + ) + .action( + // implement command logic inside action handler + async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + if (!options.workflowId && !options.all) { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + return; + } + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); + if (!getTokensIsSuccessful) { + printMessage('Error getting tokens', 'error'); + process.exitCode = 1; + return; + } + if (!state.getIsIGA()) { + printMessage( + 'Command not supported for non-IGA cloud tenants', + 'error' + ); + process.exitCode = 1; + return; + } + // delete by id + if (options.workflowId) { + verboseMessage('Deleting workflow...'); + const outcome = await deleteWorkflow( + options.workflowId, + options.draftOnly, + options.publishedOnly + ); + if (!outcome) process.exitCode = 1; + } + // --all -a + else if (options.all) { + verboseMessage('Deleting all workflows...'); + const outcome = await deleteWorkflows(); + if (!outcome) process.exitCode = 1; + } + } + // end command logic inside action handler + ); + + return program; +} diff --git a/src/cli/iga/workflow/iga-workflow-describe.ts b/src/cli/iga/workflow/iga-workflow-describe.ts new file mode 100644 index 000000000..5a2eca1d3 --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow-describe.ts @@ -0,0 +1,72 @@ +import { frodo, state } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { getTokens } from '../../../ops/AuthenticateOps'; +import { describeWorkflow } from '../../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../../utils/Console'; +import { FrodoCommand } from '../../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand('frodo iga workflow describe'); + + program + .description('Describe workflows.') + .addOption( + new Option( + '-i, --workflow-id ', + 'Workflow id. If not specified, will describe first workflow in the provided export file.' + ) + ) + .addOption( + new Option( + '-f, --file ', + 'Name of the workflow export file to describe. If not specified, will automatically pull the workflow export data of the provided id from the tenant.' + ) + ) + .action(async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + if (!options.workflowId && !options.file) { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + return; + } + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); + if (!getTokensIsSuccessful) { + printMessage('Error getting tokens', 'error'); + process.exitCode = 1; + return; + } + if (!state.getIsIGA()) { + printMessage( + 'Command not supported for non-IGA cloud tenants', + 'error' + ); + process.exitCode = 1; + return; + } + verboseMessage(`Describing workflow ${options.workflowId}...`); + const outcome = await describeWorkflow(options.workflowId, options.file); + if (!outcome) process.exitCode = 1; + }); + + return program; +} diff --git a/src/cli/iga/iga-workflow-export.ts b/src/cli/iga/workflow/iga-workflow-export.ts similarity index 83% rename from src/cli/iga/iga-workflow-export.ts rename to src/cli/iga/workflow/iga-workflow-export.ts index 954d03ca5..be0f0465f 100644 --- a/src/cli/iga/iga-workflow-export.ts +++ b/src/cli/iga/workflow/iga-workflow-export.ts @@ -1,14 +1,14 @@ import { frodo, state } from '@rockcarver/frodo-lib'; import { Option } from 'commander'; -import { getTokens } from '../../ops/AuthenticateOps'; +import { getTokens } from '../../../ops/AuthenticateOps'; import { exportWorkflowsToFile, exportWorkflowsToFiles, exportWorkflowToFile, -} from '../../ops/cloud/iga/IgaWorkflowOps'; -import { printMessage, verboseMessage } from '../../utils/Console.js'; -import { FrodoCommand } from '../FrodoCommand'; +} from '../../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../../utils/Console.js'; +import { FrodoCommand } from '../../FrodoCommand'; const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; @@ -81,7 +81,7 @@ export default function setup() { .addOption( new Option( '--no-deps', - 'Do not include any dependencies (scripts, email templates, request forms, events, etc.).' + 'Do not include any dependencies (email templates, request forms, events, etc.).' ) ) .action( @@ -95,7 +95,6 @@ export default function setup() { options, command ); - // export by id if (!options.workflowId && !options.all && !options.allSeparate) { printMessage( 'Unrecognized combination of options or no options...', @@ -105,12 +104,13 @@ export default function setup() { process.exitCode = 1; return; } - const getTokensIsSuccessful = await getTokens(false, true, deploymentTypes); + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); if (!getTokensIsSuccessful) { - printMessage( - 'Error getting tokens', - 'error' - ); + printMessage('Error getting tokens', 'error'); process.exitCode = 1; return; } @@ -123,14 +123,8 @@ export default function setup() { return; } // --workflow-id -i - if ( - options.workflowId - ) { - verboseMessage( - `Exporting workflow "${ - options.workflowId - }"...` - ); + if (options.workflowId) { + verboseMessage(`Exporting workflow "${options.workflowId}"...`); const outcome = await exportWorkflowToFile( options.workflowId, options.file, @@ -146,14 +140,11 @@ export default function setup() { if (!outcome) process.exitCode = 1; } // --all -a - else if ( - options.all - ) { + else if (options.all) { verboseMessage('Exporting all workflows to a single file...'); const outcome = await exportWorkflowsToFile( options.file, options.metadata, - options.extract, { deps: options.deps, useStringArrays: options.useStringArrays, @@ -164,9 +155,7 @@ export default function setup() { if (!outcome) process.exitCode = 1; } // --all-separate -A - else if ( - options.allSeparate - ) { + else if (options.allSeparate) { verboseMessage('Exporting all workflows to separate files...'); const outcome = await exportWorkflowsToFiles( options.metadata, @@ -180,7 +169,6 @@ export default function setup() { ); if (!outcome) process.exitCode = 1; } - } // end command logic inside action handler ); diff --git a/src/cli/iga/workflow/iga-workflow-import.ts b/src/cli/iga/workflow/iga-workflow-import.ts new file mode 100644 index 000000000..e8bed472d --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow-import.ts @@ -0,0 +1,146 @@ +import { frodo, state } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { getTokens } from '../../../ops/AuthenticateOps'; +import { + importFirstWorkflowFromFile, + importWorkflowFromFile, + importWorkflowsFromFile, + importWorkflowsFromFiles, +} from '../../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../../utils/Console.js'; +import { FrodoCommand } from '../../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand( + 'frodo iga workflow import', + [], + deploymentTypes + ); + + program + .description('Import workflows.') + .addOption( + new Option( + '-i, --workflow-id ', + 'Workflow id. If specified, -a and -A are ignored.' + ) + ) + .addOption(new Option('-f, --file ', 'Name of the import file.')) + .addOption( + new Option( + '-a, --all', + 'Import all workflows from single file. Ignored with -i.' + ) + ) + .addOption( + new Option( + '-A, --all-separate', + 'Import all workflows from separate files (*.workflow.json) in the current directory. Ignored with -i or -a.' + ) + ) + .addOption( + new Option( + '--no-deps', + 'Do not import any dependencies (email templates, request forms, events, etc.).' + ) + ) + .action( + // implement program logic inside action handler + async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + const isImportById = options.workflowId && options.file; + const isImportAll = options.all && options.file; + const isImportAllSeparate = options.allSeparate && !options.file; + const isImportFirst = !!options.file; + if ( + !isImportById && + !isImportAll && + !isImportAllSeparate && + !isImportFirst + ) { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + return; + } + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); + if (!getTokensIsSuccessful) { + printMessage('Error getting tokens', 'error'); + process.exitCode = 1; + return; + } + if (!state.getIsIGA()) { + printMessage( + 'Command not supported for non-IGA cloud tenants', + 'error' + ); + process.exitCode = 1; + return; + } + // import by id + if (isImportById) { + verboseMessage(`Importing workflow "${options.workflowId}"...`); + const outcome = await importWorkflowFromFile( + options.workflowId, + options.file, + { + deps: options.deps, + } + ); + if (!outcome) process.exitCode = 1; + } + // --all -a + else if (isImportAll) { + verboseMessage( + `Importing all workflows from a single file (${options.file})...` + ); + const outcome = await importWorkflowsFromFile(options.file, { + deps: options.deps, + }); + if (!outcome) process.exitCode = 1; + } + // --all-separate -A + else if (isImportAllSeparate) { + verboseMessage( + 'Importing all workflows from separate files (*.workflow.json) in current directory...' + ); + const outcome = await importWorkflowsFromFiles({ + deps: options.deps, + }); + if (!outcome) process.exitCode = 1; + } + // import first workflow from file + else if (isImportFirst) { + verboseMessage( + `Importing first workflow from file "${options.file}"...` + ); + const outcome = await importFirstWorkflowFromFile(options.file, { + deps: options.deps, + }); + if (!outcome) process.exitCode = 1; + } + } + // end program logic inside action handler + ); + + return program; +} diff --git a/src/cli/iga/iga-workflow-list.ts b/src/cli/iga/workflow/iga-workflow-list.ts similarity index 75% rename from src/cli/iga/iga-workflow-list.ts rename to src/cli/iga/workflow/iga-workflow-list.ts index 6a79f7e6c..215656393 100644 --- a/src/cli/iga/iga-workflow-list.ts +++ b/src/cli/iga/workflow/iga-workflow-list.ts @@ -1,10 +1,10 @@ import { frodo, state } from '@rockcarver/frodo-lib'; import { Option } from 'commander'; -import { getTokens } from '../../ops/AuthenticateOps'; -import { listWorkflows } from '../../ops/cloud/iga/IgaWorkflowOps'; -import { printMessage, verboseMessage } from '../../utils/Console.js'; -import { FrodoCommand } from '../FrodoCommand'; +import { getTokens } from '../../../ops/AuthenticateOps'; +import { listWorkflows } from '../../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../../utils/Console.js'; +import { FrodoCommand } from '../../FrodoCommand'; const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; @@ -33,12 +33,13 @@ export default function setup() { options, command ); - const getTokensIsSuccessful = await getTokens(false, true, deploymentTypes); + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); if (!getTokensIsSuccessful) { - printMessage( - 'Error getting tokens', - 'error' - ); + printMessage('Error getting tokens', 'error'); process.exitCode = 1; return; } diff --git a/src/cli/iga/iga-workflow.ts b/src/cli/iga/workflow/iga-workflow.ts similarity index 92% rename from src/cli/iga/iga-workflow.ts rename to src/cli/iga/workflow/iga-workflow.ts index ff3273263..a0bc9047f 100644 --- a/src/cli/iga/iga-workflow.ts +++ b/src/cli/iga/workflow/iga-workflow.ts @@ -1,4 +1,4 @@ -import { FrodoStubCommand } from '../FrodoCommand'; +import { FrodoStubCommand } from '../../FrodoCommand'; import DeleteCmd from './iga-workflow-delete.js'; import ExportCmd from './iga-workflow-export.js'; import ImportCmd from './iga-workflow-import.js'; diff --git a/src/ops/NodeOps.ts b/src/ops/NodeOps.ts index 5ce9849df..d79c76e5b 100644 --- a/src/ops/NodeOps.ts +++ b/src/ops/NodeOps.ts @@ -11,7 +11,6 @@ import { type CustomNodeExportOptions, type CustomNodeImportOptions, } from '@rockcarver/frodo-lib/types/ops/NodeOps'; -import { Table } from 'cli-table3'; import fs from 'fs'; import { extractDataToFile, getExtractedData } from '../utils/Config'; @@ -20,6 +19,7 @@ import { createProgressIndicator, createTable, debugMessage, + getTableRowsFromArray, printError, printMessage, stopProgressIndicator, @@ -638,23 +638,6 @@ export function extractCustomNodeScriptsToFiles( return false; } -/** - * Helper that gets multiple rows for a table for array data - * @param table The table to push the rows to - * @param rowName The name of the first row - * @param array The array of data - */ -function getTableRowsFromArray( - table: Table, - rowName: string, - array: string[] -): void { - table.push([rowName['brightCyan'], array.length > 0 ? array[0] : '']); - for (let i = 1; i < array.length; ++i) { - table.push(['', array[i]]); - } -} - /** * Helper that builds an array of lines to print a tree to the console */ diff --git a/src/ops/cloud/iga/IgaWorkflowOps.ts b/src/ops/cloud/iga/IgaWorkflowOps.ts index 01197f3a6..f664fe97e 100644 --- a/src/ops/cloud/iga/IgaWorkflowOps.ts +++ b/src/ops/cloud/iga/IgaWorkflowOps.ts @@ -1,54 +1,73 @@ -import { frodo } from '@rockcarver/frodo-lib'; -import { errorHandler } from '../../utils/OpsUtils'; +import { frodo, FrodoError } from '@rockcarver/frodo-lib'; +import { + ApprovalTask, + ScriptTask, + WorkflowExpression, +} from '@rockcarver/frodo-lib/types/api/cloud/iga/IgaWorkflowApi'; +import { + WorkflowExportInterface, + WorkflowExportOptions, + WorkflowGroup, + WorkflowImportOptions, +} from '@rockcarver/frodo-lib/types/ops/cloud/iga/IgaWorkflowOps'; +import fs from 'fs'; +import { extractDataToFile, getExtractedData } from '../../../utils/Config'; import { + createKeyValueTable, createProgressIndicator, createTable, - debugMessage, + getTableRowsFromArray, printError, printMessage, stopProgressIndicator, updateProgressIndicator, } from '../../../utils/Console'; -import { WorkflowExportInterface, WorkflowExportOptions, WorkflowGroup } from '@rockcarver/frodo-lib/types/ops/cloud/iga/IgaWorkflowOps'; -import { ApprovalTask, ScriptTask, WorkflowExpression } from '@rockcarver/frodo-lib/types/api/cloud/iga/IgaWorkflowApi'; -import { extractDataToFile } from '../../../utils/Config'; +import * as EmailTemplate from '../../EmailTemplateOps'; +import { isScriptExtracted } from '../../ScriptOps'; +import { errorHandler } from '../../utils/OpsUtils'; + const { getTypedFilename, + saveToFile, saveJsonToFile, - getRealmString, getFilePath, getWorkingDirectory, } = frodo.utils; const { - readWorkflows, - readDraftWorkflow, - readPublishedWorkflow, + importWorkflows, readWorkflowGroups, exportWorkflow, exportWorkflows, deleteDraftWorkflow, deletePublishedWorkflow, - deleteWorkflows + deleteWorkflows: _deleteWorkflows, } = frodo.cloud.iga.workflow; /** * List all the workflows * @param {boolean} long Long version, all the fields * @returns {Promise} a promise resolving to true if successful, false otherwise */ -export async function listWorkflows( - long: boolean = false, -): Promise { +export async function listWorkflows(long: boolean = false): Promise { let workflows: WorkflowGroup[] = []; try { workflows = await readWorkflowGroups(); if (!long) { for (const workflow of workflows) { - printMessage(`${workflow.published ? workflow.published.id : workflow.draft.id}`, 'data'); + printMessage( + `${workflow.published ? workflow.published.id : workflow.draft.id}`, + 'data' + ); } return true; } - const table = createTable(['ID', 'Name', 'Drafted', 'Published', 'Mutable']); + const table = createTable([ + 'ID', + 'Name', + 'Drafted', + 'Published', + 'Mutable', + ]); for (const workflowGroup of workflows) { const workflow = workflowGroup.published ?? workflowGroup.draft; table.push([ @@ -56,7 +75,7 @@ export async function listWorkflows( workflow.name, workflowGroup.draft ? 'true'['brightGreen'] : 'false'['brightRed'], workflowGroup.published ? 'true'['brightGreen'] : 'false'['brightRed'], - workflow.mutable ? 'true'['brightGreen'] : 'false'['brightRed'] + workflow.mutable ? 'true'['brightGreen'] : 'false'['brightRed'], ]); } printMessage(table.toString(), 'data'); @@ -67,6 +86,123 @@ export async function listWorkflows( return false; } +/** + * Describe a workflow + * @param {string} workflowId workflow id + * @param {string} file the workflow export file + * @returns {Promise} true if successful, false otherwise + */ +export async function describeWorkflow( + workflowId?: string, + file?: string +): Promise { + try { + const workflowExport = file + ? getWorkflowExportFromFile(getFilePath(file)) + : await exportWorkflow(workflowId, { + deps: true, + useStringArrays: false, + coords: true, + includeReadOnly: true, + }); + if (!workflowId) { + const ids = Object.keys(workflowExport.workflow); + if (ids.length === 0) + throw new FrodoError(`No workflows found in export file ${file}`); + workflowId = ids[0]; + } + // Workflow Details + for (const workflow of [ + workflowExport.workflow[workflowId].draft, + workflowExport.workflow[workflowId].published, + ].filter((w) => w)) { + const table = createKeyValueTable(); + table.push(['Id'['brightCyan'], workflow.id]); + table.push(['Name'['brightCyan'], workflow.name]); + table.push(['Display Name'['brightCyan'], workflow.displayName]); + table.push(['Description'['brightCyan'], workflow.description]); + if (workflow.type) table.push(['Type'['brightCyan'], workflow.type]); + table.push(['Status'['brightCyan'], workflow.status]); + table.push([ + 'Mutable'['brightCyan'], + workflow.mutable ? 'true'['brightGreen'] : 'false'['brightRed'], + ]); + table.push([ + 'ChildType'['brightCyan'], + workflow.childType ? 'true'['brightGreen'] : 'false'['brightRed'], + ]); + getTableRowsFromArray( + table, + `Steps (${workflow.steps.length})`, + workflow.steps.map((s) => s.name) + ); + printMessage(table.toString(), 'data'); + } + // Email Templates + if (Object.entries(workflowExport.emailTemplate).length) { + printMessage( + `\nEmail Templates (${ + Object.entries(workflowExport.emailTemplate).length + }):`, + 'data' + ); + for (const templateData of Object.values(workflowExport.emailTemplate)) { + printMessage( + `- ${EmailTemplate.getOneLineDescription(templateData)}`, + 'data' + ); + } + } + // Events + if (Object.entries(workflowExport.event).length) { + printMessage( + `\nEvents (${Object.entries(workflowExport.event).length}):`, + 'data' + ); + for (const eventData of Object.values(workflowExport.event)) { + printMessage( + `- [${eventData.id['brightCyan']}] ${eventData.name}`, + 'data' + ); + } + } + // Request Forms + if (Object.entries(workflowExport.requestForm).length) { + printMessage( + `\nRequest Forms (${ + Object.entries(workflowExport.requestForm).length + }):`, + 'data' + ); + for (const formData of Object.values(workflowExport.requestForm)) { + printMessage( + `- [${formData.id['brightCyan']}] ${formData.name}`, + 'data' + ); + } + } + // Request Types + if (Object.entries(workflowExport.requestType).length) { + printMessage( + `\nRequest Types (${ + Object.entries(workflowExport.requestType).length + }):`, + 'data' + ); + for (const typeData of Object.values(workflowExport.requestType)) { + printMessage( + `- [${typeData.id['brightCyan']}] ${typeData.displayName}`, + 'data' + ); + } + } + return true; + } catch (error) { + printError(error); + } + return false; +} + /** * Export workflow to file * @param {string} workflowId workflow id @@ -99,14 +235,11 @@ export async function exportWorkflowToFile( file = getTypedFilename(workflowId, 'workflow'); } const filePath = getFilePath(file, true); - if (extract) - extractCustomNodeScriptsToFiles( - exportData, - undefined, - undefined, - !!nodeName - ); - updateProgressIndicator(indicatorId, `Saving ${workflowId} to ${filePath}...`); + if (extract) extractWorkflowScriptsToFiles(exportData); + updateProgressIndicator( + indicatorId, + `Saving ${workflowId} to ${filePath}...` + ); saveJsonToFile(exportData, filePath, includeMeta); stopProgressIndicator( indicatorId, @@ -126,68 +259,378 @@ export async function exportWorkflowToFile( } /** - * Export all custom nodes to file + * Export all workflows to file * @param {string} file file name * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true - * @param {CustomNodeExportOptions} options export options + * @param {WorkflowExportOptions} options export options * @returns {Promise} true if successful, false otherwise */ -export async function exportCustomNodesToFile( +export async function exportWorkflowsToFile( file: string, includeMeta: boolean = true, - options: CustomNodeExportOptions = { + options: WorkflowExportOptions = { + deps: true, useStringArrays: true, + coords: true, + includeReadOnly: false, } ): Promise { try { - const exportData = await exportCustomNodes(options); + const exportData = await exportWorkflows(options, errorHandler); if (!file) { - file = getTypedFilename(`allCustomNodes`, 'nodeTypes'); + file = getTypedFilename(`allWorkflows`, 'workflow'); } saveJsonToFile(exportData, getFilePath(file, true), includeMeta); return true; } catch (error) { - printError(error, `Error exporting custom nodes to file`); + printError(error, `Error exporting workflows to file`); } return false; } /** - * Export all custom nodes to separate files + * Export all workflows to separate files * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true * @param {boolean} extract extracts the scripts from the exports into separate files if true. Default: false - * @param {CustomNodeExportOptions} options export options + * @param {WorkflowExportOptions} options export options * @returns {Promise} true if successful, false otherwise */ -export async function exportCustomNodesToFiles( +export async function exportWorkflowsToFiles( includeMeta: boolean = true, extract: boolean = false, - options: CustomNodeExportOptions = { + options: WorkflowExportOptions = { + deps: true, useStringArrays: true, + coords: true, + includeReadOnly: false, } ): Promise { try { - const exportData = await exportCustomNodes(options); - if (extract) extractCustomNodeScriptsToFiles(exportData); - for (const customNode of Object.values(exportData.nodeTypes)) { + const exportData = await exportWorkflows(options); + if (extract) extractWorkflowScriptsToFiles(exportData); + for (const [workflowId, workflowGroup] of Object.entries( + exportData.workflow + )) { saveToFile( - 'nodeTypes', - customNode, - '_id', - getFilePath( - getTypedFilename(customNode.displayName, 'nodeTypes'), - true - ), + 'workflow', + workflowGroup, + 'id', + getFilePath(getTypedFilename(workflowId, 'workflow'), true), includeMeta ); } return true; } catch (error) { - printError(error, `Error exporting custom nodes to files`); + printError(error, `Error exporting workflows to files`); } return false; } +/** + * Import a workflow from file + * @param {string} workflowId workflow id + * @param {string} file import file name + * @param {WorkflowImportOptions} options import options + * @returns {Promise} true if successful, false otherwise + */ +export async function importWorkflowFromFile( + workflowId: string, + file: string, + options: WorkflowImportOptions = { + deps: true, + } +): Promise { + let indicatorId: string; + try { + indicatorId = createProgressIndicator( + 'indeterminate', + 0, + 'Importing workflow...' + ); + const importData = getWorkflowExportFromFile(getFilePath(file)); + updateProgressIndicator(indicatorId, 'Importing workflow...'); + await importWorkflows(workflowId, importData, options, errorHandler); + stopProgressIndicator( + indicatorId, + `Successfully imported workflow ${workflowId}.`, + 'success' + ); + return true; + } catch (error) { + stopProgressIndicator( + indicatorId, + `Error importing workflow ${workflowId}`, + 'fail' + ); + printError(error); + } + return false; +} + +/** + * Import workflows from file + * @param {String} file file name + * @param {WorkflowImportOptions} options import options + * @returns {Promise} true if successful, false otherwise + */ +export async function importWorkflowsFromFile( + file: string, + options: WorkflowImportOptions = { + deps: true, + } +): Promise { + let indicatorId: string; + try { + indicatorId = createProgressIndicator( + 'indeterminate', + 0, + 'Importing workflows...' + ); + const importData = getWorkflowExportFromFile(getFilePath(file)); + updateProgressIndicator(indicatorId, 'Importing workflows...'); + await importWorkflows(undefined, importData, options, errorHandler); + stopProgressIndicator( + indicatorId, + `Successfully imported workflows.`, + 'success' + ); + return true; + } catch (error) { + stopProgressIndicator(indicatorId, `Error importing workflows.`, 'fail'); + printError(error, `Error importing workflows from file`); + } + return false; +} + +/** + * Import all workflows from separate files + * @param {WorkflowImportOptions} options import options + * @returns {Promise} true if successful, false otherwise + */ +export async function importWorkflowsFromFiles( + options: WorkflowImportOptions = { + deps: true, + } +): Promise { + let indicatorId: string; + const errors: Error[] = []; + try { + const names = fs.readdirSync(getWorkingDirectory()); + const workflowFiles = names.filter((name) => + name.toLowerCase().endsWith('.workflow.json') + ); + indicatorId = createProgressIndicator( + 'determinate', + workflowFiles.length, + 'Importing workflows...' + ); + for (const file of workflowFiles) { + try { + updateProgressIndicator( + indicatorId, + `Importing workflows from file ${file}...` + ); + await importWorkflowsFromFile(file, options); + } catch (error) { + errors.push( + new FrodoError(`Error importing workflows from ${file}`, error) + ); + } + } + if (errors.length > 0) { + throw new FrodoError(`One or more errors importing workflows`, errors); + } + stopProgressIndicator( + indicatorId, + `Successfully imported workflows.`, + 'success' + ); + return true; + } catch (error) { + stopProgressIndicator(indicatorId, `Error(s) importing workflows.`, 'fail'); + printError(error, `Error importing workflows from files`); + } + return false; +} + +/** + * Import first workflow from file + * @param {string} file import file name + * @param {WorkflowImportOptions} options import options + * @returns {Promise} true if successful, false otherwise + */ +export async function importFirstWorkflowFromFile( + file: string, + options: WorkflowImportOptions = { + deps: true, + } +): Promise { + let indicatorId: string; + try { + indicatorId = createProgressIndicator( + 'indeterminate', + 0, + 'Importing workflow...' + ); + const importData = getWorkflowExportFromFile(getFilePath(file)); + const ids = Object.keys(importData.workflow); + if (ids.length === 0) + throw new FrodoError(`No workflows found in import data`); + await importWorkflows(ids[0], importData, options, errorHandler); + stopProgressIndicator( + indicatorId, + `Imported workflow from ${file}`, + 'success' + ); + return true; + } catch (error) { + stopProgressIndicator( + indicatorId, + `Error importing workflow from ${file}`, + 'fail' + ); + printError(error); + } + return false; +} + +/** + * Delete workflow. If both deleteDraft and deletePublished are truthy or falsy, attempt to delete both, otherwise deletes only one of them. + * @param {string} workflowId workflow id + * @param {boolean} deleteDraft true to delete only the draft workflow, false otherwise + * @param {boolean} deletePublished true to delete only the draft workflow, false otherwise + * @returns {Promise} true if successful, false otherwise + */ +export async function deleteWorkflow( + workflowId: string, + deleteDraft?: boolean, + deletePublished?: boolean +): Promise { + let isSuccess = true; + // Attempt to delete draft first + if (deleteDraft || !deletePublished) { + const spinnerId = createProgressIndicator( + 'indeterminate', + undefined, + `Deleting draft workflow ${workflowId}...` + ); + try { + await deleteDraftWorkflow(workflowId); + stopProgressIndicator( + spinnerId, + `Deleted draft workflow ${workflowId}.`, + 'success' + ); + } catch (error) { + stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); + printError(error); + isSuccess = false; + } + } + // Attempt to delete published second + if (deletePublished || !deleteDraft) { + const spinnerId = createProgressIndicator( + 'indeterminate', + undefined, + `Deleting published workflow ${workflowId}...` + ); + try { + await deletePublishedWorkflow(workflowId); + stopProgressIndicator( + spinnerId, + `Deleted published workflow ${workflowId}.`, + 'success' + ); + } catch (error) { + stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); + printError(error); + isSuccess = false; + } + } + return isSuccess; +} + +/** + * Delete workflows + * @returns {Promise} true if successful, false otherwise + */ +export async function deleteWorkflows(): Promise { + const spinnerId = createProgressIndicator( + 'indeterminate', + undefined, + `Deleting workflows...` + ); + try { + await _deleteWorkflows(errorHandler); + stopProgressIndicator(spinnerId, `Deleted workflows.`, 'success'); + return true; + } catch (error) { + stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); + printError(error); + } + return false; +} + +/** + * Get a workflow export from json file. + * + * @param file The path to the workflow export file + * @returns The workflow export + */ +export function getWorkflowExportFromFile( + file: string +): WorkflowExportInterface { + const exportData = JSON.parse( + fs.readFileSync(file, 'utf8') + ) as WorkflowExportInterface; + for (const workflowGroup of Object.values(exportData.workflow)) { + for (const workflow of [ + workflowGroup.draft, + workflowGroup.published, + ].filter((w) => w)) { + for (const step of workflow.steps) { + switch (step.type) { + case 'approvalTask': + case 'fulfillmentTask': + case 'violationTask': { + const actors = (step[step.type] as ApprovalTask).actors; + if ( + !actors || + Array.isArray(actors) || + !actors.isExpression || + !isScriptExtracted(actors.value) + ) + continue; + const scriptRaw = getExtractedData( + actors.value as string, + file.substring(0, file.lastIndexOf('/')) + ); + actors.value = scriptRaw; + continue; + } + case 'scriptTask': { + const scriptTask = step[step.type] as ScriptTask; + if ( + !step.name.startsWith('scriptTask') || + !isScriptExtracted(scriptTask.script) + ) + continue; + const scriptRaw = getExtractedData( + scriptTask.script as string, + file.substring(0, file.lastIndexOf('/')) + ); + scriptTask.script = scriptRaw; + continue; + } + default: + continue; + } + } + } + } + return exportData; +} + /** * Extracts scripts from a workflow export into separate files. * @param {WorkflowExportInterface} exportData The workflow export @@ -198,40 +641,63 @@ export async function exportCustomNodesToFiles( export function extractWorkflowScriptsToFiles( exportData: WorkflowExportInterface, workflowId?: string, - directory?: string, + directory?: string ): boolean { try { const workflows = workflowId ? [exportData.workflow[workflowId]] : Object.values(exportData.workflow); for (const workflowGroup of workflows) { - for (const workflow of [workflowGroup.draft, workflowGroup.published].filter(w => w)) { + for (const workflow of [ + workflowGroup.draft, + workflowGroup.published, + ].filter((w) => w)) { + const workflowDirectory = `${directory ? directory + '/' : ''}${workflow.id}/${workflow.status}`; for (const step of workflow.steps) { switch (step.type) { case 'approvalTask': case 'fulfillmentTask': - case 'violationTask': + case 'violationTask': { const actors = (step[step.type] as ApprovalTask).actors; - if (!actors || Array.isArray(actors) || !actors.isExpression) continue; - const actorScriptText = Array.isArray(actors.value) ? actors.value.join('\n') : actors.value; - const actorFileName = getTypedFilename( + if (!actors || Array.isArray(actors) || !actors.isExpression) + continue; + const scriptText = Array.isArray(actors.value) + ? actors.value.join('\n') + : actors.value; + const scriptFileName = getTypedFilename( step.name, 'workflow', 'js' ); - ((step[step.type] as ApprovalTask).actors as WorkflowExpression).value = extractDataToFile(actorScriptText, actorFileName, `${directory ? directory + '/' : ''}${workflow.id}/${workflow.status}`); + ( + (step[step.type] as ApprovalTask).actors as WorkflowExpression + ).value = extractDataToFile( + scriptText, + scriptFileName, + workflowDirectory + ); continue; - case 'scriptTask': + } + case 'scriptTask': { if (!step.name.startsWith('scriptTask')) continue; const script = (step[step.type] as ScriptTask).script; - const scriptText = Array.isArray(script) ? script.join('\n') : script; + const scriptText = Array.isArray(script) + ? script.join('\n') + : script; const scriptFileName = getTypedFilename( step.name, 'workflow', - (step[step.type] as ScriptTask).language === 'javascript' ? 'js' : 'unknown' + (step[step.type] as ScriptTask).language === 'javascript' + ? 'js' + : 'unknown' + ); + (step[step.type] as ScriptTask).script = extractDataToFile( + scriptText, + scriptFileName, + workflowDirectory ); - (step[step.type] as ScriptTask).script = extractDataToFile(scriptText, scriptFileName, `${directory ? directory + '/' : ''}${workflow.id}/${workflow.status}`); continue; + } default: continue; } @@ -243,4 +709,4 @@ export function extractWorkflowScriptsToFiles( printError(error); } return false; -} \ No newline at end of file +} diff --git a/src/utils/Console.ts b/src/utils/Console.ts index 5f0f7affa..7ee95a607 100644 --- a/src/utils/Console.ts +++ b/src/utils/Console.ts @@ -4,7 +4,7 @@ import { ProgressIndicatorStatusType, ProgressIndicatorType, } from '@rockcarver/frodo-lib/types/utils/Console'; -import Table from 'cli-table3'; +import Table, { Table as TableType } from 'cli-table3'; import Color from 'colors'; import { stderr as logUpdateStderr } from 'log-update'; import c from 'tinyrainbow'; @@ -614,3 +614,20 @@ export function createObjectTable(object, keyMap = {}) { addRows(object, depth, level + 1, table, keyMap); return table; } + +/** + * Helper that gets multiple rows for a table for array data + * @param table The table to push the rows to + * @param rowName The name of the first row + * @param array The array of data + */ +export function getTableRowsFromArray( + table: TableType, + rowName: string, + array: string[] +): void { + table.push([rowName['brightCyan'], array.length > 0 ? array[0] : '']); + for (let i = 1; i < array.length; ++i) { + table.push(['', array[i]]); + } +} From 09e1df2455cd31671e9e56a5f57f07fb126d3209 Mon Sep 17 00:00:00 2001 From: Preston Hales Date: Wed, 4 Mar 2026 18:56:43 -0700 Subject: [PATCH 3/7] wip --- src/cli/iga/workflow/iga-workflow-delete.ts | 19 +- src/cli/iga/workflow/iga-workflow-export.ts | 6 +- src/cli/iga/workflow/iga-workflow-publish.ts | 61 + src/cli/iga/workflow/iga-workflow.ts | 10 + src/ops/cloud/iga/IgaWorkflowOps.ts | 157 +- .../iga-workflow-delete.test.js.snap | 68 + .../iga-workflow-describe.test.js.snap | 66 + .../iga-workflow-export.test.js.snap | 74 + .../iga-workflow-import.test.js.snap | 69 + .../iga-workflow-list.test.js.snap | 65 + .../iga-workflow-publish.test.js.snap | 65 + .../__snapshots__/iga-workflow.test.js.snap | 20 + .../client_cli/en/iga-workflow-delete.test.js | 10 + .../en/iga-workflow-describe.test.js | 10 + .../client_cli/en/iga-workflow-export.test.js | 10 + .../client_cli/en/iga-workflow-import.test.js | 10 + test/client_cli/en/iga-workflow-list.test.js | 10 + .../en/iga-workflow-publish.test.js | 10 + test/client_cli/en/iga-workflow.test.js | 10 + test/client_cli/en/iga.test.js | 10 + .../iga-workflow-describe.e2e.test.js.snap | 196 + .../iga-workflow-export.e2e.test.js.snap | 91490 ++++++++++++++++ .../iga-workflow-list.e2e.test.js.snap | 93 + .../iga-workflow-publish.e2e.test.js.snap | 24 + .../exports/all/allWorkflows.workflow.json | 15795 +++ test/e2e/iga-workflow-describe.e2e.test.js | 84 + test/e2e/iga-workflow-export.e2e.test.js | 102 + test/e2e/iga-workflow-list.e2e.test.js | 82 + test/e2e/iga-workflow-publish.e2e.test.js | 80 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 1254 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 882 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 1254 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 882 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 6287 ++ .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 6522 ++ .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 9037 ++ .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 1597 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 254 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 8546 ++ .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 1597 + .../0_890022063/am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../0_890022063/iga_2664973160/recording.har | 147 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 147 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 147 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 268 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 129 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + test/e2e/utils/TestConfig.js | 11 + 98 files changed, 158860 insertions(+), 69 deletions(-) create mode 100644 src/cli/iga/workflow/iga-workflow-publish.ts create mode 100644 test/client_cli/en/__snapshots__/iga-workflow-delete.test.js.snap create mode 100644 test/client_cli/en/__snapshots__/iga-workflow-describe.test.js.snap create mode 100644 test/client_cli/en/__snapshots__/iga-workflow-export.test.js.snap create mode 100644 test/client_cli/en/__snapshots__/iga-workflow-import.test.js.snap create mode 100644 test/client_cli/en/__snapshots__/iga-workflow-list.test.js.snap create mode 100644 test/client_cli/en/__snapshots__/iga-workflow-publish.test.js.snap create mode 100644 test/client_cli/en/__snapshots__/iga-workflow.test.js.snap create mode 100644 test/client_cli/en/iga-workflow-delete.test.js create mode 100644 test/client_cli/en/iga-workflow-describe.test.js create mode 100644 test/client_cli/en/iga-workflow-export.test.js create mode 100644 test/client_cli/en/iga-workflow-import.test.js create mode 100644 test/client_cli/en/iga-workflow-list.test.js create mode 100644 test/client_cli/en/iga-workflow-publish.test.js create mode 100644 test/client_cli/en/iga-workflow.test.js create mode 100644 test/client_cli/en/iga.test.js create mode 100644 test/e2e/__snapshots__/iga-workflow-describe.e2e.test.js.snap create mode 100644 test/e2e/__snapshots__/iga-workflow-export.e2e.test.js.snap create mode 100644 test/e2e/__snapshots__/iga-workflow-list.e2e.test.js.snap create mode 100644 test/e2e/__snapshots__/iga-workflow-publish.e2e.test.js.snap create mode 100644 test/e2e/exports/all/allWorkflows.workflow.json create mode 100644 test/e2e/iga-workflow-describe.e2e.test.js create mode 100644 test/e2e/iga-workflow-export.e2e.test.js create mode 100644 test/e2e/iga-workflow-list.e2e.test.js create mode 100644 test/e2e/iga-workflow-publish.e2e.test.js create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/openidm_3290118515/recording.har diff --git a/src/cli/iga/workflow/iga-workflow-delete.ts b/src/cli/iga/workflow/iga-workflow-delete.ts index 14cb6df2d..f3567c8db 100644 --- a/src/cli/iga/workflow/iga-workflow-delete.ts +++ b/src/cli/iga/workflow/iga-workflow-delete.ts @@ -21,23 +21,23 @@ export default function setup() { .addOption( new Option( '-i, --workflow-id ', - 'Workflow id/name. If specified, -a is ignored. By default, deletes both draft and published unless -d or -p are defined exclusively.' + 'Workflow id. If specified, -a is ignored. By default, deletes both draft and published unless -d or -p are used exclusively.' ) ) .addOption( - new Option( - '-d, --draft-only', - 'Delete only the draft workflow. Ignored with -a.' - ) + new Option('-d, --draft-only', 'Delete only the draft workflow(s).') ) .addOption( new Option( '-p, --published-only', - 'Delete only the published workflow. Ignored with -a.' + 'Delete only the published workflow(s).' ) ) .addOption( - new Option('-a, --all', 'Delete all workflows. Ignored with -i.') + new Option( + '-a, --all', + 'Delete all workflows. By default, deletes both draft and published unless -d or -p are used exclusively. Ignored with -i.' + ) ) .action( // implement command logic inside action handler @@ -90,7 +90,10 @@ export default function setup() { // --all -a else if (options.all) { verboseMessage('Deleting all workflows...'); - const outcome = await deleteWorkflows(); + const outcome = await deleteWorkflows( + options.draftOnly, + options.publishedOnly + ); if (!outcome) process.exitCode = 1; } } diff --git a/src/cli/iga/workflow/iga-workflow-export.ts b/src/cli/iga/workflow/iga-workflow-export.ts index be0f0465f..3ee3f35f6 100644 --- a/src/cli/iga/workflow/iga-workflow-export.ts +++ b/src/cli/iga/workflow/iga-workflow-export.ts @@ -50,7 +50,7 @@ export default function setup() { .addOption( new Option( '-N, --no-metadata', - 'Does not include metadata in the export file.' + 'Do not include metadata in the export file.' ) ) @@ -69,13 +69,13 @@ export default function setup() { .addOption( new Option( '-R, --read-only', - 'Export read-only config (with the exception of default scripts) in addition to the importable config.' + 'Export non-mutable workflows in addition to the mutable workflows.' ) ) .addOption( new Option( '--no-coords', - 'Do not include the x and y coordinate positions of the journey/tree nodes.' + 'Do not include the x and y coordinate positions of the workflow tasks.' ) ) .addOption( diff --git a/src/cli/iga/workflow/iga-workflow-publish.ts b/src/cli/iga/workflow/iga-workflow-publish.ts new file mode 100644 index 000000000..5364a19a0 --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow-publish.ts @@ -0,0 +1,61 @@ +import { frodo, state } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { getTokens } from '../../../ops/AuthenticateOps'; +import { publishWorkflow } from '../../../ops/cloud/iga/IgaWorkflowOps'; +import { printMessage, verboseMessage } from '../../../utils/Console'; +import { FrodoCommand } from '../../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY } = frodo.utils.constants; + +const deploymentTypes = [CLOUD_DEPLOYMENT_TYPE_KEY]; + +export default function setup() { + const program = new FrodoCommand('frodo iga workflow publish'); + + program + .description('Publish workflows.') + .addOption(new Option('-i, --workflow-id ', 'Workflow id.')) + .action(async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + if (!options.workflowId) { + printMessage( + 'Unrecognized combination of options or no options...', + 'error' + ); + program.help(); + process.exitCode = 1; + return; + } + const getTokensIsSuccessful = await getTokens( + false, + true, + deploymentTypes + ); + if (!getTokensIsSuccessful) { + printMessage('Error getting tokens', 'error'); + process.exitCode = 1; + return; + } + if (!state.getIsIGA()) { + printMessage( + 'Command not supported for non-IGA cloud tenants', + 'error' + ); + process.exitCode = 1; + return; + } + verboseMessage(`Publishing workflow ${options.workflowId}...`); + const outcome = await publishWorkflow(options.workflowId); + if (!outcome) process.exitCode = 1; + }); + + return program; +} diff --git a/src/cli/iga/workflow/iga-workflow.ts b/src/cli/iga/workflow/iga-workflow.ts index a0bc9047f..3be0dec7d 100644 --- a/src/cli/iga/workflow/iga-workflow.ts +++ b/src/cli/iga/workflow/iga-workflow.ts @@ -1,8 +1,10 @@ import { FrodoStubCommand } from '../../FrodoCommand'; import DeleteCmd from './iga-workflow-delete.js'; +import DescribeCmd from './iga-workflow-describe.js'; import ExportCmd from './iga-workflow-export.js'; import ImportCmd from './iga-workflow-import.js'; import ListCmd from './iga-workflow-list.js'; +import PublishCmd from './iga-workflow-publish.js'; export default function setup() { const program = new FrodoStubCommand('frodo iga workflow'); @@ -23,5 +25,13 @@ export default function setup() { ImportCmd().name('import').description('Import workflows.') ); + program.addCommand( + DescribeCmd().name('describe').description('Describe workflow.') + ); + + program.addCommand( + PublishCmd().name('publish').description('Publish workflow.') + ); + return program; } diff --git a/src/ops/cloud/iga/IgaWorkflowOps.ts b/src/ops/cloud/iga/IgaWorkflowOps.ts index f664fe97e..6f44b1fc4 100644 --- a/src/ops/cloud/iga/IgaWorkflowOps.ts +++ b/src/ops/cloud/iga/IgaWorkflowOps.ts @@ -35,12 +35,12 @@ const { getWorkingDirectory, } = frodo.utils; const { + publishWorkflow: _publishWorkflow, importWorkflows, readWorkflowGroups, exportWorkflow, exportWorkflows, - deleteDraftWorkflow, - deletePublishedWorkflow, + deleteWorkflow: _deleteWorkflow, deleteWorkflows: _deleteWorkflows, } = frodo.cloud.iga.workflow; /** @@ -116,6 +116,10 @@ export async function describeWorkflow( workflowExport.workflow[workflowId].draft, workflowExport.workflow[workflowId].published, ].filter((w) => w)) { + printMessage( + `${workflow.status.charAt(0).toUpperCase() + workflow.status.slice(1)} Workflow`, + 'data' + ); const table = createKeyValueTable(); table.push(['Id'['brightCyan'], workflow.id]); table.push(['Name'['brightCyan'], workflow.name]); @@ -136,7 +140,7 @@ export async function describeWorkflow( `Steps (${workflow.steps.length})`, workflow.steps.map((s) => s.name) ); - printMessage(table.toString(), 'data'); + printMessage(table.toString() + '\n', 'data'); } // Email Templates if (Object.entries(workflowExport.emailTemplate).length) { @@ -230,7 +234,7 @@ export async function exportWorkflowToFile( `Exporting ${workflowId}...` ); try { - const exportData = await exportWorkflow(workflowId, options, errorHandler); + const exportData = await exportWorkflow(workflowId, options); if (!file) { file = getTypedFilename(workflowId, 'workflow'); } @@ -306,7 +310,7 @@ export async function exportWorkflowsToFiles( } ): Promise { try { - const exportData = await exportWorkflows(options); + const exportData = await exportWorkflows(options, errorHandler); if (extract) extractWorkflowScriptsToFiles(exportData); for (const [workflowId, workflowGroup] of Object.entries( exportData.workflow @@ -349,7 +353,7 @@ export async function importWorkflowFromFile( ); const importData = getWorkflowExportFromFile(getFilePath(file)); updateProgressIndicator(indicatorId, 'Importing workflow...'); - await importWorkflows(workflowId, importData, options, errorHandler); + await importWorkflows(workflowId, importData, options); stopProgressIndicator( indicatorId, `Successfully imported workflow ${workflowId}.`, @@ -476,7 +480,7 @@ export async function importFirstWorkflowFromFile( const ids = Object.keys(importData.workflow); if (ids.length === 0) throw new FrodoError(`No workflows found in import data`); - await importWorkflows(ids[0], importData, options, errorHandler); + await importWorkflows(ids[0], importData, options); stopProgressIndicator( indicatorId, `Imported workflow from ${file}`, @@ -498,7 +502,7 @@ export async function importFirstWorkflowFromFile( * Delete workflow. If both deleteDraft and deletePublished are truthy or falsy, attempt to delete both, otherwise deletes only one of them. * @param {string} workflowId workflow id * @param {boolean} deleteDraft true to delete only the draft workflow, false otherwise - * @param {boolean} deletePublished true to delete only the draft workflow, false otherwise + * @param {boolean} deletePublished true to delete only the published workflow, false otherwise * @returns {Promise} true if successful, false otherwise */ export async function deleteWorkflow( @@ -506,62 +510,55 @@ export async function deleteWorkflow( deleteDraft?: boolean, deletePublished?: boolean ): Promise { - let isSuccess = true; - // Attempt to delete draft first - if (deleteDraft || !deletePublished) { - const spinnerId = createProgressIndicator( - 'indeterminate', - undefined, - `Deleting draft workflow ${workflowId}...` + const spinnerId = createProgressIndicator( + 'indeterminate', + undefined, + `Deleting workflow ${workflowId}...` + ); + try { + const result = await _deleteWorkflow( + workflowId, + deleteDraft || !deletePublished, + deletePublished || !deleteDraft, + errorHandler ); - try { - await deleteDraftWorkflow(workflowId); - stopProgressIndicator( - spinnerId, - `Deleted draft workflow ${workflowId}.`, - 'success' - ); - } catch (error) { - stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); - printError(error); - isSuccess = false; + if (!result.draft && !result.published) { + throw new FrodoError(`Failed to delete workflow ${workflowId}`); } - } - // Attempt to delete published second - if (deletePublished || !deleteDraft) { - const spinnerId = createProgressIndicator( - 'indeterminate', - undefined, - `Deleting published workflow ${workflowId}...` + stopProgressIndicator( + spinnerId, + `Deleted workflow ${workflowId}.`, + 'success' ); - try { - await deletePublishedWorkflow(workflowId); - stopProgressIndicator( - spinnerId, - `Deleted published workflow ${workflowId}.`, - 'success' - ); - } catch (error) { - stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); - printError(error); - isSuccess = false; - } + return true; + } catch (error) { + stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); + printError(error); } - return isSuccess; + return false; } /** - * Delete workflows + * Delete workflows. If both deleteDraft and deletePublished are truthy or falsy, attempt to delete all of both types, otherwise deletes only those of one type. + * @param {boolean} deleteDraft true to delete only the draft workflows, false otherwise + * @param {boolean} deletePublished true to delete only the published workflows, false otherwise * @returns {Promise} true if successful, false otherwise */ -export async function deleteWorkflows(): Promise { +export async function deleteWorkflows( + deleteDraft?: boolean, + deletePublished?: boolean +): Promise { const spinnerId = createProgressIndicator( 'indeterminate', undefined, `Deleting workflows...` ); try { - await _deleteWorkflows(errorHandler); + await _deleteWorkflows( + deleteDraft || !deletePublished, + deletePublished || !deleteDraft, + errorHandler + ); stopProgressIndicator(spinnerId, `Deleted workflows.`, 'success'); return true; } catch (error) { @@ -571,6 +568,32 @@ export async function deleteWorkflows(): Promise { return false; } +/** + * + * @param {string} workflowId workflow id + * @returns {Promise} true if successful, false otherwise + */ +export async function publishWorkflow(workflowId: string): Promise { + const spinnerId = createProgressIndicator( + 'indeterminate', + undefined, + `Publishing workflow ${workflowId}...` + ); + try { + await _publishWorkflow(workflowId); + stopProgressIndicator( + spinnerId, + `Published workflow ${workflowId}.`, + 'success' + ); + return true; + } catch (error) { + stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); + printError(error); + } + return false; +} + /** * Get a workflow export from json file. * @@ -593,7 +616,7 @@ export function getWorkflowExportFromFile( case 'approvalTask': case 'fulfillmentTask': case 'violationTask': { - const actors = (step[step.type] as ApprovalTask).actors; + const actors = (step[step.type] as ApprovalTask)?.actors; if ( !actors || Array.isArray(actors) || @@ -606,6 +629,16 @@ export function getWorkflowExportFromFile( file.substring(0, file.lastIndexOf('/')) ); actors.value = scriptRaw; + const uiConfigActors = + workflow.staticNodes?.uiConfig?.[step.name]?.actors; + if ( + !uiConfigActors || + Array.isArray(uiConfigActors) || + !uiConfigActors.isExpression || + !isScriptExtracted(uiConfigActors.value) + ) + continue; + uiConfigActors.value = scriptRaw; continue; } case 'scriptTask': { @@ -658,7 +691,7 @@ export function extractWorkflowScriptsToFiles( case 'approvalTask': case 'fulfillmentTask': case 'violationTask': { - const actors = (step[step.type] as ApprovalTask).actors; + const actors = (step[step.type] as ApprovalTask)?.actors; if (!actors || Array.isArray(actors) || !actors.isExpression) continue; const scriptText = Array.isArray(actors.value) @@ -669,13 +702,22 @@ export function extractWorkflowScriptsToFiles( 'workflow', 'js' ); - ( - (step[step.type] as ApprovalTask).actors as WorkflowExpression - ).value = extractDataToFile( + const extractedFile = extractDataToFile( scriptText, - scriptFileName, - workflowDirectory + `${workflowDirectory}/${scriptFileName}` ); + ( + (step[step.type] as ApprovalTask).actors as WorkflowExpression + ).value = extractedFile; + const uiConfigActors = + workflow.staticNodes?.uiConfig?.[step.name]?.actors; + if ( + !uiConfigActors || + Array.isArray(uiConfigActors) || + !uiConfigActors.isExpression + ) + continue; + (uiConfigActors as WorkflowExpression).value = extractedFile; continue; } case 'scriptTask': { @@ -693,8 +735,7 @@ export function extractWorkflowScriptsToFiles( ); (step[step.type] as ScriptTask).script = extractDataToFile( scriptText, - scriptFileName, - workflowDirectory + `${workflowDirectory}/${scriptFileName}` ); continue; } diff --git a/test/client_cli/en/__snapshots__/iga-workflow-delete.test.js.snap b/test/client_cli/en/__snapshots__/iga-workflow-delete.test.js.snap new file mode 100644 index 000000000..a6bdcd75e --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-delete.test.js.snap @@ -0,0 +1,68 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga workflow delete' should be expected english 1`] = ` +"Usage: frodo iga workflow delete [options] [host] [realm] [username] [password] + +Delete workflows. + +Arguments: + host AM base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring or alias. + realm Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise. (default: "alpha" for Identity Cloud tenants, "/" otherwise.) + username Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees. + password Password. + +Options: + -a, --all Delete all workflows. By default, deletes both draft and published unless -d or -p are used exclusively. Ignored with -i. + --curlirize Output all network calls in curl format. + -d, --draft-only Delete only the draft workflow(s). + -D, --directory Set the working directory. + --debug Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting. + --flush-cache Flush token cache. + -h, --help Help + -i, --workflow-id Workflow id. If specified, -a is ignored. By default, deletes both draft and published unless -d or -p are used exclusively. + --idm-host IDM base URL, e.g.: https://cdk.idm.example.com/myidm. Use only if your IDM installation resides in a different domain and/or if the base path differs from the default "/openidm". + -k, --insecure Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://:), in that case the proxy must provide this capability. (default: Don't allow insecure connections) + --login-client-id Specify a custom OAuth2 client id to use a your own oauth2 client for IDM API calls in deployments of type "cloud" or "forgeops". Your custom client must be configured as a public client and allow the authorization code grant using the "openid fr:idm:*" scope. Use the "--redirect-uri" parameter if you have configured a custom redirect uri (default: "/platform/appAuthHelperRedirect.html"). + --login-redirect-uri Specify a custom redirect URI to use with your custom OAuth2 client (efault: "/platform/appAuthHelperRedirect.html"). + -m, --type Override auto-detected deployment type. Valid values for type: + classic: A classic Access Management-only deployment with custom layout and configuration. + cloud: A ForgeRock Identity Cloud environment. + forgeops: A ForgeOps CDK or CDM deployment. + The detected or provided deployment type controls certain behavior like obtaining an Identity Management admin token or not and whether to export/import referenced email templates or how to walk through the tenant admin login flow of Identity Cloud and handle MFA (choices: "classic", "cloud", "forgeops") + --no-cache Disable token cache for this operation. + -p, --published-only Delete only the published workflow(s). + --passphrase The passphrase for the Amster private key if it is encrypted. + --private-key File containing the private key for authenticating with Amster. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + --retry Retry failed operations. Valid values for strategy: + everything: Retry all failed operations. + network: Retry only network-related failed operations. + nothing: Do not retry failed operations. + The selected retry strategy controls how the CLI handles failures. (choices: "nothing", "everything", "network", default: Do not retry failed operations.) + --sa-id Service account id. + --sa-jwk-file File containing the JSON Web Key (JWK) associated with the the service account. + --use-realm-prefix-on-managed-objects Set to true if you want to use the realm name as a prefix on managed object configuration, e.g. managed/alpha_user, managed/alpha_application or managed/bravo_organization. When false, the default behaviour of using managed/user etc. is retained. This option is ignored when the deployment type is "cloud". + --verbose Verbose output during command execution. If specified, may or may not produce additional output. + +Environment Variables: + FRODO_HOST: AM base URL. Overridden by 'host' argument. + FRODO_IDM_HOST: IDM base URL. Overridden by '--idm-host' option. + FRODO_REALM: Realm. Overridden by 'realm' argument. + FRODO_USERNAME: Username. Overridden by 'username' argument. + FRODO_PASSWORD: Password. Overridden by 'password' argument. + FRODO_LOGIN_CLIENT_ID: OAuth2 client id for IDM API calls. Overridden by '--login-client-id' option. + FRODO_LOGIN_REDIRECT_URI: Redirect Uri for custom OAuth2 client id. Overridden by '--login-redirect-uri' option. + FRODO_SA_ID: Service account uuid. Overridden by '--sa-id' option. + FRODO_SA_JWK: Service account JWK. Overridden by '--sa-jwk-file' option but takes the actual JWK as a value, not a file name. + FRODO_AMSTER_PASSPHRASE: Passphrase for the Amster private key if it is encrypted. Overridden by '--passphrase' option. + FRODO_AMSTER_PRIVATE_KEY: Amster private key. Overridden by '--private-key' option but takes the actual private key as a value (i.e. the file contents), not a file name. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option. + FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'. + FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'. + FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use. When using an Amster private key, specifies which journey to use for Amster authentication as opposed to the default 'amsterService' journey. + FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'. + FRODO_IGA: Set to "true" to enable IGA (Identity Governance) endpoints for cloud deployments, or "false" to disable them, overriding auto-detected value. + FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file. + FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH. + +" +`; diff --git a/test/client_cli/en/__snapshots__/iga-workflow-describe.test.js.snap b/test/client_cli/en/__snapshots__/iga-workflow-describe.test.js.snap new file mode 100644 index 000000000..587108413 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-describe.test.js.snap @@ -0,0 +1,66 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga workflow describe' should be expected english 1`] = ` +"Usage: frodo iga workflow describe [options] [host] [realm] [username] [password] + +Describe workflow. + +Arguments: + host AM base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring or alias. + realm Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise. (default: "alpha" for Identity Cloud tenants, "/" otherwise.) + username Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees. + password Password. + +Options: + --curlirize Output all network calls in curl format. + -D, --directory Set the working directory. + --debug Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting. + -f, --file Name of the workflow export file to describe. If not specified, will automatically pull the workflow export data of the provided id from the tenant. + --flush-cache Flush token cache. + -h, --help Help + -i, --workflow-id Workflow id. If not specified, will describe first workflow in the provided export file. + --idm-host IDM base URL, e.g.: https://cdk.idm.example.com/myidm. Use only if your IDM installation resides in a different domain and/or if the base path differs from the default "/openidm". + -k, --insecure Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://:), in that case the proxy must provide this capability. (default: Don't allow insecure connections) + --login-client-id Specify a custom OAuth2 client id to use a your own oauth2 client for IDM API calls in deployments of type "cloud" or "forgeops". Your custom client must be configured as a public client and allow the authorization code grant using the "openid fr:idm:*" scope. Use the "--redirect-uri" parameter if you have configured a custom redirect uri (default: "/platform/appAuthHelperRedirect.html"). + --login-redirect-uri Specify a custom redirect URI to use with your custom OAuth2 client (efault: "/platform/appAuthHelperRedirect.html"). + -m, --type Override auto-detected deployment type. Valid values for type: + classic: A classic Access Management-only deployment with custom layout and configuration. + cloud: A ForgeRock Identity Cloud environment. + forgeops: A ForgeOps CDK or CDM deployment. + The detected or provided deployment type controls certain behavior like obtaining an Identity Management admin token or not and whether to export/import referenced email templates or how to walk through the tenant admin login flow of Identity Cloud and handle MFA (choices: "classic", "cloud", "forgeops") + --no-cache Disable token cache for this operation. + --passphrase The passphrase for the Amster private key if it is encrypted. + --private-key File containing the private key for authenticating with Amster. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + --retry Retry failed operations. Valid values for strategy: + everything: Retry all failed operations. + network: Retry only network-related failed operations. + nothing: Do not retry failed operations. + The selected retry strategy controls how the CLI handles failures. (choices: "nothing", "everything", "network", default: Do not retry failed operations.) + --sa-id Service account id. + --sa-jwk-file File containing the JSON Web Key (JWK) associated with the the service account. + --use-realm-prefix-on-managed-objects Set to true if you want to use the realm name as a prefix on managed object configuration, e.g. managed/alpha_user, managed/alpha_application or managed/bravo_organization. When false, the default behaviour of using managed/user etc. is retained. This option is ignored when the deployment type is "cloud". + --verbose Verbose output during command execution. If specified, may or may not produce additional output. + +Environment Variables: + FRODO_HOST: AM base URL. Overridden by 'host' argument. + FRODO_IDM_HOST: IDM base URL. Overridden by '--idm-host' option. + FRODO_REALM: Realm. Overridden by 'realm' argument. + FRODO_USERNAME: Username. Overridden by 'username' argument. + FRODO_PASSWORD: Password. Overridden by 'password' argument. + FRODO_LOGIN_CLIENT_ID: OAuth2 client id for IDM API calls. Overridden by '--login-client-id' option. + FRODO_LOGIN_REDIRECT_URI: Redirect Uri for custom OAuth2 client id. Overridden by '--login-redirect-uri' option. + FRODO_SA_ID: Service account uuid. Overridden by '--sa-id' option. + FRODO_SA_JWK: Service account JWK. Overridden by '--sa-jwk-file' option but takes the actual JWK as a value, not a file name. + FRODO_AMSTER_PASSPHRASE: Passphrase for the Amster private key if it is encrypted. Overridden by '--passphrase' option. + FRODO_AMSTER_PRIVATE_KEY: Amster private key. Overridden by '--private-key' option but takes the actual private key as a value (i.e. the file contents), not a file name. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option. + FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'. + FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'. + FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use. When using an Amster private key, specifies which journey to use for Amster authentication as opposed to the default 'amsterService' journey. + FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'. + FRODO_IGA: Set to "true" to enable IGA (Identity Governance) endpoints for cloud deployments, or "false" to disable them, overriding auto-detected value. + FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file. + FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH. + +" +`; diff --git a/test/client_cli/en/__snapshots__/iga-workflow-export.test.js.snap b/test/client_cli/en/__snapshots__/iga-workflow-export.test.js.snap new file mode 100644 index 000000000..658a523e4 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-export.test.js.snap @@ -0,0 +1,74 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga workflow export' should be expected english 1`] = ` +"Usage: frodo iga workflow export [options] [host] [realm] [username] [password] + +Export workflows. + +Arguments: + host AM base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring or alias. + realm Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise. (default: "alpha" for Identity Cloud tenants, "/" otherwise.) + username Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees. + password Password. + +Options: + -a, --all Export all workflows to a single file. Ignored with -i. + -A, --all-separate Export all workflows as separate files .workflow.json. Ignored with -i, and -a. + --curlirize Output all network calls in curl format. + -D, --directory Set the working directory. + --debug Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting. + -f, --file [file] Name of the export file. Ignored with -A. Defaults to .workflow.json. + --flush-cache Flush token cache. + -h, --help Help + -i, --workflow-id Workflow id. If specified, -a and -A are ignored. + --idm-host IDM base URL, e.g.: https://cdk.idm.example.com/myidm. Use only if your IDM installation resides in a different domain and/or if the base path differs from the default "/openidm". + -k, --insecure Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://:), in that case the proxy must provide this capability. (default: Don't allow insecure connections) + --login-client-id Specify a custom OAuth2 client id to use a your own oauth2 client for IDM API calls in deployments of type "cloud" or "forgeops". Your custom client must be configured as a public client and allow the authorization code grant using the "openid fr:idm:*" scope. Use the "--redirect-uri" parameter if you have configured a custom redirect uri (default: "/platform/appAuthHelperRedirect.html"). + --login-redirect-uri Specify a custom redirect URI to use with your custom OAuth2 client (efault: "/platform/appAuthHelperRedirect.html"). + -m, --type Override auto-detected deployment type. Valid values for type: + classic: A classic Access Management-only deployment with custom layout and configuration. + cloud: A ForgeRock Identity Cloud environment. + forgeops: A ForgeOps CDK or CDM deployment. + The detected or provided deployment type controls certain behavior like obtaining an Identity Management admin token or not and whether to export/import referenced email templates or how to walk through the tenant admin login flow of Identity Cloud and handle MFA (choices: "classic", "cloud", "forgeops") + -N, --no-metadata Do not include metadata in the export file. + --no-cache Disable token cache for this operation. + --no-coords Do not include the x and y coordinate positions of the workflow tasks. + --no-deps Do not include any dependencies (email templates, request forms, events, etc.). + --passphrase The passphrase for the Amster private key if it is encrypted. + --private-key File containing the private key for authenticating with Amster. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + -R, --read-only Export non-mutable workflows in addition to the mutable workflows. + --retry Retry failed operations. Valid values for strategy: + everything: Retry all failed operations. + network: Retry only network-related failed operations. + nothing: Do not retry failed operations. + The selected retry strategy controls how the CLI handles failures. (choices: "nothing", "everything", "network", default: Do not retry failed operations.) + --sa-id Service account id. + --sa-jwk-file File containing the JSON Web Key (JWK) associated with the the service account. + --use-realm-prefix-on-managed-objects Set to true if you want to use the realm name as a prefix on managed object configuration, e.g. managed/alpha_user, managed/alpha_application or managed/bravo_organization. When false, the default behaviour of using managed/user etc. is retained. This option is ignored when the deployment type is "cloud". + --use-string-arrays Where applicable, use string arrays to store scripts. (default: off) + --verbose Verbose output during command execution. If specified, may or may not produce additional output. + -x, --extract Extract the scripts from the exported file, and save them to separate files. Ignored with -a. + +Environment Variables: + FRODO_HOST: AM base URL. Overridden by 'host' argument. + FRODO_IDM_HOST: IDM base URL. Overridden by '--idm-host' option. + FRODO_REALM: Realm. Overridden by 'realm' argument. + FRODO_USERNAME: Username. Overridden by 'username' argument. + FRODO_PASSWORD: Password. Overridden by 'password' argument. + FRODO_LOGIN_CLIENT_ID: OAuth2 client id for IDM API calls. Overridden by '--login-client-id' option. + FRODO_LOGIN_REDIRECT_URI: Redirect Uri for custom OAuth2 client id. Overridden by '--login-redirect-uri' option. + FRODO_SA_ID: Service account uuid. Overridden by '--sa-id' option. + FRODO_SA_JWK: Service account JWK. Overridden by '--sa-jwk-file' option but takes the actual JWK as a value, not a file name. + FRODO_AMSTER_PASSPHRASE: Passphrase for the Amster private key if it is encrypted. Overridden by '--passphrase' option. + FRODO_AMSTER_PRIVATE_KEY: Amster private key. Overridden by '--private-key' option but takes the actual private key as a value (i.e. the file contents), not a file name. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option. + FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'. + FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'. + FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use. When using an Amster private key, specifies which journey to use for Amster authentication as opposed to the default 'amsterService' journey. + FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'. + FRODO_IGA: Set to "true" to enable IGA (Identity Governance) endpoints for cloud deployments, or "false" to disable them, overriding auto-detected value. + FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file. + FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH. + +" +`; diff --git a/test/client_cli/en/__snapshots__/iga-workflow-import.test.js.snap b/test/client_cli/en/__snapshots__/iga-workflow-import.test.js.snap new file mode 100644 index 000000000..a0ce8e0a6 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-import.test.js.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga workflow import' should be expected english 1`] = ` +"Usage: frodo iga workflow import [options] [host] [realm] [username] [password] + +Import workflows. + +Arguments: + host AM base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring or alias. + realm Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise. (default: "alpha" for Identity Cloud tenants, "/" otherwise.) + username Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees. + password Password. + +Options: + -a, --all Import all workflows from single file. Ignored with -i. + -A, --all-separate Import all workflows from separate files (*.workflow.json) in the current directory. Ignored with -i or -a. + --curlirize Output all network calls in curl format. + -D, --directory Set the working directory. + --debug Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting. + -f, --file Name of the import file. + --flush-cache Flush token cache. + -h, --help Help + -i, --workflow-id Workflow id. If specified, -a and -A are ignored. + --idm-host IDM base URL, e.g.: https://cdk.idm.example.com/myidm. Use only if your IDM installation resides in a different domain and/or if the base path differs from the default "/openidm". + -k, --insecure Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://:), in that case the proxy must provide this capability. (default: Don't allow insecure connections) + --login-client-id Specify a custom OAuth2 client id to use a your own oauth2 client for IDM API calls in deployments of type "cloud" or "forgeops". Your custom client must be configured as a public client and allow the authorization code grant using the "openid fr:idm:*" scope. Use the "--redirect-uri" parameter if you have configured a custom redirect uri (default: "/platform/appAuthHelperRedirect.html"). + --login-redirect-uri Specify a custom redirect URI to use with your custom OAuth2 client (efault: "/platform/appAuthHelperRedirect.html"). + -m, --type Override auto-detected deployment type. Valid values for type: + classic: A classic Access Management-only deployment with custom layout and configuration. + cloud: A ForgeRock Identity Cloud environment. + forgeops: A ForgeOps CDK or CDM deployment. + The detected or provided deployment type controls certain behavior like obtaining an Identity Management admin token or not and whether to export/import referenced email templates or how to walk through the tenant admin login flow of Identity Cloud and handle MFA (choices: "classic", "cloud", "forgeops") + --no-cache Disable token cache for this operation. + --no-deps Do not import any dependencies (email templates, request forms, events, etc.). + --passphrase The passphrase for the Amster private key if it is encrypted. + --private-key File containing the private key for authenticating with Amster. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + --retry Retry failed operations. Valid values for strategy: + everything: Retry all failed operations. + network: Retry only network-related failed operations. + nothing: Do not retry failed operations. + The selected retry strategy controls how the CLI handles failures. (choices: "nothing", "everything", "network", default: Do not retry failed operations.) + --sa-id Service account id. + --sa-jwk-file File containing the JSON Web Key (JWK) associated with the the service account. + --use-realm-prefix-on-managed-objects Set to true if you want to use the realm name as a prefix on managed object configuration, e.g. managed/alpha_user, managed/alpha_application or managed/bravo_organization. When false, the default behaviour of using managed/user etc. is retained. This option is ignored when the deployment type is "cloud". + --verbose Verbose output during command execution. If specified, may or may not produce additional output. + +Environment Variables: + FRODO_HOST: AM base URL. Overridden by 'host' argument. + FRODO_IDM_HOST: IDM base URL. Overridden by '--idm-host' option. + FRODO_REALM: Realm. Overridden by 'realm' argument. + FRODO_USERNAME: Username. Overridden by 'username' argument. + FRODO_PASSWORD: Password. Overridden by 'password' argument. + FRODO_LOGIN_CLIENT_ID: OAuth2 client id for IDM API calls. Overridden by '--login-client-id' option. + FRODO_LOGIN_REDIRECT_URI: Redirect Uri for custom OAuth2 client id. Overridden by '--login-redirect-uri' option. + FRODO_SA_ID: Service account uuid. Overridden by '--sa-id' option. + FRODO_SA_JWK: Service account JWK. Overridden by '--sa-jwk-file' option but takes the actual JWK as a value, not a file name. + FRODO_AMSTER_PASSPHRASE: Passphrase for the Amster private key if it is encrypted. Overridden by '--passphrase' option. + FRODO_AMSTER_PRIVATE_KEY: Amster private key. Overridden by '--private-key' option but takes the actual private key as a value (i.e. the file contents), not a file name. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option. + FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'. + FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'. + FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use. When using an Amster private key, specifies which journey to use for Amster authentication as opposed to the default 'amsterService' journey. + FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'. + FRODO_IGA: Set to "true" to enable IGA (Identity Governance) endpoints for cloud deployments, or "false" to disable them, overriding auto-detected value. + FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file. + FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH. + +" +`; diff --git a/test/client_cli/en/__snapshots__/iga-workflow-list.test.js.snap b/test/client_cli/en/__snapshots__/iga-workflow-list.test.js.snap new file mode 100644 index 000000000..45a2ed6cd --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-list.test.js.snap @@ -0,0 +1,65 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga workflow list' should be expected english 1`] = ` +"Usage: frodo iga workflow list [options] [host] [realm] [username] [password] + +List workflows. + +Arguments: + host AM base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring or alias. + realm Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise. (default: "alpha" for Identity Cloud tenants, "/" otherwise.) + username Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees. + password Password. + +Options: + --curlirize Output all network calls in curl format. + -D, --directory Set the working directory. + --debug Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting. + --flush-cache Flush token cache. + -h, --help Help + --idm-host IDM base URL, e.g.: https://cdk.idm.example.com/myidm. Use only if your IDM installation resides in a different domain and/or if the base path differs from the default "/openidm". + -k, --insecure Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://:), in that case the proxy must provide this capability. (default: Don't allow insecure connections) + -l, --long Long with all fields. (default: false) + --login-client-id Specify a custom OAuth2 client id to use a your own oauth2 client for IDM API calls in deployments of type "cloud" or "forgeops". Your custom client must be configured as a public client and allow the authorization code grant using the "openid fr:idm:*" scope. Use the "--redirect-uri" parameter if you have configured a custom redirect uri (default: "/platform/appAuthHelperRedirect.html"). + --login-redirect-uri Specify a custom redirect URI to use with your custom OAuth2 client (efault: "/platform/appAuthHelperRedirect.html"). + -m, --type Override auto-detected deployment type. Valid values for type: + classic: A classic Access Management-only deployment with custom layout and configuration. + cloud: A ForgeRock Identity Cloud environment. + forgeops: A ForgeOps CDK or CDM deployment. + The detected or provided deployment type controls certain behavior like obtaining an Identity Management admin token or not and whether to export/import referenced email templates or how to walk through the tenant admin login flow of Identity Cloud and handle MFA (choices: "classic", "cloud", "forgeops") + --no-cache Disable token cache for this operation. + --passphrase The passphrase for the Amster private key if it is encrypted. + --private-key File containing the private key for authenticating with Amster. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + --retry Retry failed operations. Valid values for strategy: + everything: Retry all failed operations. + network: Retry only network-related failed operations. + nothing: Do not retry failed operations. + The selected retry strategy controls how the CLI handles failures. (choices: "nothing", "everything", "network", default: Do not retry failed operations.) + --sa-id Service account id. + --sa-jwk-file File containing the JSON Web Key (JWK) associated with the the service account. + --use-realm-prefix-on-managed-objects Set to true if you want to use the realm name as a prefix on managed object configuration, e.g. managed/alpha_user, managed/alpha_application or managed/bravo_organization. When false, the default behaviour of using managed/user etc. is retained. This option is ignored when the deployment type is "cloud". + --verbose Verbose output during command execution. If specified, may or may not produce additional output. + +Environment Variables: + FRODO_HOST: AM base URL. Overridden by 'host' argument. + FRODO_IDM_HOST: IDM base URL. Overridden by '--idm-host' option. + FRODO_REALM: Realm. Overridden by 'realm' argument. + FRODO_USERNAME: Username. Overridden by 'username' argument. + FRODO_PASSWORD: Password. Overridden by 'password' argument. + FRODO_LOGIN_CLIENT_ID: OAuth2 client id for IDM API calls. Overridden by '--login-client-id' option. + FRODO_LOGIN_REDIRECT_URI: Redirect Uri for custom OAuth2 client id. Overridden by '--login-redirect-uri' option. + FRODO_SA_ID: Service account uuid. Overridden by '--sa-id' option. + FRODO_SA_JWK: Service account JWK. Overridden by '--sa-jwk-file' option but takes the actual JWK as a value, not a file name. + FRODO_AMSTER_PASSPHRASE: Passphrase for the Amster private key if it is encrypted. Overridden by '--passphrase' option. + FRODO_AMSTER_PRIVATE_KEY: Amster private key. Overridden by '--private-key' option but takes the actual private key as a value (i.e. the file contents), not a file name. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option. + FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'. + FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'. + FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use. When using an Amster private key, specifies which journey to use for Amster authentication as opposed to the default 'amsterService' journey. + FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'. + FRODO_IGA: Set to "true" to enable IGA (Identity Governance) endpoints for cloud deployments, or "false" to disable them, overriding auto-detected value. + FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file. + FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH. + +" +`; diff --git a/test/client_cli/en/__snapshots__/iga-workflow-publish.test.js.snap b/test/client_cli/en/__snapshots__/iga-workflow-publish.test.js.snap new file mode 100644 index 000000000..634f96b58 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-publish.test.js.snap @@ -0,0 +1,65 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga workflow publish' should be expected english 1`] = ` +"Usage: frodo iga workflow publish [options] [host] [realm] [username] [password] + +Publish workflow. + +Arguments: + host AM base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring or alias. + realm Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise. (default: "alpha" for Identity Cloud tenants, "/" otherwise.) + username Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees. + password Password. + +Options: + --curlirize Output all network calls in curl format. + -D, --directory Set the working directory. + --debug Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting. + --flush-cache Flush token cache. + -h, --help Help + -i, --workflow-id Workflow id. + --idm-host IDM base URL, e.g.: https://cdk.idm.example.com/myidm. Use only if your IDM installation resides in a different domain and/or if the base path differs from the default "/openidm". + -k, --insecure Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://:), in that case the proxy must provide this capability. (default: Don't allow insecure connections) + --login-client-id Specify a custom OAuth2 client id to use a your own oauth2 client for IDM API calls in deployments of type "cloud" or "forgeops". Your custom client must be configured as a public client and allow the authorization code grant using the "openid fr:idm:*" scope. Use the "--redirect-uri" parameter if you have configured a custom redirect uri (default: "/platform/appAuthHelperRedirect.html"). + --login-redirect-uri Specify a custom redirect URI to use with your custom OAuth2 client (efault: "/platform/appAuthHelperRedirect.html"). + -m, --type Override auto-detected deployment type. Valid values for type: + classic: A classic Access Management-only deployment with custom layout and configuration. + cloud: A ForgeRock Identity Cloud environment. + forgeops: A ForgeOps CDK or CDM deployment. + The detected or provided deployment type controls certain behavior like obtaining an Identity Management admin token or not and whether to export/import referenced email templates or how to walk through the tenant admin login flow of Identity Cloud and handle MFA (choices: "classic", "cloud", "forgeops") + --no-cache Disable token cache for this operation. + --passphrase The passphrase for the Amster private key if it is encrypted. + --private-key File containing the private key for authenticating with Amster. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + --retry Retry failed operations. Valid values for strategy: + everything: Retry all failed operations. + network: Retry only network-related failed operations. + nothing: Do not retry failed operations. + The selected retry strategy controls how the CLI handles failures. (choices: "nothing", "everything", "network", default: Do not retry failed operations.) + --sa-id Service account id. + --sa-jwk-file File containing the JSON Web Key (JWK) associated with the the service account. + --use-realm-prefix-on-managed-objects Set to true if you want to use the realm name as a prefix on managed object configuration, e.g. managed/alpha_user, managed/alpha_application or managed/bravo_organization. When false, the default behaviour of using managed/user etc. is retained. This option is ignored when the deployment type is "cloud". + --verbose Verbose output during command execution. If specified, may or may not produce additional output. + +Environment Variables: + FRODO_HOST: AM base URL. Overridden by 'host' argument. + FRODO_IDM_HOST: IDM base URL. Overridden by '--idm-host' option. + FRODO_REALM: Realm. Overridden by 'realm' argument. + FRODO_USERNAME: Username. Overridden by 'username' argument. + FRODO_PASSWORD: Password. Overridden by 'password' argument. + FRODO_LOGIN_CLIENT_ID: OAuth2 client id for IDM API calls. Overridden by '--login-client-id' option. + FRODO_LOGIN_REDIRECT_URI: Redirect Uri for custom OAuth2 client id. Overridden by '--login-redirect-uri' option. + FRODO_SA_ID: Service account uuid. Overridden by '--sa-id' option. + FRODO_SA_JWK: Service account JWK. Overridden by '--sa-jwk-file' option but takes the actual JWK as a value, not a file name. + FRODO_AMSTER_PASSPHRASE: Passphrase for the Amster private key if it is encrypted. Overridden by '--passphrase' option. + FRODO_AMSTER_PRIVATE_KEY: Amster private key. Overridden by '--private-key' option but takes the actual private key as a value (i.e. the file contents), not a file name. Supported formats include PEM (both PKCS#1 and PKCS#8 variants), OpenSSH, DNSSEC, and JWK. + FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option. + FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'. + FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'. + FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use. When using an Amster private key, specifies which journey to use for Amster authentication as opposed to the default 'amsterService' journey. + FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'. + FRODO_IGA: Set to "true" to enable IGA (Identity Governance) endpoints for cloud deployments, or "false" to disable them, overriding auto-detected value. + FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file. + FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH. + +" +`; diff --git a/test/client_cli/en/__snapshots__/iga-workflow.test.js.snap b/test/client_cli/en/__snapshots__/iga-workflow.test.js.snap new file mode 100644 index 000000000..96b78af9e --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow.test.js.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga workflow' should be expected english 1`] = ` +"Usage: frodo iga workflow [options] [command] + +Manage workflows. + +Options: + -h, --help Help + +Commands: + delete Delete workflows. + describe Describe workflow. + export Export workflows. + help display help for command + import Import workflows. + list List workflows. + publish Publish workflow. +" +`; diff --git a/test/client_cli/en/iga-workflow-delete.test.js b/test/client_cli/en/iga-workflow-delete.test.js new file mode 100644 index 000000000..fc04c94b8 --- /dev/null +++ b/test/client_cli/en/iga-workflow-delete.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga workflow delete --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga workflow delete' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/client_cli/en/iga-workflow-describe.test.js b/test/client_cli/en/iga-workflow-describe.test.js new file mode 100644 index 000000000..cb3f3b175 --- /dev/null +++ b/test/client_cli/en/iga-workflow-describe.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga workflow describe --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga workflow describe' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/client_cli/en/iga-workflow-export.test.js b/test/client_cli/en/iga-workflow-export.test.js new file mode 100644 index 000000000..7416929b0 --- /dev/null +++ b/test/client_cli/en/iga-workflow-export.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga workflow export --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga workflow export' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/client_cli/en/iga-workflow-import.test.js b/test/client_cli/en/iga-workflow-import.test.js new file mode 100644 index 000000000..94eda1cfa --- /dev/null +++ b/test/client_cli/en/iga-workflow-import.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga workflow import --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga workflow import' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/client_cli/en/iga-workflow-list.test.js b/test/client_cli/en/iga-workflow-list.test.js new file mode 100644 index 000000000..8c7d3f47e --- /dev/null +++ b/test/client_cli/en/iga-workflow-list.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga workflow list --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga workflow list' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/client_cli/en/iga-workflow-publish.test.js b/test/client_cli/en/iga-workflow-publish.test.js new file mode 100644 index 000000000..f53f8566f --- /dev/null +++ b/test/client_cli/en/iga-workflow-publish.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga workflow publish --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga workflow publish' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/client_cli/en/iga-workflow.test.js b/test/client_cli/en/iga-workflow.test.js new file mode 100644 index 000000000..ef8629b75 --- /dev/null +++ b/test/client_cli/en/iga-workflow.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga workflow --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga workflow' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/client_cli/en/iga.test.js b/test/client_cli/en/iga.test.js new file mode 100644 index 000000000..5d2164de5 --- /dev/null +++ b/test/client_cli/en/iga.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo iga --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'iga' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/e2e/__snapshots__/iga-workflow-describe.e2e.test.js.snap b/test/e2e/__snapshots__/iga-workflow-describe.e2e.test.js.snap new file mode 100644 index 000000000..d11dba3d3 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-describe.e2e.test.js.snap @@ -0,0 +1,196 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo iga workflow describe "frodo iga workflow describe --file test/e2e/exports/all/allWorkflows.workflow.json": should describe first workflow from file test/e2e/exports/all/allWorkflows.workflow.json 1`] = ` +"Draft Workflow +Id │createNonEmployee +Name │CreateNonEmployee +Display Name│CreateNonEmployee +Description │CreateNonEmployee +Type │provisioning +Status │draft +Mutable │true +ChildType │false +Steps (6) │approvalTask-74cf85c35437 + │scriptTask-0359a9d77ee2 + │scriptTask-aec6c36b3a45 + │scriptTask-ca9504ae90d8 + │scriptTask-e8842de66fbb + │exclusiveGateway-abbb089758c8 + + +Email Templates (9): +- [FrodoTestEmailTemplate1] Frodo Test Email Template One - Reset your password +- [FrodoTestEmailTemplate2] Frodo Test Email Template Two - One-Time Password for login +- [FrodoTestEmailTemplate3] Frodo Test Email Template Three - Multi-Factor Email for Identity Cloud login +- [frodoTestEmailTemplateFour] Frodo Test Email Template Four - Subject +- [requestAssigned] - ATTENTION: Request Assigned +- [requestEscalated] - ATTENTION: Request Escalation +- [requestExpired] - ATTENTION: Expiration of Request +- [requestReassigned] - ATTENTION: Request Reassigned +- [requestReminder] - ATTENTION: Reminder to complete Request + +Events (3): +- [2a441af0-d057-46a1-996b-1f3ff2725122] test_workflow_event_1 +- [4bfdbe77-794a-4eb2-85ef-320a327d44ff] test_workflow_event_3 +- [c87b0605-03f6-4372-9ba6-e0f43e0b3bcf] phh-teacher-birthright-role-approval + +Request Forms (4): +- [9c10b680-a790-4f73-95ed-81b345f0f3e9] phh-delegated-user-disable-form +- [9e3fc668-4e96-4b03-9605-38b830bea26c] test_workflow_request_form_2 +- [c385b530-b912-4dcd-98c8-931673add9b7] phh-new-user +- [fa1a5e72-d803-4879-bc2a-07a5da3d8ee9] test_workflow_request_form_1 + +Request Types (5): +- [3eb082e7-68f2-409f-9423-26e771259dc8] test_workflow_request_type_4 +- [8d0055b3-155f-4885-a415-4f1c536098e8] phh-create-user +- [af4a6f84-f9a9-4f8d-82ae-649639debabc] test_workflow_request_type_5 +- [e9dcd66e-1388-4872-9790-66df2f44deef] test_workflow_request_type_1 +- [fdf9e9a1-b5cf-496a-821b-e7b3d5841252] phh-delegate-user-disable-type +" +`; + +exports[`frodo iga workflow describe "frodo iga workflow describe --workflow-id testWorkflow1": should describe workflow 'testWorkflow1' 1`] = ` +"Draft Workflow +Id │testWorkflow1 +Name │test_workflow_1 +Display Name│test_workflow_1 +Description │test_workflow_1 +Status │draft +Mutable │true +ChildType │false +Steps (14) │approvalTask-7e33e73d6763 + │fulfillmentTask-7fce35a32915 + │exclusiveGateway-94bc3d35f3b4 + │inclusiveGateway-a6cf9605ce55 + │scriptTask-493f5ea87636 + │violationTask-50261d9bc712 + │emailTask-2068f5d711c8 + │waitTask-b7fc169ca4eb + │approvalTask-363e32acf981 + │fulfillmentTask-29a71d4ab8ed + │emailTask-881f2975e240 + │waitTask-72d593301121 + │waitTask-b343cc7df7c9 + │violationTask-f8066518b46a + +Published Workflow +Id │testWorkflow1 +Name │test_workflow_1 +Display Name│test_workflow_1 +Description │test_workflow_1 +Status │published +Mutable │true +ChildType │false +Steps (14) │approvalTask-7e33e73d6763 + │fulfillmentTask-7fce35a32915 + │exclusiveGateway-94bc3d35f3b4 + │inclusiveGateway-a6cf9605ce55 + │scriptTask-493f5ea87636 + │violationTask-50261d9bc712 + │emailTask-2068f5d711c8 + │waitTask-b7fc169ca4eb + │approvalTask-363e32acf981 + │fulfillmentTask-29a71d4ab8ed + │emailTask-881f2975e240 + │waitTask-72d593301121 + │waitTask-b343cc7df7c9 + │violationTask-f8066518b46a + + +Email Templates (4): +- [FrodoTestEmailTemplate1] Frodo Test Email Template One - Reset your password +- [FrodoTestEmailTemplate2] Frodo Test Email Template Two - One-Time Password for login +- [FrodoTestEmailTemplate3] Frodo Test Email Template Three - Multi-Factor Email for Identity Cloud login +- [frodoTestEmailTemplateFour] Frodo Test Email Template Four - Subject + +Events (1): +- [2a441af0-d057-46a1-996b-1f3ff2725122] test_workflow_event_1 + +Request Forms (2): +- [9e3fc668-4e96-4b03-9605-38b830bea26c] test_workflow_request_form_2 +- [fa1a5e72-d803-4879-bc2a-07a5da3d8ee9] test_workflow_request_form_1 + +Request Types (2): +- [af4a6f84-f9a9-4f8d-82ae-649639debabc] test_workflow_request_type_5 +- [e9dcd66e-1388-4872-9790-66df2f44deef] test_workflow_request_type_1 +" +`; + +exports[`frodo iga workflow describe "frodo iga workflow describe -i testWorkflow1 -f test/e2e/exports/all/allWorkflows.workflow.json": should describe workflow 'testWorkflow1' from file test/e2e/exports/all/allWorkflows.workflow.json 1`] = ` +"Draft Workflow +Id │testWorkflow1 +Name │test_workflow_1 +Display Name│test_workflow_1 +Description │test_workflow_1 +Status │draft +Mutable │true +ChildType │false +Steps (14) │approvalTask-7e33e73d6763 + │fulfillmentTask-7fce35a32915 + │exclusiveGateway-94bc3d35f3b4 + │inclusiveGateway-a6cf9605ce55 + │scriptTask-493f5ea87636 + │violationTask-50261d9bc712 + │emailTask-2068f5d711c8 + │waitTask-b7fc169ca4eb + │approvalTask-363e32acf981 + │fulfillmentTask-29a71d4ab8ed + │emailTask-881f2975e240 + │waitTask-72d593301121 + │waitTask-b343cc7df7c9 + │violationTask-f8066518b46a + +Published Workflow +Id │testWorkflow1 +Name │test_workflow_1 +Display Name│test_workflow_1 +Description │test_workflow_1 +Status │published +Mutable │true +ChildType │false +Steps (14) │approvalTask-7e33e73d6763 + │fulfillmentTask-7fce35a32915 + │exclusiveGateway-94bc3d35f3b4 + │inclusiveGateway-a6cf9605ce55 + │scriptTask-493f5ea87636 + │violationTask-50261d9bc712 + │emailTask-2068f5d711c8 + │waitTask-b7fc169ca4eb + │approvalTask-363e32acf981 + │fulfillmentTask-29a71d4ab8ed + │emailTask-881f2975e240 + │waitTask-72d593301121 + │waitTask-b343cc7df7c9 + │violationTask-f8066518b46a + + +Email Templates (9): +- [FrodoTestEmailTemplate1] Frodo Test Email Template One - Reset your password +- [FrodoTestEmailTemplate2] Frodo Test Email Template Two - One-Time Password for login +- [FrodoTestEmailTemplate3] Frodo Test Email Template Three - Multi-Factor Email for Identity Cloud login +- [frodoTestEmailTemplateFour] Frodo Test Email Template Four - Subject +- [requestAssigned] - ATTENTION: Request Assigned +- [requestEscalated] - ATTENTION: Request Escalation +- [requestExpired] - ATTENTION: Expiration of Request +- [requestReassigned] - ATTENTION: Request Reassigned +- [requestReminder] - ATTENTION: Reminder to complete Request + +Events (3): +- [2a441af0-d057-46a1-996b-1f3ff2725122] test_workflow_event_1 +- [4bfdbe77-794a-4eb2-85ef-320a327d44ff] test_workflow_event_3 +- [c87b0605-03f6-4372-9ba6-e0f43e0b3bcf] phh-teacher-birthright-role-approval + +Request Forms (4): +- [9c10b680-a790-4f73-95ed-81b345f0f3e9] phh-delegated-user-disable-form +- [9e3fc668-4e96-4b03-9605-38b830bea26c] test_workflow_request_form_2 +- [c385b530-b912-4dcd-98c8-931673add9b7] phh-new-user +- [fa1a5e72-d803-4879-bc2a-07a5da3d8ee9] test_workflow_request_form_1 + +Request Types (5): +- [3eb082e7-68f2-409f-9423-26e771259dc8] test_workflow_request_type_4 +- [8d0055b3-155f-4885-a415-4f1c536098e8] phh-create-user +- [af4a6f84-f9a9-4f8d-82ae-649639debabc] test_workflow_request_type_5 +- [e9dcd66e-1388-4872-9790-66df2f44deef] test_workflow_request_type_1 +- [fdf9e9a1-b5cf-496a-821b-e7b3d5841252] phh-delegate-user-disable-type +" +`; diff --git a/test/e2e/__snapshots__/iga-workflow-export.e2e.test.js.snap b/test/e2e/__snapshots__/iga-workflow-export.e2e.test.js.snap new file mode 100644 index 000000000..065ea4a70 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-export.e2e.test.js.snap @@ -0,0 +1,91490 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo iga workflow export "frodo iga workflow export --all -R --no-coords --no-deps --use-string-arrays --file testWorkflowExportFile2.json": should export all workflows including non-mutable ones with no coordinates and no dependencies 1`] = `0`; + +exports[`frodo iga workflow export "frodo iga workflow export --all -R --no-coords --no-deps --use-string-arrays --file testWorkflowExportFile2.json": should export all workflows including non-mutable ones with no coordinates and no dependencies 2`] = `""`; + +exports[`frodo iga workflow export "frodo iga workflow export --all -R --no-coords --no-deps --use-string-arrays --file testWorkflowExportFile2.json": should export all workflows including non-mutable ones with no coordinates and no dependencies 3`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✔ Exported 27 workflows +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all -R --no-coords --no-deps --use-string-arrays --file testWorkflowExportFile2.json": should export all workflows including non-mutable ones with no coordinates and no dependencies: testWorkflowExportFile2.json 1`] = ` +{ + "emailTemplate": {}, + "event": {}, + "meta": Any, + "requestForm": {}, + "requestType": {}, + "variable": {}, + "workflow": { + "BasicApplicationGrant": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for granting a user an account in an application", + "displayName": "Basic Application Grant", + "id": "BasicApplicationGrant", + "mutable": false, + "name": "BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-5167870154a9": {}, + "exclusiveGateway-621c9996676a": {}, + "inclusiveGateway-7d248125a9bd": {}, + "inclusiveGateway-a71e67faaad1": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-14acc58c28dd": {}, + "scriptTask-3a74557440fb": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-744ef6a8b9a2": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": [ + "logger.info("Running application grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var app = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check the user does not already have application granted", + "// Note: this is done at request submission time as well, the following is an example of how to check user's accounts", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "applicationId": request.common.applicationId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info("Create Removal Request failed to create request")", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "BasicApplicationRemove": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for removing a user's account in an application", + "displayName": "Basic Application Remove", + "id": "BasicApplicationRemove", + "mutable": false, + "name": "BasicApplicationRemove", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-b80009644545", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-2bf686c17905": {}, + "inclusiveGateway-0c53868eeb2a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-b80009644545": {}, + "scriptTask-ba009484a101": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-0431eab1902c": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-ba009484a101", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Deprovisioning", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Deprovisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Deprovisioning failed: Error reading request with id " + requestId;", + "}", + "", + "// Create object to update final request progress", + "var decision = { 'status': 'complete', 'decision': 'approved' };", + "", + "if (!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "remove",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " logger.info("Removing account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications', 'POST', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Deprovisioning failed: Error deprovisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + "}", + "", + "if (context == 'certification') {", + " // If application removal request is created via certification, update the corresponding certification item with remediation status.", + " try {", + " var remediationStatus = failureReason ? "failed" : "complete"", + " var comment = failureReason ? "Unable to remove the account successfully, remediation failed." : "Account has been removed from user successfully, remediation complete."", + " var body = {", + " "remediationStatus": remediationStatus,", + " "comment": comment", + " }", + " var lineItemParams = {", + " "_action": "updateRemediationStatus"", + " }", + " openidm.action('iga/governance/certification/items/' + lineItemId, 'POST', body, lineItemParams);", + " }", + " catch (e) {", + " failureReason = "Unable to update the certification line item " + lineItemId + " with the final remediation status from this request."", + " }", + "}", + "", + "// Set additional properties on the request progress update", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update final request progress", + "var queryParams = { '_action': 'update' };", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-b80009644545", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-2bf686c17905", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = null;", + "var campaignId = null;", + "var enableWait = false;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " // Set execution variables from the request context", + " context = requestObj.request.common.context.type;", + " if (context == 'admin' || context == 'certification') {", + " skipApproval = true;", + " }", + " if (context == 'certification') {", + " lineItemId = requestObj.request.common.context.lineItemId;", + " campaignId = requestObj.request.common.context.campaignId", + "", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of application removal request: " + requestId }, {})", + " }", + "", + " }", + " if (requestObj.request.common.endDate){", + " enableWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Could not validate request context, normal approval process will be followed.")", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-2bf686c17905", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-ba009484a101", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approval", + "name": "scriptTask-ba009484a101", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-0c53868eeb2a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved"", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-0c53868eeb2a", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasEndDate", + "step": "waitTask-0431eab1902c", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noEndDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0431eab1902c", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.endDate", + ], + }, + }, + }, + ], + "type": "provisioning", + }, + }, + "BasicEntitlementGrant": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for granting a user an entitlement in an application", + "displayName": "Basic Entitlement Grant", + "id": "BasicEntitlementGrant", + "mutable": false, + "name": "BasicEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-67a954f33919": {}, + "inclusiveGateway-3f85f36eeeef": {}, + "inclusiveGateway-f105ed2b352d": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-91769554db51": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e04f42607ba5": {}, + "scriptTask-e21178ab80f7": {}, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running entitlement grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var assignmentId = null;", + "var app = null;", + "var assignment = null;", + "var existingAccount = false;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check entitlement exists", + "if (!failureReason) {", + " try {", + " assignment = openidm.read('managed/alpha_assignment/' + assignmentId);", + " if (!assignment) {", + " failureReason = "Validation failed: Cannot find assignment with id " + assignmentId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 3 - Check the user has application granted", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " existingAccount = true;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 4 - If account does not exist, provision it", + "if (!failureReason) {", + " if (!existingAccount) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": applicationId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + message;", + " }", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-3f85f36eeeef", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-3f85f36eeeef", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-0d53639996da", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0d53639996da", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-f105ed2b352d", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-91769554db51", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-91769554db51", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "entitlementId": request.common.entitlementId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/entitlementRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.warn('Create Removal Request failed to create')", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "BasicEntitlementRemove": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for removing an entitlement from a user", + "displayName": "Basic Entitlement Remove", + "id": "BasicEntitlementRemove", + "mutable": false, + "name": "BasicEntitlementRemove", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "inclusiveGateway-8803458e3a77": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + "waitTask-b6e654628b18": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e8842de66fbb", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Deprovisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Deprovisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Deprovisioning failed: Error reading request with id " + requestId;", + "}", + "", + "// Create object to update final request progress", + "var decision = { 'status': 'complete', 'decision': 'approved' };", + "", + "if (!failureReason) {", + " try {", + " // Remove entitlement grant from user", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "remove",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements', 'POST', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Deprovisioning failed: Error deprovisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message;", + " }", + "}", + "", + "if (context == 'certification') {", + " // If entitlement removal request is created via certification, update the corresponding certification item with remediation status.", + " try {", + " var remediationStatus = failureReason ? "failed" : "complete"", + " var comment = failureReason ? "Unable to remove the entitlement successfully, remediation failed." : "Entitlement has been removed from user successfully, remediation complete."", + " var body = {", + " "remediationStatus": remediationStatus,", + " "comment": comment", + " }", + " var lineItemParams = {", + " "_action": "updateRemediationStatus"", + " }", + " openidm.action('iga/governance/certification/items/' + lineItemId, 'POST', body, lineItemParams);", + " }", + " catch (e) {", + " failureReason = "Unable to update the certification line item " + lineItemId + " with the final remediation status from this request."", + " }", + "}", + "", + "// Set additional properties on the request progress update", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update final request progress", + "var queryParams = { '_action': 'update' };", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = null;", + "var campaignId = null;", + "var enableWait = false;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " // Set execution variables from the request context", + " context = requestObj.request.common.context.type;", + " if (context == 'admin' || context == 'certification') {", + " skipApproval = true;", + " }", + " if (context == 'certification') {", + " lineItemId = requestObj.request.common.context.lineItemId;", + " campaignId = requestObj.request.common.context.campaignId", + "", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of entitlement removal request: " + requestId }, {})", + " }", + "", + " }", + " if (requestObj.request.common.endDate){", + " enableWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Could not validate request context, normal approval process will be followed.")", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-8803458e3a77", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-8803458e3a77", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasEndDate", + "step": "waitTask-b6e654628b18", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noEndDate", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-b6e654628b18", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.endDate", + ], + }, + }, + }, + ], + "type": "provisioning", + }, + }, + "BasicRoleGrant": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for adding a user to a role", + "displayName": "Basic Role Grant", + "id": "BasicRoleGrant", + "mutable": false, + "name": "BasicRoleGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-d76490953517", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-c7867dd2593a": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-8cd9decab2e4": {}, + "inclusiveGateway-57e9b96eb570": {}, + "inclusiveGateway-d18d59004c0c": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-32dada3fc9f9": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-8506123e6208": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-d76490953517": {}, + "waitTask-4e25b1ee7a14": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-8506123e6208", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-c7867dd2593a", + "type": "approvalTask", + }, + { + "displayName": "Role Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running role grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var roleId = null;", + "var role = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " roleId = requestObj.role.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check role exists", + "if (!failureReason) {", + " try {", + " role = openidm.read('managed/alpha_role/' + roleId);", + " if (!role) {", + " failureReason = "Validation failed: Cannot find role with id " + roleId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading role with id " + roleId + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Role Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-d18d59004c0c", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "roleId": request.common.roleId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/roles' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning role to user " + request.common.userId + " for role " + request.common.roleId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-d76490953517", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-8cd9decab2e4", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var enableWait = false;", + "var enableEndWait = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if(requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if(requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("skipApproval", skipApproval);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-8cd9decab2e4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-8506123e6208", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-c7867dd2593a", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-8506123e6208", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-57e9b96eb570", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved"", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-57e9b96eb570", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-4e25b1ee7a14", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Until Start Date", + "name": "waitTask-4e25b1ee7a14", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-d18d59004c0c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-32dada3fc9f9", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-32dada3fc9f9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + " if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "roleId": request.common.roleId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/roleRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info('Create Removal Request creation failed')", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "BasicRoleRemove": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for removing a user's role membership", + "displayName": "Basic Role Remove", + "id": "BasicRoleRemove", + "mutable": false, + "name": "BasicRoleRemove", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-c99a721d2b93", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-53007af1f4bf": {}, + "inclusiveGateway-a83e210b90d1": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-6dde9c0ec213": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-c99a721d2b93": {}, + "waitTask-e65fcbd06a6d": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-6dde9c0ec213", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Deprovisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Deprovisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Deprovisioning failed: Error reading request with id " + requestId;", + "}", + "", + "// Create object to update final request progress", + "var decision = { 'status': 'complete', 'decision': 'approved' };", + "", + "if (!failureReason) {", + " try {", + " // Remove role grant from user", + " var request = requestObj.request;", + " var payload = {", + " "roleId": request.common.roleId,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "remove",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/roles', 'POST', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Deprovisioning failed: Error deprovisioning role to user " + request.common.userId + " for role " + request.common.roleId + ". Error message: " + message;", + " }", + "}", + "", + "if (context == 'certification') {", + " // If role removal request is created via certification, update the corresponding certification item with remediation status.", + " try {", + " var remediationStatus = failureReason ? "failed" : "complete"", + " var comment = failureReason ? "Unable to remove the role successfully, remediation failed." : "Role has been removed from user successfully, remediation complete."", + " var body = {", + " "remediationStatus": remediationStatus,", + " "comment": comment", + " }", + " var lineItemParams = {", + " "_action": "updateRemediationStatus"", + " }", + " openidm.action('iga/governance/certification/items/' + lineItemId, 'POST', body, lineItemParams);", + " }", + " catch (e) {", + " failureReason = "Unable to update the certification line item " + lineItemId + " with the final remediation status from this request."", + " }", + "}", + "", + "// Set additional properties on the request progress update", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update final request progress", + "var queryParams = { '_action': 'update' };", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-53007af1f4bf", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-6dde9c0ec213", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-c99a721d2b93", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-53007af1f4bf", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = null;", + "var campaignId = null;", + "var enableWait = false;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " // Set execution variables from the request context", + " context = requestObj.request.common.context.type;", + " if (context == 'admin' || context == 'certification') {", + " skipApproval = true;", + " }", + " if (context == 'certification') {", + " lineItemId = requestObj.request.common.context.lineItemId;", + " campaignId = requestObj.request.common.context.campaignId", + "", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of role removal request: " + requestId }, {})", + " }", + "", + " }", + " if (requestObj.request.common.endDate){", + " enableWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Could not validate request context, normal approval process will be followed.")", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-6dde9c0ec213", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a83e210b90d1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-a83e210b90d1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasEndDate", + "step": "waitTask-e65fcbd06a6d", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noEndDate", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-e65fcbd06a6d", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.endDate", + ], + }, + }, + }, + ], + "type": "provisioning", + }, + }, + "BasicViolationProcess": { + "draft": null, + "published": { + "childType": false, + "description": "Basic violation flow for determining how a policy violation is handled", + "displayName": "Basic Violation Process", + "id": "BasicViolationProcess", + "mutable": false, + "name": "BasicViolationProcess", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "violationTask-df7f65b04ec3", + }, + "id": "startNode", + }, + "uiConfig": { + "exclusiveGateway-b1e244b742b5": {}, + "scriptTask-313f487929a4": {}, + "scriptTask-690cd5adc1b6": {}, + "scriptTask-6e8507beca08": {}, + "violationTask-df7f65b04ec3": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "violation.policyRule.violationOwner.id", + ], + }, + "type": "violationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "script", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Start Violation Task", + "name": "violationTask-df7f65b04ec3", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "violation.policyRule.violationOwner.id", + ], + }, + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "violationAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "violation.policyRule.violationOwner.id", + ], + }, + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 8, + "notification": "violationEscalated", + }, + "expiration": { + "action": { + "isExpression": true, + "value": [ + "violation.policyRule.violationLifecycle.expiration.expires ? violation.policyRule.violationLifecycle.expiration.action : null", + ], + }, + "actors": [], + "date": { + "isExpression": true, + "value": [ + "violation.policyRule.violationLifecycle.expiration.expires ? (new Date(new Date().getTime()+(violation.policyRule.violationLifecycle.expiration.duration*24*60*60*1000))).toISOString() : null", + ], + }, + "notification": "violationExpired", + }, + "reassign": { + "notification": "violationReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "violationReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": "scriptTask-690cd5adc1b6", + }, + { + "condition": null, + "outcome": "ALLOW", + "step": "scriptTask-313f487929a4", + }, + ], + }, + }, + { + "displayName": "Remediate Violation", + "name": "scriptTask-690cd5adc1b6", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-b1e244b742b5", + }, + ], + "script": [ + "logger.info("Remediating violation");", + "", + "var content = execution.getVariables();", + "var violationId = content.get('id');", + "var remediation = content.get('remediation');", + "logger.info("Remediating violation - violationId: " + violationId + ', remediation payload: ' + remediation);", + "", + "var remediationContent = null;", + "", + "var remediationResponse = openidm.action('iga/governance/violation/' + violationId + '/remediate', 'POST', remediation);", + "logger.info("Remediating response: " + remediationResponse);", + "", + "remediationContent = remediationResponse.decision.remediation;", + "execution.setVariable("remediation", remediationContent); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Allow Violation", + "name": "scriptTask-313f487929a4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Allowing violation");", + "var content = execution.getVariables();", + "var violationId = content.get('id');", + "var phaseName = content.get('phaseName');", + "logger.info("Violation to be allowed: " + violationId + " with phase name " + phaseName);", + "", + "var failureReason = null;", + "try {", + " var allowResponse = openidm.action('iga/governance/violation/' + violationId + '/allow', 'POST', {});", + "logger.info("Violation " + violationId + " was allowed successfully.");} catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Failed allowing violation with id " + violationId + ". Error message: " + message;", + "}", + "", + "if (failureReason) {", + " var update = { "comment": failureReason };", + " try {", + " openidm.action('iga/governance/violation/' + violationId + '/phases/' + phaseName + '/comment', 'POST', update, {}); ", + " } catch (e) {", + " openidm.action('iga/governance/violation/' + violationId + '/comment', 'POST', update, {});", + " }", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Remediation Validation", + "name": "exclusiveGateway-b1e244b742b5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "remediation.remediationOptionId == "grantRemoval"", + ], + "outcome": "removeGrants", + "step": "scriptTask-6e8507beca08", + }, + { + "condition": [ + "!remediation || !remediation.remediationOptionId || remediation.remediationOptionId !== "grantRemoval"", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("This is exclusive gateway to validate remediation");", + "var content = execution.getVariables();", + "var remediationResult = content.get('remediation');", + "logger.info("The remediation result is: " + remediationResult);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Remove Grants Auto", + "name": "scriptTask-6e8507beca08", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Removing grants automatically");", + "", + "var content = execution.getVariables();", + "var violationId = content.get('id');", + "var failureReason = null;", + "var phaseName = content.get('phaseName');", + "var violationObj;", + "", + "logger.info("Removing grants for violation " + violationId + " with phase name " + phaseName);", + "", + "try {", + " violationObj = openidm.action('iga/governance/violation/lookup/' + violationId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Removing grants failed: Error reading violation with id " + violationId + ". Error message: " + e.message;", + "}", + "", + "if (!failureReason) {", + " var remediation = violationObj.decision.remediation;", + " var failedDeprovisioning = false;", + " var deprovisionedIds = [];", + " for(var grant of violationObj.violatingAccess) {", + " if (!remediation.grantIds.includes(grant.compositeId)) {", + " continue;", + " }", + "", + " var userId = violationObj.user.id;", + " logger.info("Removing grant: " + grant.compositeId + ", user: " + userId + ", violation: " + violationId + ", type: " + grant.item.type);", + " var resourceInfo;", + " var resourcePath;", + " if (grant.item.type === 'ResourceGrant' || grant.item.type === 'entitlementGrant') {", + " resourceInfo = { "resourceKey": "entitlementId", "resourceValue": grant.assignment.id };", + " resourcePath = "entitlements";", + " }", + " else if (grant.item.type === 'AccountGrant' || grant.item.type === 'accountGrant') {", + " var accountId = grant.account.id;", + " ", + " }", + " else if (grant.item.type === 'roleMembership') {", + " resourceInfo = { "resourceKey": "roleId", "resourceValue": grant.role.id };", + " resourcePath = "roles";", + " }", + "", + " try {", + " var payload = {", + " "grantType": "request"", + " };", + " payload[resourceInfo.resourceKey] = resourceInfo.resourceValue;", + "", + " logger.info('Payload to remove grant: ' + JSON.stringify(payload));", + " ", + " var queryParams = {", + " "_action": "remove"", + " }", + "", + " var result = openidm.action('iga/governance/user/' + userId + '/' + resourcePath , 'POST', payload,queryParams);", + " execution.setVariables(result);", + "", + " logger.info("Grant removed " + grant.compositeId + " successfully, user " + userId + ", violation: " + violationId + ", type: " + grant.item.type + ", resource info: " + JSON.stringify(resourceInfo) + ", result: " + JSON.stringify(result));", + " deprovisionedIds.push(grant.compositeId);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = failureReason + ". Removing grants failed: Error deprovisioning " + resourcePath + " to user " + userId + " for " + resourceInfo + ". Error message: " + message + ".";", + " failedDeprovisioning = true;", + " }", + " }", + "", + " if (!failedDeprovisioning) {", + " openidm.action('iga/governance/violation/' + violationId + '/remediation/status/complete', 'POST', {});", + " } else {", + " failureReason = failureReason + ". Grants removed: " + deprovisionedIds;", + " }", + "}", + "", + "if (failureReason) {", + " var update = { 'comment': failureReason };", + " try {", + " openidm.action('iga/governance/violation/' + violationId + '/phases/' + phaseName + '/comment', 'POST', update, {}); ", + " } catch (e) {", + " openidm.action('iga/governance/violation/' + violationId + '/comment', 'POST', update, {});", + " }", + "}", + "", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "CreateEntitlement": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for creating a new entitlement", + "displayName": "Create Entitlement", + "id": "CreateEntitlement", + "mutable": false, + "name": "CreateEntitlement", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-c59ee376a37c", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-67a954f33919": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-c59ee376a37c": {}, + "scriptTask-e21178ab80f7": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create Entitlement", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Entitlement - creating entitlement");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create entitlement failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " // Call IGA API for creating entitlement", + " var payload = requestObj.request.entitlement;", + " var params = { '_action': 'create', 'initiatingUser': requestObj.requester.id};", + " openidm.action('iga/governance/entitlement', 'POST', payload, params);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Create entitlement failed: Error creating " + payload.objectType + " entitlement for application " + payload.applicationId + ". Error message: " + message;", + " }", + "}", + "", + "// Build the payload to update the request object with the final status, decision, and outcome", + "var decision = {'status': 'complete', 'decision': 'approved'};", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update request", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + "", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create entitlement - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Creating Entitlement - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having create privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-c59ee376a37c", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// create an entitlement for the application which they are requesting. If so, it will", + "// skip any approval process and directly move to create the entitlement.", + "", + "logger.info("Creating Entitlement - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " // create entitlements for the requested application", + " var entitlementObj = requestObj.request.entitlement;", + " var userId = requester.id.split('/')", + " var entitlement = openidm.action('iga/governance/application/' + entitlementObj.applicationId, 'GET', {}, {'endUserId': userId[2]})", + " if (entitlement.permissions.createEntitlement) {", + " skipApproval = true;", + " }", + " }", + " else {", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "CreateUser": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for creating a new user", + "displayName": "Create User", + "id": "CreateUser", + "mutable": false, + "name": "CreateUser", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Creating User");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Creating User: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var payload = requestObj.request.user.object;", + "", + " /** Create new user **/", + " var result = openidm.create('managed/alpha_user', null, payload, queryParams);", + " logger.info("User created with userName " + result.userName + " and _id " + result._id + ".")", + " ", + " /** Send new user email **/", + " var body = { ", + " subject: "Welcome " + payload.givenName + " " + payload.sn + "!",", + " to: payload.mail,", + " body: "Your new user has been created.\\n\\nUsername: " + payload.userName,", + " object: {}", + " };", + " ", + " if(payload.manager && payload.manager._ref){", + " logger.info("Getting manager information for " + payload.userName + " create user welcome email.")", + " try {", + " var managerResult = openidm.read(payload.manager._ref);", + " body.cc = managerResult.mail;", + " } catch (e) {", + " logger.info("Unable to read manager information for " + payload.userName + " create user welcome email. " + e.message)", + " }", + " }", + " openidm.action("external/email", "send", body);", + " }", + " catch (e) {", + " failureReason = "Creating user failed: Error during creation of user " + payload.userName + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + " ", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// create a user. If so, it will skip any approval process and directly move to create the new user.", + "", + "logger.info("Create User - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a normal managed user, check that the user has permissions to create a user", + " var userId = requester.id.split('/');", + " var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': userId[2], 'scopePermission': 'createUser', '_queryFilter': \`id+eq+'\` + userId[2] + \`'\`})", + " if(user.result.length > 0){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Create User - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to requester having create user privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "DeleteUser": { + "draft": null, + "published": { + "childType": false, + "description": "Basic Request flow to delete a user", + "displayName": "Delete User", + "id": "DeleteUser", + "mutable": false, + "name": "DeleteUser", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Delete User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Deleting User - request id " + requestId);", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "User Deletion: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " ", + " /** Delete user **/", + " var result = openidm.delete('managed/alpha_user/' + request.user.userId, null);", + " logger.info("Deleted user " + request.user.userId + " for request id " + requestId + ".")", + " }", + " catch (e) {", + " failureReason = "Deleting user failed: Error during deletion of user " + request.user.userId + " for request id " + requestId + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Delete User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// delete users. If so, it will skip any approval process and directly move to delete the user.", + "", + "logger.info("Delete User - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " // create entitlements for the requested application", + " var userId = requestObj.request.user.userId;", + " var requesterId = requester.id.split('/');", + " var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': requesterId[2], 'scopePermission': 'deleteUser', '_queryFilter': \`id+eq+'\` + userId + \`'\`})", + " if(user.result[0].permissions.deleteUser){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Delete User - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having delete user privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "ModifyEntitlement": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for modifying an existing entitlement", + "displayName": "Modify Entitlement", + "id": "ModifyEntitlement", + "mutable": false, + "name": "ModifyEntitlement", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-365b50ab00a7", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 1, + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "exclusiveGateway-c82a357d8c38": {}, + "fulfillmentTask-cce84a670745": { + "actors": { + "isExpression": true, + "value": [ + "// Returns the certifier", + "(function() {", + " var content = execution.getVariables();", + " var certifierId = content.get('certifierId');", + " ", + " return [{", + " "id": "managed/user/" + certifierId,", + " "permissions": {", + " "fulfill": true,", + " "deny": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + "", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-365b50ab00a7": {}, + "scriptTask-87ad089a5484": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Modify Entitlement", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Modify Entitlement - updating entitlement");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var entitlementId = null;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " entitlementId = requestObj.request.entitlement.entitlementId;", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Modify entitlement failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " // Call IGA API for modifying entitlement", + " var payload = requestObj.request.entitlement;", + " var queryParams = {", + " "_action": "update",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/entitlement/' + entitlementId , 'PUT', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Modify entitlement failed: Error updating entitlement " + payload.entitlementId + ". Error message: " + message;", + " }", + "}", + "", + "// Build the payload to update the request object with the final status, decision, and outcome", + "var decision = {'status': 'complete', 'decision': 'approved'};", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update request", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Modify entitlement - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Modify Entitlement - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having modify privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-87ad089a5484", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// modify the entitlement for which they are requesting. If so, it will", + "// skip any approval process and directly move to modify the entitlement.", + "", + "logger.info("Modify Entitlement - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var isCertifierOwnerSame = String(content.get('isCertifierOwnerSame')) === 'true';", + "var skipApproval = true;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " // create entitlements for the requested application", + " var entitlementObj = requestObj.request.entitlement;", + " var userId = requester.id.split('/');", + " var entitlement = openidm.action('iga/governance/entitlement/' + entitlementObj.entitlementId, 'GET', {}, {'endUserId': userId[2]})", + " if(!entitlement.permissions.modifyEntitlement || !isCertifierOwnerSame){", + " skipApproval = false;", + " }", + " } ", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'certification' && !isCertifierOwnerSame) {", + " skipApproval = false;", + " }", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Check", + "name": "scriptTask-365b50ab00a7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-c82a357d8c38", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var certification = false;", + "var certifierId = null;", + "var isCertifierOwnerSame = false;", + "var entitlementOwnerId = null;", + "let isTenantAdmin = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " ", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'certification') {", + " certification = true;", + " if(requestObj && requestObj.entitlementOwner && requestObj.entitlementOwner.length){", + " entitlementOwnerId = requestObj.entitlementOwner[0].id", + " }", + " const campaignId = requestObj.request.common.context.campaignId;", + " const lineItemId = requestObj.request.common.context.lineItemId;", + " ", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of modify entitlement request: " + requestId }, {});", + " ", + " var lineItemRespObj = openidm.action('/iga/governance/certification/' + campaignId + '/items/' + lineItemId, 'GET', {}, {"isAdmin":true});", + " if (lineItemRespObj.result[0]) {", + " const decisionById = lineItemRespObj.result[0].decision.certification.decisionBy.id;", + " const primaryReviewerId = lineItemRespObj.result[0].decision.certification.primaryReviewer.id", + " let isTenantAdmin = false;", + "", + " if (decisionById === 'SYSTEM') {", + " isTenantAdmin = true;", + " } else {", + " isTenantAdmin = decisionById.split('/')[1] === 'teammember';", + " }", + "", + " if (isTenantAdmin) {", + " certifierId = primaryReviewerId.split('/')[2];", + " } else {", + " certifierId = decisionById.split('/')[2];", + " }", + " isCertifierOwnerSame = entitlementOwnerId === certifierId;", + " }", + " }", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "execution.setVariable("context", context);", + "execution.setVariable("certification", certification);", + "execution.setVariable("certifierId", certifierId);", + "execution.setVariable("isCertifierOwnerSame", isCertifierOwnerSame);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Check Certification", + "name": "exclusiveGateway-c82a357d8c38", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "certification == true", + ], + "outcome": "isCertification", + "step": "fulfillmentTask-cce84a670745", + }, + { + "condition": [ + "certification == false", + ], + "outcome": "isNotCertification", + "step": "scriptTask-87ad089a5484", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Certifier Modifications", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "// Returns the certifier", + "(function() {", + " var content = execution.getVariables();", + " var certifierId = content.get('certifierId');", + " ", + " return [{", + " "id": "managed/user/" + certifierId,", + " "permissions": {", + " "fulfill": true,", + " "deny": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + "", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "scriptTask-87ad089a5484", + }, + { + "condition": null, + "outcome": "DENY", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "name": "fulfillmentTask-cce84a670745", + "type": "fulfillmentTask", + }, + ], + "type": "provisioning", + }, + }, + "ModifyUser": { + "draft": null, + "published": { + "childType": false, + "description": "Basic Request flow to modify a user", + "displayName": "Modify User", + "id": "ModifyUser", + "mutable": false, + "name": "ModifyUser", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Update User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Modify User request id " + requestId + " - modifying user");", + "", + "var failureReason = null;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Modify user failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " var modifiedAttributes = requestObj.request.user.object;", + " var userId = requestObj.request.user.userId;", + " try {", + " var payload = [];", + "", + " for(var key in modifiedAttributes) {", + " payload.push({", + " "operation": "replace",", + " "field": "/" + key,", + " "value": modifiedAttributes[key]", + " })", + " }", + "", + " var result = openidm.patch('managed/alpha_user/' + userId , null, payload);", + " }", + " catch (e) {", + " failureReason = "Modify user failed - request id " + requestId + ": Error updating user " + userId + ". Error message: " + e.message;", + " logger.warn(failureReason);", + " }", + "}", + "", + "// Build the payload to update the request object with the final status, decision, and outcome", + "var decision = {'status': 'complete', 'decision': 'approved'};", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update request", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Modify User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// modify the user for which they are requesting. If so, it will", + "// skip any approval process and directly move to modify the user.", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Modify User - Permission check - request id " + requestId);", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " var userId = requestObj.request.user.userId;", + " var requesterId = requester.id.split('/');", + " var userResponse = openidm.action('iga/governance/user/', 'GET', {}, {'endUserId': requesterId[2], 'scopePermission': 'modifyUser', '_queryFilter': \`id+eq+'\` + userId + \`'\`})", + " if(userResponse.result[0].permissions.modifyUser){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed - request id " + requestId + ": " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Modify Entitlement request id " + requestId + " - marking request as auto approved.");", + "", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having modify privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request id " + requestId + ". Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "createNonEmployee": { + "draft": { + "childType": false, + "description": "CreateNonEmployee", + "displayName": "CreateNonEmployee", + "id": "createNonEmployee", + "mutable": true, + "name": "CreateNonEmployee", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "escalationType": "script", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 1, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Creating User");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Creating User: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var payload = requestObj.request.user.object;", + "", + " /** Create new user **/", + " var result = openidm.create('managed/alpha_user', null, payload, queryParams);", + " logger.info("User created with userName " + result.userName + " and _id " + result._id + ".")", + " ", + " /** Send new user email **/", + " var body = { ", + " subject: "Welcome " + payload.givenName + " " + payload.sn + "!",", + " to: payload.mail,", + " body: "Your new user has been created.\\n\\nUsername: " + payload.userName,", + " object: {}", + " };", + " ", + " if(payload.manager && payload.manager._ref){", + " logger.info("Getting manager information for " + payload.userName + " create user welcome email.")", + " try {", + " var managerResult = openidm.read(payload.manager._ref);", + " body.cc = managerResult.mail;", + " } catch (e) {", + " logger.info("Unable to read manager information for " + payload.userName + " create user welcome email. " + e.message)", + " }", + " }", + " openidm.action("external/email", "send", body);", + " }", + " catch (e) {", + " failureReason = "Creating user failed: Error during creation of user " + payload.userName + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + " ", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// create a user. If so, it will skip any approval process and directly move to create the new user.", + "", + "logger.info("Create User - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a normal managed user, check that the user has permissions to create a user", + " var userId = requester.id.split('/');", + " var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': userId[2], 'scopePermission': 'createUser', '_queryFilter': \`id+eq+'\` + userId[2] + \`'\`})", + " if(user.result.length > 0){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Create User - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to requester having create user privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "deleteme": { + "draft": { + "childType": false, + "description": "deleteme", + "displayName": "deleteme", + "id": "deleteme", + "mutable": true, + "name": "deleteme", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-9fc2071912bc", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-9fc2071912bc": { + "actors": { + "isExpression": true, + "value": [ + "console.log("This is so cool!")", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "fulfillmentTask-0dcefcedc0e1": { + "actors": { + "isExpression": true, + "value": [ + "console.log("This is so cool too!")", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "scriptTask-4bf0978a3148": {}, + "violationTask-d368cda5d3be": { + "actors": { + "isExpression": true, + "value": [ + "console.log("This is so cool three!")", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "console.log("This is so cool!")", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-4bf0978a3148", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-9fc2071912bc", + "type": "approvalTask", + }, + { + "displayName": "Script Task", + "name": "scriptTask-4bf0978a3148", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "fulfillmentTask-0dcefcedc0e1", + }, + ], + "script": [ + "console.error("NOT COOL!");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "console.log("This is so cool too!")", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": null, + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-d368cda5d3be", + }, + ], + }, + "name": "fulfillmentTask-0dcefcedc0e1", + "type": "fulfillmentTask", + }, + { + "displayName": "Violation Task", + "name": "violationTask-d368cda5d3be", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "console.log("This is so cool three!")", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": null, + }, + ], + }, + }, + ], + }, + "published": null, + }, + "phhBasicApplicationGrant": { + "draft": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-5167870154a9": {}, + "exclusiveGateway-621c9996676a": {}, + "inclusiveGateway-2fbd3e7aa50c": {}, + "inclusiveGateway-7d248125a9bd": {}, + "inclusiveGateway-a71e67faaad1": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-14acc58c28dd": {}, + "scriptTask-3a74557440fb": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-744ef6a8b9a2": {}, + "scriptTask-c444d08a6099": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": [ + "logger.info("Running application grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var app = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check the user does not already have application granted", + "// Note: this is done at request submission time as well, the following is an example of how to check user's accounts", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.startDate", + ], + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "applicationId": request.common.applicationId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info("Create Removal Request failed to create request")", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestObj = null;", + "var appId = null;", + "var appGlossary = null;", + "var lob = null;", + "try {", + "requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "appId = requestObj.application.id;", + "}", + "catch (e) {", + "logger.info("Validation failed: Error reading application grant request with id " + requestId);", + "}", + "try {", + "appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {});", + "lob = appGlossary.lineOfBusiness || "default"", + "execution.setVariable("lob", lob);", + "}", + "catch (e) {", + "logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "lob == "sales"", + ], + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": [ + "lob == "finance"", + ], + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": [ + "lob == "hr"", + ], + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": [ + "lob == "default"", + ], + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-5167870154a9": {}, + "exclusiveGateway-621c9996676a": {}, + "inclusiveGateway-2fbd3e7aa50c": {}, + "inclusiveGateway-7d248125a9bd": {}, + "inclusiveGateway-a71e67faaad1": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-14acc58c28dd": {}, + "scriptTask-3a74557440fb": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-744ef6a8b9a2": {}, + "scriptTask-c444d08a6099": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": [ + "logger.info("Running application grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var app = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check the user does not already have application granted", + "// Note: this is done at request submission time as well, the following is an example of how to check user's accounts", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.startDate", + ], + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "applicationId": request.common.applicationId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info("Create Removal Request failed to create request")", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestObj = null;", + "var appId = null;", + "var appGlossary = null;", + "var lob = null;", + "try {", + "requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "appId = requestObj.application.id;", + "}", + "catch (e) {", + "logger.info("Validation failed: Error reading application grant request with id " + requestId);", + "}", + "try {", + "appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {});", + "lob = appGlossary.lineOfBusiness || "default"", + "execution.setVariable("lob", lob);", + "}", + "catch (e) {", + "logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "lob == "sales"", + ], + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": [ + "lob == "finance"", + ], + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": [ + "lob == "hr"", + ], + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": [ + "lob == "default"", + ], + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + "phhBirthrightRolesRequiringApproval": { + "draft": null, + "published": { + "childType": false, + "description": "phh-birthright-roles-requiring-approval", + "displayName": "phh-birthright-roles-requiring-approval", + "id": "phhBirthrightRolesRequiringApproval", + "mutable": true, + "name": "phh-birthright-roles-requiring-approval", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-0e64ff0c1695", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-f4e7324654b5": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var approverId = '';", + "if (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id }", + "return [{", + ""id": "managed/user/" + approverId,", + ""permissions": {", + ""approve": true,", + ""reject": true,", + ""reassign": true,", + ""modify": true,", + ""comment": true", + "}", + "}];", + "})()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "scriptTask-0e64ff0c1695": {}, + "scriptTask-792e240778b1": {}, + "scriptTask-ad05a46c2e74": {}, + "scriptTask-aecf833994d2": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Debug Task", + "name": "scriptTask-0e64ff0c1695", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "approvalTask-f4e7324654b5", + }, + ], + "script": [ + "logger.info("Running user update event");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = null;", + "var skipApproval = false;", + "var userObj = null;", + "var userId = null;", + "// Read event user information from request object", + "try {", + "var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "logger.error("requestObj "+JSON.stringify(requestObj));", + "if (requestObj.request.common.context) {", + "context = requestObj.request.common.context.type;", + "if (context == 'admin') {", + "skipApproval = true;", + "}", + "}", + "userObj = requestObj.request.common.blob.after;", + "userId = userObj.userId;", + "}", + "catch (e) {", + "failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var approverId = '';", + "if (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id }", + "return [{", + ""id": "managed/user/" + approverId,", + ""permissions": {", + ""approve": true,", + ""reject": true,", + ""reassign": true,", + ""modify": true,", + ""comment": true", + "}", + "}];", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-792e240778b1", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-ad05a46c2e74", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-f4e7324654b5", + "type": "approvalTask", + }, + { + "displayName": "Look Up Roles and Request", + "name": "scriptTask-792e240778b1", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Running user update event");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var userObj = null;", + "var userId = null;", + "//", + "// Read event user information from request object", + "try {", + "var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "userObj = requestObj.request.common.blob.after;", + "userId = userObj.userId;", + "}", + "catch (e) {", + "failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "///Get Roles from Role Variable", + "var roleNames = requestObj.request.common.blob.parameters.roleNames.split(',');", + "logger.error("UpdateRequest with roleNames: " + roleNames);", + "// Look up roles in catalog", + "var operand = [];", + "for (var index in roleNames) {", + "var role = roleNames[index];", + "var roleClean = role.trim();", + "operand.push({operator: "EQUALS", operand: { targetName: "role.name", targetValue: roleClean }})", + "}", + "var body = { targetFilter: {operator: "OR", operand: operand}};", + "var catalog = openidm.action("iga/governance/catalog/search", "POST", body);", + "var catalogResults = catalog.result;", + "// Define request catalogs key", + "var catalogBody = [];", + "for (var idx in catalogResults) {", + "var catalog = catalogResults[idx];", + "catalogBody.push({type: "role", id: catalog.id})", + "}", + "// Define request payload", + "var requestBody = {", + "priority: "low",", + "accessModifier: "add",", + "justification: "Request submitted on user update.",", + "users: [ userId ],", + "catalogs: catalogBody,", + "context: {", + "type: "NoAdmin"", + "}", + "};", + "// Create requests", + "try {", + "logger.error("DRLCREATING REQUST for "+JSON.stringify(body));", + "openidm.action("iga/governance/requests", "POST", requestBody, {_action: "create"})", + "}", + "catch (e) {", + "failureReason = "Unable to generate requests for roles";", + "}", + "// Update event request as final", + "var decision = failureReason ?", + "{'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true} :", + "{'status': 'complete', 'outcome': 'fulfilled', 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Finalize Request on Reject", + "name": "scriptTask-ad05a46c2e74", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-aecf833994d2", + }, + ], + "script": [ + "logger.info("Finalize Request:BirthRight Roles that need Approval");", + "var content = execution.getVariables();", + "var requestId = content.get('requestId');", + "var failureState = content.get('failureState');", + "if (!failureState) {", + "try {", + "// Update event request as final", + "var decision = {'status': 'complete', 'outcome': 'fulfilled', 'decision': 'rejected'}", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + "}", + "catch (e) {", + "execution.setVariable("failureState", "Unable to finalize request.");", + "}", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Failure Handler", + "name": "scriptTask-aecf833994d2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Failure Handler: BirthRight Roles that need Approval ");", + "var content = execution.getVariables();", + "var requestId = content.get('requestId');", + "var failureReason = content.get('failureReason');", + "// Update event request as final", + "if (failureReason) {", + "var decision = {'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true}", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + ], + }, + }, + "phhDelegatedUserDisableWorkflow": { + "draft": null, + "published": { + "childType": false, + "description": "phh-delegated-user-disable-workflow", + "displayName": "phh-delegated-user-disable-workflow", + "id": "phhDelegatedUserDisableWorkflow", + "mutable": true, + "name": "phh-delegated-user-disable-workflow", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-3d854e98930e", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-bebe49db4dac": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-26e0a9262468": {}, + "exclusiveGateway-d5b7b2e2a80a": {}, + "scriptTask-38eb13f4deca": {}, + "scriptTask-3d854e98930e": {}, + "scriptTask-449aac6b18b8": {}, + "scriptTask-4f4b87291099": {}, + "scriptTask-8e24794e9be4": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegation Info", + "name": "scriptTask-3d854e98930e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-26e0a9262468", + }, + ], + "script": [ + "/*", + " * Load Delegation Information", + " * Populates available direct reports for the requester", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "console.log("=== Load Delegation Info Start ===");", + "console.log("Request ID: " + requestId);", + "", + "try {", + " // Get the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requesterId = requestObj.requester.id;", + " var requesterIdOnly = requesterId.replace("managed/user/", "");", + " ", + " console.log("Requester ID: " + requesterIdOnly);", + " ", + " // Query users where current user is the manager", + " var queryParams = {", + " "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"',", + " "_fields": "userName,givenName,sn,_id"", + " };", + " ", + " var results = openidm.query("managed/alpha_user", queryParams);", + " ", + " // Build a formatted list for display", + " var directReportsList = "";", + " var directReportsCount = 0;", + " ", + " if (results.resultCount > 0) {", + " directReportsList = "You can act on behalf of the following users:\\n\\n";", + " results.result.forEach(function(user) {", + " directReportsList += "• " + user.userName + " (" + user.givenName + " " + user.sn + ")\\n";", + " });", + " directReportsCount = results.resultCount;", + " logger.info("Found " + directReportsCount + " direct reports");", + " } else {", + " directReportsList = "You do not have any direct reports in the system.\\n\\nYou cannot submit delegation requests without direct reports.";", + " logger.warn("No direct reports found");", + " }", + " ", + " // Store variables for later use", + " execution.setVariable("directReportsList", directReportsList);", + " execution.setVariable("directReportsCount", directReportsCount);", + " execution.setVariable("hasDelegationAuthority", directReportsCount > 0);", + " ", + " // Update the request to populate the helper field", + " // This updates the form display for the user", + " var updatePayload = {", + " "request": {", + " "common": {", + " "blob": {", + " "form": {", + " "availableDirectReports": directReportsList", + " }", + " }", + " }", + " }", + " };", + " ", + " openidm.patch('iga/governance/requests/' + requestId, null, [", + " {", + " "operation": "add",", + " "field": "/request/common/blob/form/availableDirectReports",", + " "value": directReportsList", + " }", + " ]);", + " ", + " console.log("Direct reports list populated in form");", + " ", + "} catch (e) {", + " logger.error("Error loading delegation info: " + e.message);", + " execution.setVariable("hasDelegationAuthority", false);", + " execution.setVariable("directReportsCount", 0);", + " execution.setVariable("directReportsList", "Error loading your direct reports. Please contact your administrator.");", + "}", + "", + "console.log("=== Load Delegation Info Complete ===");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auth Check", + "name": "exclusiveGateway-26e0a9262468", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "hasDelegationAuthority == true", + ], + "outcome": "validationSuccess", + "step": "scriptTask-8e24794e9be4", + }, + { + "condition": [ + "hasDelegationAuthority == false", + ], + "outcome": "validationFailure", + "step": "scriptTask-38eb13f4deca", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - No Authority", + "name": "scriptTask-38eb13f4deca", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Auto-Reject - No Delegation Authority", + " * Rejects request if user has no direct reports", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "console.log("Auto-rejecting request " + requestId + " - no delegation authority");", + "", + "try {", + " var decision = {", + " 'decision': 'rejected',", + " 'status': 'complete',", + " 'comment': 'Request automatically rejected: You do not have any direct reports in the system. You cannot submit delegation requests without having direct reports assigned to you.\\n\\nPlease contact your administrator if you believe this is an error.'", + " };", + " ", + " var updateParams = {", + " '_action': 'update'", + " };", + " ", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams);", + " ", + " console.log("Request " + requestId + " rejected successfully");", + " ", + "} catch (e) {", + " console.log("Error rejecting request: " + e.message);", + " throw e;", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validate Delegation Request", + "name": "scriptTask-8e24794e9be4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-d5b7b2e2a80a", + }, + ], + "script": [ + "/*", + " * Validate Delegation Request", + " * Validates all user inputs and delegation authority", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "console.log("=== Validation Start ===");", + "", + "var validationPassed = false;", + "var validationErrors = [];", + "var actingPrincipalObject = null;", + "var targetUserObject = null;", + "", + "try {", + " // Get request object with form data", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " ", + " var requesterId = requestObj.requester.id;", + " var requesterIdOnly = requesterId.replace("managed/user/", "");", + " ", + " // Extract form values", + " var actingPrincipalUsername = requestObj.request.common.blob.form.actingPrincipalId;", + " var targetUserUsername = requestObj.request.common.blob.form.targetUserId;", + " var justification = requestObj.request.common.blob.form.justification;", + " ", + " console.log("Acting Principal Username: " + actingPrincipalUsername);", + " console.log("Target User Username: " + targetUserUsername);", + " ", + " // Validate acting principal", + " if (!actingPrincipalUsername || actingPrincipalUsername.trim() === "") {", + " validationErrors.push("Acting Principal username is required");", + " } else {", + " try {", + " var actingPrincipalQuery = {", + " "_queryFilter": 'userName eq "' + actingPrincipalUsername.trim() + '"'", + " };", + " var actingPrincipalResults = openidm.query("managed/alpha_user", actingPrincipalQuery);", + " ", + " if (actingPrincipalResults.resultCount === 0) {", + " validationErrors.push("Acting Principal user not found: " + actingPrincipalUsername);", + " } else if (actingPrincipalResults.resultCount > 1) {", + " validationErrors.push("Multiple users found with username: " + actingPrincipalUsername);", + " } else {", + " actingPrincipalObject = actingPrincipalResults.result[0];", + " ", + " // Verify requester is manager of acting principal", + " if (!actingPrincipalObject.manager || !actingPrincipalObject.manager._id) {", + " validationErrors.push("Acting Principal does not have a manager assigned");", + " } else if (actingPrincipalObject.manager._id !== requesterIdOnly) {", + " validationErrors.push("You are not the manager of " + actingPrincipalUsername + ". You can only act on behalf of your direct reports.");", + " } else {", + " console.log("Acting Principal validated: " + actingPrincipalObject.userName);", + " }", + " }", + " } catch (e) {", + " validationErrors.push("Error validating Acting Principal: " + e.message);", + " }", + " }", + " ", + " // Validate target user", + " if (!targetUserUsername || targetUserUsername.trim() === "") {", + " validationErrors.push("Target User username is required");", + " } else {", + " try {", + " var targetUserQuery = {", + " "_queryFilter": 'userName eq "' + targetUserUsername.trim() + '"'", + " };", + " var targetUserResults = openidm.query("managed/alpha_user", targetUserQuery);", + " ", + " if (targetUserResults.resultCount === 0) {", + " validationErrors.push("Target User not found: " + targetUserUsername);", + " } else if (targetUserResults.resultCount > 1) {", + " validationErrors.push("Multiple users found with username: " + targetUserUsername);", + " } else {", + " targetUserObject = targetUserResults.result[0];", + " ", + " // Verify user type is External", + " if (targetUserObject.userType !== "External") {", + " validationErrors.push("Target User must be of type 'External'. User " + targetUserUsername + " is type: " + (targetUserObject.userType || "Unknown"));", + " } else {", + " console.log("Target User validated: " + targetUserObject.userName);", + " }", + " }", + " } catch (e) {", + " validationErrors.push("Error validating Target User: " + e.message);", + " }", + " }", + " ", + " // Validate justification", + " if (!justification || justification.trim() === "") {", + " validationErrors.push("Justification is required");", + " } else if (justification.trim().length < 10) {", + " validationErrors.push("Justification must be at least 10 characters");", + " }", + " ", + " // Prevent self-disable via delegation", + " if (actingPrincipalObject && targetUserObject && actingPrincipalObject._id === targetUserObject._id) {", + " validationErrors.push("Cannot disable the same user you are acting on behalf of");", + " }", + " ", + " // Check if all validations passed", + " if (validationErrors.length === 0) {", + " validationPassed = true;", + " ", + " // Store user details for display in approval", + " execution.setVariable("actingPrincipalUserName", actingPrincipalObject.userName);", + " execution.setVariable("actingPrincipalFullName", actingPrincipalObject.givenName + " " + actingPrincipalObject.sn);", + " execution.setVariable("actingPrincipalId", actingPrincipalObject._id);", + " ", + " execution.setVariable("targetUserUserName", targetUserObject.userName);", + " execution.setVariable("targetUserFullName", targetUserObject.givenName + " " + targetUserObject.sn);", + " execution.setVariable("targetUserId", targetUserObject._id);", + " ", + " execution.setVariable("justification", justification);", + " ", + " console.log("All validations passed");", + " } else {", + " console.log("Validation failed: " + validationErrors.join("; "));", + " }", + " ", + "} catch (e) {", + " validationPassed = false;", + " validationErrors.push("System error during validation: " + e.message);", + " console.log("Validation exception: " + e.message);", + "}", + "", + "// Set workflow variables", + "execution.setVariable("validationPassed", validationPassed);", + "execution.setVariable("validationErrors", validationErrors.join("\\n"));", + "", + "console.log("=== Validation Complete: " + (validationPassed ? "PASSED" : "FAILED") + " ===");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Passed?", + "name": "exclusiveGateway-d5b7b2e2a80a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "validationPassed == true", + ], + "outcome": "validationSuccess", + "step": "approvalTask-bebe49db4dac", + }, + { + "condition": [ + "validationPassed == false", + ], + "outcome": "validationFailure", + "step": "scriptTask-449aac6b18b8", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - Validation Failed", + "name": "scriptTask-449aac6b18b8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Auto-Reject - Validation Failed", + " * Rejects request with detailed error messages", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "var validationErrors = content.get('validationErrors') || "Validation failed";", + "", + "console.log("Auto-rejecting request due to validation errors");", + "", + "try {", + " var decision = {", + " 'decision': 'rejected',", + " 'status': 'complete',", + " 'comment': 'Request automatically rejected due to validation errors:\\n\\n' + validationErrors + '\\n\\nPlease correct the errors and submit a new request.'", + " };", + " ", + " var updateParams = {", + " '_action': 'update'", + " };", + " ", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams);", + " ", + " console.log("Request " + requestId + " rejected - validation failed");", + " ", + "} catch (e) {", + " console.log("Error rejecting request: " + e.message);", + " throw e;", + "}", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "doNothing", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-4f4b87291099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-bebe49db4dac", + "type": "approvalTask", + }, + { + "displayName": "Disable User Account", + "name": "scriptTask-4f4b87291099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Fulfillment - Disable User Account", + " * Disables the target user's account", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "var targetUserId = content.get('targetUserId');", + "var justification = content.get('justification');", + "var actingPrincipalUserName = content.get('actingPrincipalUserName');", + "", + "console.log("=== Fulfillment Start ===");", + "console.log("Disabling user ID: " + targetUserId);", + "", + "try {", + " // Read current user state", + " var targetUser = openidm.read("managed/alpha_user/" + targetUserId);", + " ", + " if (!targetUser) {", + " throw new Error("Target user not found: " + targetUserId);", + " }", + " ", + " console.log("Current user status: " + (targetUser.accountStatus || "active"));", + " ", + " // Prepare patch operations to disable the account", + " var patchOperations = [", + " {", + " "operation": "replace",", + " "field": "/accountStatus",", + " "value": "inactive"", + " }", + " ];", + " ", + " // Add a description/note about the disable action", + " if (targetUser.description) {", + " patchOperations.push({", + " "operation": "replace",", + " "field": "/description",", + " "value": targetUser.description + "\\n[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification", + " });", + " } else {", + " patchOperations.push({", + " "operation": "add",", + " "field": "/description",", + " "value": "[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification", + " });", + " }", + " ", + " // Execute the patch", + " var updateResult = openidm.patch("managed/alpha_user/" + targetUserId, null, patchOperations);", + " ", + " console.log("User " + targetUser.userName + " successfully disabled");", + " console.log("Account status set to: inactive");", + " ", + " // Set success variables", + " execution.setVariable("fulfillmentStatus", "completed");", + " execution.setVariable("fulfillmentMessage", "User account " + targetUser.userName + " has been successfully disabled");", + " ", + " // Update request with completion details", + " try {", + " var requestUpdate = {", + " 'status': 'complete',", + " 'decision': 'approved'", + " };", + " ", + " openidm.action('iga/governance/requests/' + requestId, 'POST', requestUpdate, {'_action': 'update'});", + " } catch (updateError) {", + " console.log("Could not update request status: " + updateError.message);", + " }", + " ", + "} catch (e) {", + " logger.error("Fulfillment error: " + e.message);", + " execution.setVariable("fulfillmentStatus", "failed");", + " execution.setVariable("fulfillmentMessage", "Error disabling user: " + e.message);", + " ", + " // Don't throw - let workflow complete but mark as failed", + " // You might want to send a notification here", + "}", + "", + "console.log("=== Fulfillment Complete ===");", + ], + }, + "type": "scriptTask", + }, + ], + }, + }, + "phhInternalRoleEntitlementGrant": { + "draft": { + "childType": false, + "description": "phh-InternalRoleEntitlementGrant", + "displayName": "phh-InternalRoleEntitlementGrant", + "id": "phhInternalRoleEntitlementGrant", + "mutable": true, + "name": "phh-InternalRoleEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-67a954f33919": {}, + "inclusiveGateway-3f85f36eeeef": {}, + "inclusiveGateway-f105ed2b352d": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-91769554db51": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e04f42607ba5": {}, + "scriptTask-e21178ab80f7": {}, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running entitlement grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var assignmentId = null;", + "var app = null;", + "var assignment = null;", + "var existingAccount = false;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check entitlement exists", + "if (!failureReason) {", + " try {", + " assignment = openidm.read('managed/alpha_assignment/' + assignmentId);", + " if (!assignment) {", + " failureReason = "Validation failed: Cannot find assignment with id " + assignmentId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 3 - Check the user has application granted", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " existingAccount = true;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 4 - If account does not exist, provision it", + "if (!failureReason) {", + " if (!existingAccount) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": applicationId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + message;", + " }", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-3f85f36eeeef", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-3f85f36eeeef", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-0d53639996da", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0d53639996da", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-f105ed2b352d", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-91769554db51", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-91769554db51", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "entitlementId": request.common.entitlementId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/entitlementRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.warn('Create Removal Request failed to create')", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "phhNeDisable": { + "draft": null, + "published": { + "childType": false, + "description": "phh-ne-disable", + "displayName": "phh-ne-disable", + "id": "phhNeDisable", + "mutable": true, + "name": "phh-ne-disable", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-99fdf317c49b", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "scriptTask-99fdf317c49b": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegate Sources", + "name": "scriptTask-99fdf317c49b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Load Delegate Sources", + " * Queries users the current requester can act on behalf of", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "try {", + " // Get the request to find requester", + " var requestObj = openidm.read('iga/governance/requests/' + requestId);", + " var requesterId = requestObj.requester.id;", + " var requesterIdOnly = requesterId.replace("managed/user/", "");", + " ", + " console.log("=== Loading Delegation Options ===");", + " console.log("Requester ID: " + requesterIdOnly);", + " ", + " // Query users where current user is the manager", + " var queryParams = {", + " "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"',", + " "_fields": "userName,givenName,sn,mail,_id"", + " };", + " ", + " var results = openidm.query("managed/alpha_user", queryParams);", + " console.log("Results: " + results);", + " ", + " // Build options array", + " var options = [];", + " ", + " if (results.resultCount > 0) {", + " results.result.forEach(function(user) {", + " options.push({", + " "value": user._id,", + " "label": user.givenName + " " + user.sn + " (" + user.userName + ")"", + " });", + " });", + " ", + " logger.info("Found " + options.length + " delegation options");", + " } else {", + " logger.warn("No direct reports found for requester");", + " options.push({", + " "value": "",", + " "label": "No direct reports found"", + " });", + " }", + " ", + " // Store options as JSON string", + " execution.setVariable("delegationOptions", JSON.stringify(options));", + " execution.setVariable("hasDelegationOptions", results.resultCount > 0);", + " execution.setVariable("delegationOptionsCount", results.resultCount);", + " ", + "} catch (e) {", + " logger.error("Error loading delegation options: " + e.message);", + " execution.setVariable("delegationOptions", "[]");", + " execution.setVariable("hasDelegationOptions", false);", + " execution.setVariable("delegationOptionsCount", 0);", + "}", + "", + "logger.info("=== Delegation Options Loaded ===");", + ], + }, + "type": "scriptTask", + }, + ], + }, + }, + "phhNewUserCreate": { + "draft": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-621c9996676a": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-c58309b8c470": {}, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("[phh] Creating User");", + "function generateUsername(givenName, surname) {", + "const usernamePrefix = (givenName[0] + surname[0]).toLowerCase();", + "const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]);", + "const usernames = data.result.map(user => user.userName);", + "let i = 1;", + "while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) {", + "i++;", + "}", + "return usernamePrefix + String(i).padStart(5, '0');", + "}", + "function createUser(custom) {", + "var startDate = new Date(custom.startDate).toISOString();", + "var endDate = new Date(custom.endDate).toISOString();", + "var payload = {", + ""userName": custom.userName,", + ""givenName": custom.givenName,", + ""sn": custom.sn,", + ""mail": custom.mail,", + ""password": custom.password,", + ""frIndexedDate5":startDate,", + ""frIndexedDate4":endDate", + "};", + "return openidm.create('managed/alpha_user', null, payload);", + "}", + "function process(requestObj) {", + "var custom = requestObj.request.custom", + "custom.userName = generateUsername(custom.givenName, custom.sn);", + "custom.password = 'Password!234';", + "const result = createUser(custom);", + "return { outcome: "provisioned" };", + "}", + "try {", + "const requestId = execution.getVariables().get("id");", + "const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {});", + "let decision = { status: "complete", "decision": "approved" };", + "try {", + "const result = process(requestObj);", + "Object.assign(decision, result);", + "} catch (error) {", + "Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true });", + "}", + "openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"});", + "} catch (e) {", + "logger.error(\`Error reading request \${requestId}: \${e}\`);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-621c9996676a": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-c58309b8c470": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("[phh] Creating User");", + "function generateUsername(givenName, surname) {", + "const usernamePrefix = (givenName[0] + surname[0]).toLowerCase();", + "const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]);", + "const usernames = data.result.map(user => user.userName);", + "let i = 1;", + "while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) {", + "i++;", + "}", + "return usernamePrefix + String(i).padStart(5, '0');", + "}", + "function createUser(custom) {", + "var startDate = new Date(custom.startDate).toISOString();", + "var endDate = new Date(custom.endDate).toISOString();", + "var payload = {", + ""userName": custom.userName,", + ""givenName": custom.givenName,", + ""sn": custom.sn,", + ""mail": custom.mail,", + ""password": custom.password,", + ""frIndexedDate5":startDate,", + ""frIndexedDate4":endDate", + "};", + "return openidm.create('managed/alpha_user', null, payload);", + "}", + "function process(requestObj) {", + "var custom = requestObj.request.custom", + "custom.userName = generateUsername(custom.givenName, custom.sn);", + "custom.password = 'Password!234';", + "const result = createUser(custom);", + "return { outcome: "provisioned" };", + "}", + "try {", + "const requestId = execution.getVariables().get("id");", + "const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {});", + "let decision = { status: "complete", "decision": "approved" };", + "try {", + "const result = process(requestObj);", + "Object.assign(decision, result);", + "} catch (error) {", + "Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true });", + "}", + "openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"});", + "} catch (e) {", + "logger.error(\`Error reading request \${requestId}: \${e}\`);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + "testWorkflow1": { + "draft": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow4": { + "draft": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow5": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_5", + "displayName": "test_workflow_5", + "id": "testWorkflow5", + "mutable": true, + "name": "test_workflow_5", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow6": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_6", + "displayName": "test_workflow_6", + "id": "testWorkflow6", + "mutable": true, + "name": "test_workflow_6", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow7": { + "draft": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow8": { + "draft": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "wfEntitlementExampleIsPrivileged": { + "draft": { + "childType": false, + "description": "wfEntitlementExampleIsPrivileged", + "displayName": "wfEntitlementExampleIsPrivileged", + "id": "wfEntitlementExampleIsPrivileged", + "mutable": true, + "name": "wfEntitlementExampleIsPrivileged", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-63163dc11c1f": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-77691047b28d": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.user.manager._refResourceId", + ], + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-67a954f33919": {}, + "inclusiveGateway-bcb05a148971": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-5106f7a29d86": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e04f42607ba5": {}, + "scriptTask-e21178ab80f7": {}, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running entitlement grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var assignmentId = null;", + "var app = null;", + "var assignment = null;", + "var existingAccount = false;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check entitlement exists", + "if (!failureReason) {", + " try {", + " assignment = openidm.read('managed/alpha_assignment/' + assignmentId);", + " if (!assignment) {", + " failureReason = "Validation failed: Cannot find assignment with id " + assignmentId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 3 - Check the user has application granted", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " existingAccount = true;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 4 - If account does not exist, provision it", + "if (!failureReason) {", + " if (!existingAccount) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": applicationId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + e.message;", + " }", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Auto-Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "logger.info("Execution Content: " + content);", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = false;", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " lineItemId = requestObj.request.common.context.lineItemId;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed "+e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "var queryParams = {", + " "_action": "update"", + "}", + "var lineItemParams = {", + " "_action": "updateRemediationStatus"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to request context: " + context", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + " ", + "", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-63163dc11c1f", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Privileged", + "name": "scriptTask-5106f7a29d86", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-bcb05a148971", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestObj = null;", + "var entId = null;", + "var entGlossary = null;", + "var entPriv = null;", + "", + "//Check entitlement exists and grab entitlement info", + "try {", + " requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " entId = requestObj.assignment.id;", + "}", + "catch (e) {", + " logger.info("Validation failed: Error reading entitlement grant request with id " + requestId);", + "}", + "//Check glossary for entitlement exists and grab glossary info", + "try {", + " entGlossary = openidm.action('iga/governance/resource/' + entId + '/glossary', 'GET', {}, {});", + " // Sets entPriv based on the glossary contents, if present, otherwise defaults to true", + " entPriv = (entGlossary.hasOwnProperty("isPrivileged")) ? entGlossary.isPrivileged : true;", + " //Sets entPriv based on glossary contents, if present, otherwise defaults to false", + " //entPriv = !!entGlossary.isPrivileged;", + " execution.setVariable("entPriv", entPriv);", + "}", + "catch (e) {", + " logger.info("Could not retrieve glossary with entId " + entId + " from entitlement grant request ID " + requestId);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Inclusive Gateway", + "name": "inclusiveGateway-bcb05a148971", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "entPriv == true", + ], + "outcome": "Privileged", + "step": "approvalTask-77691047b28d", + }, + { + "condition": [ + "entPriv == false", + ], + "outcome": "NotPrivileged", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.user.manager._refResourceId", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-3eab1948f1ec", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-77691047b28d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-5106f7a29d86", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-63163dc11c1f", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays 1`] = `0`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays 2`] = `""`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays 3`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✔ Exported 26 workflows +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/BasicApplicationGrant.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for granting a user an account in an application", + "displayName": "Basic Application Grant", + "id": "BasicApplicationGrant", + "mutable": false, + "name": "BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-5167870154a9": {}, + "exclusiveGateway-621c9996676a": {}, + "inclusiveGateway-7d248125a9bd": {}, + "inclusiveGateway-a71e67faaad1": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-14acc58c28dd": {}, + "scriptTask-3a74557440fb": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-744ef6a8b9a2": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": [ + "logger.info("Running application grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var app = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check the user does not already have application granted", + "// Note: this is done at request submission time as well, the following is an example of how to check user's accounts", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "applicationId": request.common.applicationId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info("Create Removal Request failed to create request")", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/BasicApplicationRemove.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for removing a user's account in an application", + "displayName": "Basic Application Remove", + "id": "BasicApplicationRemove", + "mutable": false, + "name": "BasicApplicationRemove", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-b80009644545", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-2bf686c17905": {}, + "inclusiveGateway-0c53868eeb2a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-b80009644545": {}, + "scriptTask-ba009484a101": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-0431eab1902c": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-ba009484a101", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Deprovisioning", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Deprovisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Deprovisioning failed: Error reading request with id " + requestId;", + "}", + "", + "// Create object to update final request progress", + "var decision = { 'status': 'complete', 'decision': 'approved' };", + "", + "if (!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "remove",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " logger.info("Removing account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications', 'POST', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Deprovisioning failed: Error deprovisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + "}", + "", + "if (context == 'certification') {", + " // If application removal request is created via certification, update the corresponding certification item with remediation status.", + " try {", + " var remediationStatus = failureReason ? "failed" : "complete"", + " var comment = failureReason ? "Unable to remove the account successfully, remediation failed." : "Account has been removed from user successfully, remediation complete."", + " var body = {", + " "remediationStatus": remediationStatus,", + " "comment": comment", + " }", + " var lineItemParams = {", + " "_action": "updateRemediationStatus"", + " }", + " openidm.action('iga/governance/certification/items/' + lineItemId, 'POST', body, lineItemParams);", + " }", + " catch (e) {", + " failureReason = "Unable to update the certification line item " + lineItemId + " with the final remediation status from this request."", + " }", + "}", + "", + "// Set additional properties on the request progress update", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update final request progress", + "var queryParams = { '_action': 'update' };", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-b80009644545", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-2bf686c17905", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = null;", + "var campaignId = null;", + "var enableWait = false;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " // Set execution variables from the request context", + " context = requestObj.request.common.context.type;", + " if (context == 'admin' || context == 'certification') {", + " skipApproval = true;", + " }", + " if (context == 'certification') {", + " lineItemId = requestObj.request.common.context.lineItemId;", + " campaignId = requestObj.request.common.context.campaignId", + "", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of application removal request: " + requestId }, {})", + " }", + "", + " }", + " if (requestObj.request.common.endDate){", + " enableWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Could not validate request context, normal approval process will be followed.")", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-2bf686c17905", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-ba009484a101", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approval", + "name": "scriptTask-ba009484a101", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-0c53868eeb2a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved"", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-0c53868eeb2a", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasEndDate", + "step": "waitTask-0431eab1902c", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noEndDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0431eab1902c", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.endDate", + ], + }, + }, + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/BasicEntitlementGrant.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for granting a user an entitlement in an application", + "displayName": "Basic Entitlement Grant", + "id": "BasicEntitlementGrant", + "mutable": false, + "name": "BasicEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-67a954f33919": {}, + "inclusiveGateway-3f85f36eeeef": {}, + "inclusiveGateway-f105ed2b352d": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-91769554db51": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e04f42607ba5": {}, + "scriptTask-e21178ab80f7": {}, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running entitlement grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var assignmentId = null;", + "var app = null;", + "var assignment = null;", + "var existingAccount = false;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check entitlement exists", + "if (!failureReason) {", + " try {", + " assignment = openidm.read('managed/alpha_assignment/' + assignmentId);", + " if (!assignment) {", + " failureReason = "Validation failed: Cannot find assignment with id " + assignmentId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 3 - Check the user has application granted", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " existingAccount = true;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 4 - If account does not exist, provision it", + "if (!failureReason) {", + " if (!existingAccount) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": applicationId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + message;", + " }", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-3f85f36eeeef", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-3f85f36eeeef", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-0d53639996da", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0d53639996da", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-f105ed2b352d", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-91769554db51", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-91769554db51", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "entitlementId": request.common.entitlementId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/entitlementRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.warn('Create Removal Request failed to create')", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/BasicEntitlementRemove.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for removing an entitlement from a user", + "displayName": "Basic Entitlement Remove", + "id": "BasicEntitlementRemove", + "mutable": false, + "name": "BasicEntitlementRemove", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "inclusiveGateway-8803458e3a77": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + "waitTask-b6e654628b18": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e8842de66fbb", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Deprovisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Deprovisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Deprovisioning failed: Error reading request with id " + requestId;", + "}", + "", + "// Create object to update final request progress", + "var decision = { 'status': 'complete', 'decision': 'approved' };", + "", + "if (!failureReason) {", + " try {", + " // Remove entitlement grant from user", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "remove",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements', 'POST', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Deprovisioning failed: Error deprovisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message;", + " }", + "}", + "", + "if (context == 'certification') {", + " // If entitlement removal request is created via certification, update the corresponding certification item with remediation status.", + " try {", + " var remediationStatus = failureReason ? "failed" : "complete"", + " var comment = failureReason ? "Unable to remove the entitlement successfully, remediation failed." : "Entitlement has been removed from user successfully, remediation complete."", + " var body = {", + " "remediationStatus": remediationStatus,", + " "comment": comment", + " }", + " var lineItemParams = {", + " "_action": "updateRemediationStatus"", + " }", + " openidm.action('iga/governance/certification/items/' + lineItemId, 'POST', body, lineItemParams);", + " }", + " catch (e) {", + " failureReason = "Unable to update the certification line item " + lineItemId + " with the final remediation status from this request."", + " }", + "}", + "", + "// Set additional properties on the request progress update", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update final request progress", + "var queryParams = { '_action': 'update' };", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = null;", + "var campaignId = null;", + "var enableWait = false;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " // Set execution variables from the request context", + " context = requestObj.request.common.context.type;", + " if (context == 'admin' || context == 'certification') {", + " skipApproval = true;", + " }", + " if (context == 'certification') {", + " lineItemId = requestObj.request.common.context.lineItemId;", + " campaignId = requestObj.request.common.context.campaignId", + "", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of entitlement removal request: " + requestId }, {})", + " }", + "", + " }", + " if (requestObj.request.common.endDate){", + " enableWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Could not validate request context, normal approval process will be followed.")", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-8803458e3a77", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-8803458e3a77", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasEndDate", + "step": "waitTask-b6e654628b18", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noEndDate", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-b6e654628b18", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.endDate", + ], + }, + }, + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/BasicRoleGrant.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for adding a user to a role", + "displayName": "Basic Role Grant", + "id": "BasicRoleGrant", + "mutable": false, + "name": "BasicRoleGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-d76490953517", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-c7867dd2593a": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-8cd9decab2e4": {}, + "inclusiveGateway-57e9b96eb570": {}, + "inclusiveGateway-d18d59004c0c": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-32dada3fc9f9": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-8506123e6208": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-d76490953517": {}, + "waitTask-4e25b1ee7a14": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-8506123e6208", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-c7867dd2593a", + "type": "approvalTask", + }, + { + "displayName": "Role Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running role grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var roleId = null;", + "var role = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " roleId = requestObj.role.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check role exists", + "if (!failureReason) {", + " try {", + " role = openidm.read('managed/alpha_role/' + roleId);", + " if (!role) {", + " failureReason = "Validation failed: Cannot find role with id " + roleId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading role with id " + roleId + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Role Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-d18d59004c0c", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "roleId": request.common.roleId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/roles' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning role to user " + request.common.userId + " for role " + request.common.roleId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-d76490953517", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-8cd9decab2e4", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var enableWait = false;", + "var enableEndWait = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if(requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if(requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("skipApproval", skipApproval);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-8cd9decab2e4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-8506123e6208", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-c7867dd2593a", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-8506123e6208", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-57e9b96eb570", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved"", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-57e9b96eb570", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-4e25b1ee7a14", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Until Start Date", + "name": "waitTask-4e25b1ee7a14", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-d18d59004c0c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-32dada3fc9f9", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-32dada3fc9f9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + " if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "roleId": request.common.roleId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/roleRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info('Create Removal Request creation failed')", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/BasicRoleRemove.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for removing a user's role membership", + "displayName": "Basic Role Remove", + "id": "BasicRoleRemove", + "mutable": false, + "name": "BasicRoleRemove", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-c99a721d2b93", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-53007af1f4bf": {}, + "inclusiveGateway-a83e210b90d1": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-6dde9c0ec213": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-c99a721d2b93": {}, + "waitTask-e65fcbd06a6d": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-6dde9c0ec213", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Deprovisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Deprovisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Deprovisioning failed: Error reading request with id " + requestId;", + "}", + "", + "// Create object to update final request progress", + "var decision = { 'status': 'complete', 'decision': 'approved' };", + "", + "if (!failureReason) {", + " try {", + " // Remove role grant from user", + " var request = requestObj.request;", + " var payload = {", + " "roleId": request.common.roleId,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "remove",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/roles', 'POST', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Deprovisioning failed: Error deprovisioning role to user " + request.common.userId + " for role " + request.common.roleId + ". Error message: " + message;", + " }", + "}", + "", + "if (context == 'certification') {", + " // If role removal request is created via certification, update the corresponding certification item with remediation status.", + " try {", + " var remediationStatus = failureReason ? "failed" : "complete"", + " var comment = failureReason ? "Unable to remove the role successfully, remediation failed." : "Role has been removed from user successfully, remediation complete."", + " var body = {", + " "remediationStatus": remediationStatus,", + " "comment": comment", + " }", + " var lineItemParams = {", + " "_action": "updateRemediationStatus"", + " }", + " openidm.action('iga/governance/certification/items/' + lineItemId, 'POST', body, lineItemParams);", + " }", + " catch (e) {", + " failureReason = "Unable to update the certification line item " + lineItemId + " with the final remediation status from this request."", + " }", + "}", + "", + "// Set additional properties on the request progress update", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update final request progress", + "var queryParams = { '_action': 'update' };", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-53007af1f4bf", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-6dde9c0ec213", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-c99a721d2b93", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-53007af1f4bf", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = null;", + "var campaignId = null;", + "var enableWait = false;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " // Set execution variables from the request context", + " context = requestObj.request.common.context.type;", + " if (context == 'admin' || context == 'certification') {", + " skipApproval = true;", + " }", + " if (context == 'certification') {", + " lineItemId = requestObj.request.common.context.lineItemId;", + " campaignId = requestObj.request.common.context.campaignId", + "", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of role removal request: " + requestId }, {})", + " }", + "", + " }", + " if (requestObj.request.common.endDate){", + " enableWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Could not validate request context, normal approval process will be followed.")", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-6dde9c0ec213", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a83e210b90d1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-a83e210b90d1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasEndDate", + "step": "waitTask-e65fcbd06a6d", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noEndDate", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-e65fcbd06a6d", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.endDate", + ], + }, + }, + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/BasicViolationProcess.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic violation flow for determining how a policy violation is handled", + "displayName": "Basic Violation Process", + "id": "BasicViolationProcess", + "mutable": false, + "name": "BasicViolationProcess", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "violationTask-df7f65b04ec3", + }, + "id": "startNode", + }, + "uiConfig": { + "exclusiveGateway-b1e244b742b5": {}, + "scriptTask-313f487929a4": {}, + "scriptTask-690cd5adc1b6": {}, + "scriptTask-6e8507beca08": {}, + "violationTask-df7f65b04ec3": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "violation.policyRule.violationOwner.id", + ], + }, + "type": "violationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "script", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Start Violation Task", + "name": "violationTask-df7f65b04ec3", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "violation.policyRule.violationOwner.id", + ], + }, + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "violationAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + "violation.policyRule.violationOwner.id", + ], + }, + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 8, + "notification": "violationEscalated", + }, + "expiration": { + "action": { + "isExpression": true, + "value": [ + "violation.policyRule.violationLifecycle.expiration.expires ? violation.policyRule.violationLifecycle.expiration.action : null", + ], + }, + "actors": [], + "date": { + "isExpression": true, + "value": [ + "violation.policyRule.violationLifecycle.expiration.expires ? (new Date(new Date().getTime()+(violation.policyRule.violationLifecycle.expiration.duration*24*60*60*1000))).toISOString() : null", + ], + }, + "notification": "violationExpired", + }, + "reassign": { + "notification": "violationReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "violationReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": "scriptTask-690cd5adc1b6", + }, + { + "condition": null, + "outcome": "ALLOW", + "step": "scriptTask-313f487929a4", + }, + ], + }, + }, + { + "displayName": "Remediate Violation", + "name": "scriptTask-690cd5adc1b6", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-b1e244b742b5", + }, + ], + "script": [ + "logger.info("Remediating violation");", + "", + "var content = execution.getVariables();", + "var violationId = content.get('id');", + "var remediation = content.get('remediation');", + "logger.info("Remediating violation - violationId: " + violationId + ', remediation payload: ' + remediation);", + "", + "var remediationContent = null;", + "", + "var remediationResponse = openidm.action('iga/governance/violation/' + violationId + '/remediate', 'POST', remediation);", + "logger.info("Remediating response: " + remediationResponse);", + "", + "remediationContent = remediationResponse.decision.remediation;", + "execution.setVariable("remediation", remediationContent); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Allow Violation", + "name": "scriptTask-313f487929a4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Allowing violation");", + "var content = execution.getVariables();", + "var violationId = content.get('id');", + "var phaseName = content.get('phaseName');", + "logger.info("Violation to be allowed: " + violationId + " with phase name " + phaseName);", + "", + "var failureReason = null;", + "try {", + " var allowResponse = openidm.action('iga/governance/violation/' + violationId + '/allow', 'POST', {});", + "logger.info("Violation " + violationId + " was allowed successfully.");} catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Failed allowing violation with id " + violationId + ". Error message: " + message;", + "}", + "", + "if (failureReason) {", + " var update = { "comment": failureReason };", + " try {", + " openidm.action('iga/governance/violation/' + violationId + '/phases/' + phaseName + '/comment', 'POST', update, {}); ", + " } catch (e) {", + " openidm.action('iga/governance/violation/' + violationId + '/comment', 'POST', update, {});", + " }", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Remediation Validation", + "name": "exclusiveGateway-b1e244b742b5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "remediation.remediationOptionId == "grantRemoval"", + ], + "outcome": "removeGrants", + "step": "scriptTask-6e8507beca08", + }, + { + "condition": [ + "!remediation || !remediation.remediationOptionId || remediation.remediationOptionId !== "grantRemoval"", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("This is exclusive gateway to validate remediation");", + "var content = execution.getVariables();", + "var remediationResult = content.get('remediation');", + "logger.info("The remediation result is: " + remediationResult);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Remove Grants Auto", + "name": "scriptTask-6e8507beca08", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Removing grants automatically");", + "", + "var content = execution.getVariables();", + "var violationId = content.get('id');", + "var failureReason = null;", + "var phaseName = content.get('phaseName');", + "var violationObj;", + "", + "logger.info("Removing grants for violation " + violationId + " with phase name " + phaseName);", + "", + "try {", + " violationObj = openidm.action('iga/governance/violation/lookup/' + violationId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Removing grants failed: Error reading violation with id " + violationId + ". Error message: " + e.message;", + "}", + "", + "if (!failureReason) {", + " var remediation = violationObj.decision.remediation;", + " var failedDeprovisioning = false;", + " var deprovisionedIds = [];", + " for(var grant of violationObj.violatingAccess) {", + " if (!remediation.grantIds.includes(grant.compositeId)) {", + " continue;", + " }", + "", + " var userId = violationObj.user.id;", + " logger.info("Removing grant: " + grant.compositeId + ", user: " + userId + ", violation: " + violationId + ", type: " + grant.item.type);", + " var resourceInfo;", + " var resourcePath;", + " if (grant.item.type === 'ResourceGrant' || grant.item.type === 'entitlementGrant') {", + " resourceInfo = { "resourceKey": "entitlementId", "resourceValue": grant.assignment.id };", + " resourcePath = "entitlements";", + " }", + " else if (grant.item.type === 'AccountGrant' || grant.item.type === 'accountGrant') {", + " var accountId = grant.account.id;", + " ", + " }", + " else if (grant.item.type === 'roleMembership') {", + " resourceInfo = { "resourceKey": "roleId", "resourceValue": grant.role.id };", + " resourcePath = "roles";", + " }", + "", + " try {", + " var payload = {", + " "grantType": "request"", + " };", + " payload[resourceInfo.resourceKey] = resourceInfo.resourceValue;", + "", + " logger.info('Payload to remove grant: ' + JSON.stringify(payload));", + " ", + " var queryParams = {", + " "_action": "remove"", + " }", + "", + " var result = openidm.action('iga/governance/user/' + userId + '/' + resourcePath , 'POST', payload,queryParams);", + " execution.setVariables(result);", + "", + " logger.info("Grant removed " + grant.compositeId + " successfully, user " + userId + ", violation: " + violationId + ", type: " + grant.item.type + ", resource info: " + JSON.stringify(resourceInfo) + ", result: " + JSON.stringify(result));", + " deprovisionedIds.push(grant.compositeId);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = failureReason + ". Removing grants failed: Error deprovisioning " + resourcePath + " to user " + userId + " for " + resourceInfo + ". Error message: " + message + ".";", + " failedDeprovisioning = true;", + " }", + " }", + "", + " if (!failedDeprovisioning) {", + " openidm.action('iga/governance/violation/' + violationId + '/remediation/status/complete', 'POST', {});", + " } else {", + " failureReason = failureReason + ". Grants removed: " + deprovisionedIds;", + " }", + "}", + "", + "if (failureReason) {", + " var update = { 'comment': failureReason };", + " try {", + " openidm.action('iga/governance/violation/' + violationId + '/phases/' + phaseName + '/comment', 'POST', update, {}); ", + " } catch (e) {", + " openidm.action('iga/governance/violation/' + violationId + '/comment', 'POST', update, {});", + " }", + "}", + "", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/CreateEntitlement.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for creating a new entitlement", + "displayName": "Create Entitlement", + "id": "CreateEntitlement", + "mutable": false, + "name": "CreateEntitlement", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-c59ee376a37c", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-67a954f33919": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-c59ee376a37c": {}, + "scriptTask-e21178ab80f7": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create Entitlement", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Entitlement - creating entitlement");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create entitlement failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " // Call IGA API for creating entitlement", + " var payload = requestObj.request.entitlement;", + " var params = { '_action': 'create', 'initiatingUser': requestObj.requester.id};", + " openidm.action('iga/governance/entitlement', 'POST', payload, params);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Create entitlement failed: Error creating " + payload.objectType + " entitlement for application " + payload.applicationId + ". Error message: " + message;", + " }", + "}", + "", + "// Build the payload to update the request object with the final status, decision, and outcome", + "var decision = {'status': 'complete', 'decision': 'approved'};", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update request", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + "", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create entitlement - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Creating Entitlement - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having create privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-c59ee376a37c", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// create an entitlement for the application which they are requesting. If so, it will", + "// skip any approval process and directly move to create the entitlement.", + "", + "logger.info("Creating Entitlement - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " // create entitlements for the requested application", + " var entitlementObj = requestObj.request.entitlement;", + " var userId = requester.id.split('/')", + " var entitlement = openidm.action('iga/governance/application/' + entitlementObj.applicationId, 'GET', {}, {'endUserId': userId[2]})", + " if (entitlement.permissions.createEntitlement) {", + " skipApproval = true;", + " }", + " }", + " else {", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/CreateUser.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for creating a new user", + "displayName": "Create User", + "id": "CreateUser", + "mutable": false, + "name": "CreateUser", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Creating User");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Creating User: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var payload = requestObj.request.user.object;", + "", + " /** Create new user **/", + " var result = openidm.create('managed/alpha_user', null, payload, queryParams);", + " logger.info("User created with userName " + result.userName + " and _id " + result._id + ".")", + " ", + " /** Send new user email **/", + " var body = { ", + " subject: "Welcome " + payload.givenName + " " + payload.sn + "!",", + " to: payload.mail,", + " body: "Your new user has been created.\\n\\nUsername: " + payload.userName,", + " object: {}", + " };", + " ", + " if(payload.manager && payload.manager._ref){", + " logger.info("Getting manager information for " + payload.userName + " create user welcome email.")", + " try {", + " var managerResult = openidm.read(payload.manager._ref);", + " body.cc = managerResult.mail;", + " } catch (e) {", + " logger.info("Unable to read manager information for " + payload.userName + " create user welcome email. " + e.message)", + " }", + " }", + " openidm.action("external/email", "send", body);", + " }", + " catch (e) {", + " failureReason = "Creating user failed: Error during creation of user " + payload.userName + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + " ", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// create a user. If so, it will skip any approval process and directly move to create the new user.", + "", + "logger.info("Create User - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a normal managed user, check that the user has permissions to create a user", + " var userId = requester.id.split('/');", + " var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': userId[2], 'scopePermission': 'createUser', '_queryFilter': \`id+eq+'\` + userId[2] + \`'\`})", + " if(user.result.length > 0){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Create User - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to requester having create user privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/DeleteUser.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic Request flow to delete a user", + "displayName": "Delete User", + "id": "DeleteUser", + "mutable": false, + "name": "DeleteUser", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Delete User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Deleting User - request id " + requestId);", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "User Deletion: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " ", + " /** Delete user **/", + " var result = openidm.delete('managed/alpha_user/' + request.user.userId, null);", + " logger.info("Deleted user " + request.user.userId + " for request id " + requestId + ".")", + " }", + " catch (e) {", + " failureReason = "Deleting user failed: Error during deletion of user " + request.user.userId + " for request id " + requestId + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Delete User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// delete users. If so, it will skip any approval process and directly move to delete the user.", + "", + "logger.info("Delete User - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " // create entitlements for the requested application", + " var userId = requestObj.request.user.userId;", + " var requesterId = requester.id.split('/');", + " var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': requesterId[2], 'scopePermission': 'deleteUser', '_queryFilter': \`id+eq+'\` + userId + \`'\`})", + " if(user.result[0].permissions.deleteUser){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Delete User - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having delete user privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/ModifyEntitlement.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic request flow for modifying an existing entitlement", + "displayName": "Modify Entitlement", + "id": "ModifyEntitlement", + "mutable": false, + "name": "ModifyEntitlement", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-365b50ab00a7", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 1, + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "exclusiveGateway-c82a357d8c38": {}, + "fulfillmentTask-cce84a670745": { + "actors": { + "isExpression": true, + "value": [ + "// Returns the certifier", + "(function() {", + " var content = execution.getVariables();", + " var certifierId = content.get('certifierId');", + " ", + " return [{", + " "id": "managed/user/" + certifierId,", + " "permissions": {", + " "fulfill": true,", + " "deny": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + "", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-365b50ab00a7": {}, + "scriptTask-87ad089a5484": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Modify Entitlement", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Modify Entitlement - updating entitlement");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var entitlementId = null;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " entitlementId = requestObj.request.entitlement.entitlementId;", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Modify entitlement failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " // Call IGA API for modifying entitlement", + " var payload = requestObj.request.entitlement;", + " var queryParams = {", + " "_action": "update",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/entitlement/' + entitlementId , 'PUT', payload, queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Modify entitlement failed: Error updating entitlement " + payload.entitlementId + ". Error message: " + message;", + " }", + "}", + "", + "// Build the payload to update the request object with the final status, decision, and outcome", + "var decision = {'status': 'complete', 'decision': 'approved'};", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update request", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Modify entitlement - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Modify Entitlement - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having modify privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-87ad089a5484", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// modify the entitlement for which they are requesting. If so, it will", + "// skip any approval process and directly move to modify the entitlement.", + "", + "logger.info("Modify Entitlement - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var isCertifierOwnerSame = String(content.get('isCertifierOwnerSame')) === 'true';", + "var skipApproval = true;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " // create entitlements for the requested application", + " var entitlementObj = requestObj.request.entitlement;", + " var userId = requester.id.split('/');", + " var entitlement = openidm.action('iga/governance/entitlement/' + entitlementObj.entitlementId, 'GET', {}, {'endUserId': userId[2]})", + " if(!entitlement.permissions.modifyEntitlement || !isCertifierOwnerSame){", + " skipApproval = false;", + " }", + " } ", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'certification' && !isCertifierOwnerSame) {", + " skipApproval = false;", + " }", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Check", + "name": "scriptTask-365b50ab00a7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-c82a357d8c38", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var certification = false;", + "var certifierId = null;", + "var isCertifierOwnerSame = false;", + "var entitlementOwnerId = null;", + "let isTenantAdmin = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " ", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'certification') {", + " certification = true;", + " if(requestObj && requestObj.entitlementOwner && requestObj.entitlementOwner.length){", + " entitlementOwnerId = requestObj.entitlementOwner[0].id", + " }", + " const campaignId = requestObj.request.common.context.campaignId;", + " const lineItemId = requestObj.request.common.context.lineItemId;", + " ", + " // Add a comment on the certification item denoting the request ID", + " var commentResp = openidm.action('/iga/governance/certification/' + campaignId + '/items/comment', 'POST', { "ids": [lineItemId], "comment": "ID of modify entitlement request: " + requestId }, {});", + " ", + " var lineItemRespObj = openidm.action('/iga/governance/certification/' + campaignId + '/items/' + lineItemId, 'GET', {}, {"isAdmin":true});", + " if (lineItemRespObj.result[0]) {", + " const decisionById = lineItemRespObj.result[0].decision.certification.decisionBy.id;", + " const primaryReviewerId = lineItemRespObj.result[0].decision.certification.primaryReviewer.id", + " let isTenantAdmin = false;", + "", + " if (decisionById === 'SYSTEM') {", + " isTenantAdmin = true;", + " } else {", + " isTenantAdmin = decisionById.split('/')[1] === 'teammember';", + " }", + "", + " if (isTenantAdmin) {", + " certifierId = primaryReviewerId.split('/')[2];", + " } else {", + " certifierId = decisionById.split('/')[2];", + " }", + " isCertifierOwnerSame = entitlementOwnerId === certifierId;", + " }", + " }", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "execution.setVariable("context", context);", + "execution.setVariable("certification", certification);", + "execution.setVariable("certifierId", certifierId);", + "execution.setVariable("isCertifierOwnerSame", isCertifierOwnerSame);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Check Certification", + "name": "exclusiveGateway-c82a357d8c38", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "certification == true", + ], + "outcome": "isCertification", + "step": "fulfillmentTask-cce84a670745", + }, + { + "condition": [ + "certification == false", + ], + "outcome": "isNotCertification", + "step": "scriptTask-87ad089a5484", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Certifier Modifications", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "// Returns the certifier", + "(function() {", + " var content = execution.getVariables();", + " var certifierId = content.get('certifierId');", + " ", + " return [{", + " "id": "managed/user/" + certifierId,", + " "permissions": {", + " "fulfill": true,", + " "deny": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + "", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "scriptTask-87ad089a5484", + }, + { + "condition": null, + "outcome": "DENY", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "name": "fulfillmentTask-cce84a670745", + "type": "fulfillmentTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/ModifyUser.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "Basic Request flow to modify a user", + "displayName": "Modify User", + "id": "ModifyUser", + "mutable": false, + "name": "ModifyUser", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Update User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Modify User request id " + requestId + " - modifying user");", + "", + "var failureReason = null;", + "", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Modify user failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " var modifiedAttributes = requestObj.request.user.object;", + " var userId = requestObj.request.user.userId;", + " try {", + " var payload = [];", + "", + " for(var key in modifiedAttributes) {", + " payload.push({", + " "operation": "replace",", + " "field": "/" + key,", + " "value": modifiedAttributes[key]", + " })", + " }", + "", + " var result = openidm.patch('managed/alpha_user/' + userId , null, payload);", + " }", + " catch (e) {", + " failureReason = "Modify user failed - request id " + requestId + ": Error updating user " + userId + ". Error message: " + e.message;", + " logger.warn(failureReason);", + " }", + "}", + "", + "// Build the payload to update the request object with the final status, decision, and outcome", + "var decision = {'status': 'complete', 'decision': 'approved'};", + "if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + "}", + "else {", + " decision.outcome = 'provisioned';", + "}", + "", + "// Update request", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Modify User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// modify the user for which they are requesting. If so, it will", + "// skip any approval process and directly move to modify the user.", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Modify User - Permission check - request id " + requestId);", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a managed user, check that the user has permissions to ", + " var userId = requestObj.request.user.userId;", + " var requesterId = requester.id.split('/');", + " var userResponse = openidm.action('iga/governance/user/', 'GET', {}, {'endUserId': requesterId[2], 'scopePermission': 'modifyUser', '_queryFilter': \`id+eq+'\` + userId + \`'\`})", + " if(userResponse.result[0].permissions.modifyUser){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed - request id " + requestId + ": " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "logger.info("Modify Entitlement request id " + requestId + " - marking request as auto approved.");", + "", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to user having modify privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request id " + requestId + ". Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/createNonEmployee.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "CreateNonEmployee", + "displayName": "CreateNonEmployee", + "id": "createNonEmployee", + "mutable": true, + "name": "CreateNonEmployee", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "events": { + "escalationType": "script", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});", + " return systemSettings.defaultApprover;", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 1, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Creating User");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "}", + "catch (e) {", + " failureReason = "Creating User: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var payload = requestObj.request.user.object;", + "", + " /** Create new user **/", + " var result = openidm.create('managed/alpha_user', null, payload, queryParams);", + " logger.info("User created with userName " + result.userName + " and _id " + result._id + ".")", + " ", + " /** Send new user email **/", + " var body = { ", + " subject: "Welcome " + payload.givenName + " " + payload.sn + "!",", + " to: payload.mail,", + " body: "Your new user has been created.\\n\\nUsername: " + payload.userName,", + " object: {}", + " };", + " ", + " if(payload.manager && payload.manager._ref){", + " logger.info("Getting manager information for " + payload.userName + " create user welcome email.")", + " try {", + " var managerResult = openidm.read(payload.manager._ref);", + " body.cc = managerResult.mail;", + " } catch (e) {", + " logger.info("Unable to read manager information for " + payload.userName + " create user welcome email. " + e.message)", + " }", + " }", + " openidm.action("external/email", "send", body);", + " }", + " catch (e) {", + " failureReason = "Creating user failed: Error during creation of user " + payload.userName + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + " ", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create User - rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": [ + "// This permission check script will check that the requester has proper privileges to", + "// create a user. If so, it will skip any approval process and directly move to create the new user.", + "", + "logger.info("Create User - Permission check");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var skipApproval = false;", + "", + "try {", + " // Read the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + " ", + " if(requester.id.startsWith('managed/user/')){", + " // If requester is a normal managed user, check that the user has permissions to create a user", + " var userId = requester.id.split('/');", + " var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': userId[2], 'scopePermission': 'createUser', '_queryFilter': \`id+eq+'\` + userId[2] + \`'\`})", + " if(user.result.length > 0){", + " skipApproval = true;", + " }", + " }", + " else{", + " // Tenant admins and system requests", + " skipApproval = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": [ + "logger.info("Create User - marking request as auto approved.");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to requester having create user privileges."", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/phhBasicApplicationGrant.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-5167870154a9": {}, + "exclusiveGateway-621c9996676a": {}, + "inclusiveGateway-2fbd3e7aa50c": {}, + "inclusiveGateway-7d248125a9bd": {}, + "inclusiveGateway-a71e67faaad1": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-14acc58c28dd": {}, + "scriptTask-3a74557440fb": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-744ef6a8b9a2": {}, + "scriptTask-c444d08a6099": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": [ + "logger.info("Running application grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var app = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check the user does not already have application granted", + "// Note: this is done at request submission time as well, the following is an example of how to check user's accounts", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.startDate", + ], + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "applicationId": request.common.applicationId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info("Create Removal Request failed to create request")", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestObj = null;", + "var appId = null;", + "var appGlossary = null;", + "var lob = null;", + "try {", + "requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "appId = requestObj.application.id;", + "}", + "catch (e) {", + "logger.info("Validation failed: Error reading application grant request with id " + requestId);", + "}", + "try {", + "appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {});", + "lob = appGlossary.lineOfBusiness || "default"", + "execution.setVariable("lob", lob);", + "}", + "catch (e) {", + "logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "lob == "sales"", + ], + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": [ + "lob == "finance"", + ], + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": [ + "lob == "hr"", + ], + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": [ + "lob == "default"", + ], + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-5167870154a9": {}, + "exclusiveGateway-621c9996676a": {}, + "inclusiveGateway-2fbd3e7aa50c": {}, + "inclusiveGateway-7d248125a9bd": {}, + "inclusiveGateway-a71e67faaad1": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-14acc58c28dd": {}, + "scriptTask-3a74557440fb": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-744ef6a8b9a2": {}, + "scriptTask-c444d08a6099": {}, + "scriptTask-c58309b8c470": {}, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": [ + "logger.info("Running application grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var app = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check the user does not already have application granted", + "// Note: this is done at request submission time as well, the following is an example of how to check user's accounts", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": request.common.applicationId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.startDate", + ], + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "applicationId": request.common.applicationId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.info("Create Removal Request failed to create request")", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestObj = null;", + "var appId = null;", + "var appGlossary = null;", + "var lob = null;", + "try {", + "requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "appId = requestObj.application.id;", + "}", + "catch (e) {", + "logger.info("Validation failed: Error reading application grant request with id " + requestId);", + "}", + "try {", + "appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {});", + "lob = appGlossary.lineOfBusiness || "default"", + "execution.setVariable("lob", lob);", + "}", + "catch (e) {", + "logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "lob == "sales"", + ], + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": [ + "lob == "finance"", + ], + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": [ + "lob == "hr"", + ], + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": [ + "lob == "default"", + ], + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/phhBirthrightRolesRequiringApproval.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "phh-birthright-roles-requiring-approval", + "displayName": "phh-birthright-roles-requiring-approval", + "id": "phhBirthrightRolesRequiringApproval", + "mutable": true, + "name": "phh-birthright-roles-requiring-approval", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-0e64ff0c1695", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-f4e7324654b5": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var approverId = '';", + "if (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id }", + "return [{", + ""id": "managed/user/" + approverId,", + ""permissions": {", + ""approve": true,", + ""reject": true,", + ""reassign": true,", + ""modify": true,", + ""comment": true", + "}", + "}];", + "})()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "scriptTask-0e64ff0c1695": {}, + "scriptTask-792e240778b1": {}, + "scriptTask-ad05a46c2e74": {}, + "scriptTask-aecf833994d2": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Debug Task", + "name": "scriptTask-0e64ff0c1695", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "approvalTask-f4e7324654b5", + }, + ], + "script": [ + "logger.info("Running user update event");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var context = null;", + "var skipApproval = false;", + "var userObj = null;", + "var userId = null;", + "// Read event user information from request object", + "try {", + "var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "logger.error("requestObj "+JSON.stringify(requestObj));", + "if (requestObj.request.common.context) {", + "context = requestObj.request.common.context.type;", + "if (context == 'admin') {", + "skipApproval = true;", + "}", + "}", + "userObj = requestObj.request.common.blob.after;", + "userId = userObj.userId;", + "}", + "catch (e) {", + "failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var approverId = '';", + "if (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id }", + "return [{", + ""id": "managed/user/" + approverId,", + ""permissions": {", + ""approve": true,", + ""reject": true,", + ""reassign": true,", + ""modify": true,", + ""comment": true", + "}", + "}];", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-792e240778b1", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-ad05a46c2e74", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-f4e7324654b5", + "type": "approvalTask", + }, + { + "displayName": "Look Up Roles and Request", + "name": "scriptTask-792e240778b1", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Running user update event");", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var userObj = null;", + "var userId = null;", + "//", + "// Read event user information from request object", + "try {", + "var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "userObj = requestObj.request.common.blob.after;", + "userId = userObj.userId;", + "}", + "catch (e) {", + "failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "///Get Roles from Role Variable", + "var roleNames = requestObj.request.common.blob.parameters.roleNames.split(',');", + "logger.error("UpdateRequest with roleNames: " + roleNames);", + "// Look up roles in catalog", + "var operand = [];", + "for (var index in roleNames) {", + "var role = roleNames[index];", + "var roleClean = role.trim();", + "operand.push({operator: "EQUALS", operand: { targetName: "role.name", targetValue: roleClean }})", + "}", + "var body = { targetFilter: {operator: "OR", operand: operand}};", + "var catalog = openidm.action("iga/governance/catalog/search", "POST", body);", + "var catalogResults = catalog.result;", + "// Define request catalogs key", + "var catalogBody = [];", + "for (var idx in catalogResults) {", + "var catalog = catalogResults[idx];", + "catalogBody.push({type: "role", id: catalog.id})", + "}", + "// Define request payload", + "var requestBody = {", + "priority: "low",", + "accessModifier: "add",", + "justification: "Request submitted on user update.",", + "users: [ userId ],", + "catalogs: catalogBody,", + "context: {", + "type: "NoAdmin"", + "}", + "};", + "// Create requests", + "try {", + "logger.error("DRLCREATING REQUST for "+JSON.stringify(body));", + "openidm.action("iga/governance/requests", "POST", requestBody, {_action: "create"})", + "}", + "catch (e) {", + "failureReason = "Unable to generate requests for roles";", + "}", + "// Update event request as final", + "var decision = failureReason ?", + "{'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true} :", + "{'status': 'complete', 'outcome': 'fulfilled', 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Finalize Request on Reject", + "name": "scriptTask-ad05a46c2e74", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-aecf833994d2", + }, + ], + "script": [ + "logger.info("Finalize Request:BirthRight Roles that need Approval");", + "var content = execution.getVariables();", + "var requestId = content.get('requestId');", + "var failureState = content.get('failureState');", + "if (!failureState) {", + "try {", + "// Update event request as final", + "var decision = {'status': 'complete', 'outcome': 'fulfilled', 'decision': 'rejected'}", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + "}", + "catch (e) {", + "execution.setVariable("failureState", "Unable to finalize request.");", + "}", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Failure Handler", + "name": "scriptTask-aecf833994d2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Failure Handler: BirthRight Roles that need Approval ");", + "var content = execution.getVariables();", + "var requestId = content.get('requestId');", + "var failureReason = content.get('failureReason');", + "// Update event request as final", + "if (failureReason) {", + "var decision = {'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true}", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/phhDelegatedUserDisableWorkflow.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "phh-delegated-user-disable-workflow", + "displayName": "phh-delegated-user-disable-workflow", + "id": "phhDelegatedUserDisableWorkflow", + "mutable": true, + "name": "phh-delegated-user-disable-workflow", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-3d854e98930e", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-bebe49db4dac": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-26e0a9262468": {}, + "exclusiveGateway-d5b7b2e2a80a": {}, + "scriptTask-38eb13f4deca": {}, + "scriptTask-3d854e98930e": {}, + "scriptTask-449aac6b18b8": {}, + "scriptTask-4f4b87291099": {}, + "scriptTask-8e24794e9be4": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegation Info", + "name": "scriptTask-3d854e98930e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-26e0a9262468", + }, + ], + "script": [ + "/*", + " * Load Delegation Information", + " * Populates available direct reports for the requester", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "console.log("=== Load Delegation Info Start ===");", + "console.log("Request ID: " + requestId);", + "", + "try {", + " // Get the request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requesterId = requestObj.requester.id;", + " var requesterIdOnly = requesterId.replace("managed/user/", "");", + " ", + " console.log("Requester ID: " + requesterIdOnly);", + " ", + " // Query users where current user is the manager", + " var queryParams = {", + " "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"',", + " "_fields": "userName,givenName,sn,_id"", + " };", + " ", + " var results = openidm.query("managed/alpha_user", queryParams);", + " ", + " // Build a formatted list for display", + " var directReportsList = "";", + " var directReportsCount = 0;", + " ", + " if (results.resultCount > 0) {", + " directReportsList = "You can act on behalf of the following users:\\n\\n";", + " results.result.forEach(function(user) {", + " directReportsList += "• " + user.userName + " (" + user.givenName + " " + user.sn + ")\\n";", + " });", + " directReportsCount = results.resultCount;", + " logger.info("Found " + directReportsCount + " direct reports");", + " } else {", + " directReportsList = "You do not have any direct reports in the system.\\n\\nYou cannot submit delegation requests without direct reports.";", + " logger.warn("No direct reports found");", + " }", + " ", + " // Store variables for later use", + " execution.setVariable("directReportsList", directReportsList);", + " execution.setVariable("directReportsCount", directReportsCount);", + " execution.setVariable("hasDelegationAuthority", directReportsCount > 0);", + " ", + " // Update the request to populate the helper field", + " // This updates the form display for the user", + " var updatePayload = {", + " "request": {", + " "common": {", + " "blob": {", + " "form": {", + " "availableDirectReports": directReportsList", + " }", + " }", + " }", + " }", + " };", + " ", + " openidm.patch('iga/governance/requests/' + requestId, null, [", + " {", + " "operation": "add",", + " "field": "/request/common/blob/form/availableDirectReports",", + " "value": directReportsList", + " }", + " ]);", + " ", + " console.log("Direct reports list populated in form");", + " ", + "} catch (e) {", + " logger.error("Error loading delegation info: " + e.message);", + " execution.setVariable("hasDelegationAuthority", false);", + " execution.setVariable("directReportsCount", 0);", + " execution.setVariable("directReportsList", "Error loading your direct reports. Please contact your administrator.");", + "}", + "", + "console.log("=== Load Delegation Info Complete ===");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auth Check", + "name": "exclusiveGateway-26e0a9262468", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "hasDelegationAuthority == true", + ], + "outcome": "validationSuccess", + "step": "scriptTask-8e24794e9be4", + }, + { + "condition": [ + "hasDelegationAuthority == false", + ], + "outcome": "validationFailure", + "step": "scriptTask-38eb13f4deca", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - No Authority", + "name": "scriptTask-38eb13f4deca", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Auto-Reject - No Delegation Authority", + " * Rejects request if user has no direct reports", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "console.log("Auto-rejecting request " + requestId + " - no delegation authority");", + "", + "try {", + " var decision = {", + " 'decision': 'rejected',", + " 'status': 'complete',", + " 'comment': 'Request automatically rejected: You do not have any direct reports in the system. You cannot submit delegation requests without having direct reports assigned to you.\\n\\nPlease contact your administrator if you believe this is an error.'", + " };", + " ", + " var updateParams = {", + " '_action': 'update'", + " };", + " ", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams);", + " ", + " console.log("Request " + requestId + " rejected successfully");", + " ", + "} catch (e) {", + " console.log("Error rejecting request: " + e.message);", + " throw e;", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validate Delegation Request", + "name": "scriptTask-8e24794e9be4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-d5b7b2e2a80a", + }, + ], + "script": [ + "/*", + " * Validate Delegation Request", + " * Validates all user inputs and delegation authority", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "console.log("=== Validation Start ===");", + "", + "var validationPassed = false;", + "var validationErrors = [];", + "var actingPrincipalObject = null;", + "var targetUserObject = null;", + "", + "try {", + " // Get request object with form data", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " ", + " var requesterId = requestObj.requester.id;", + " var requesterIdOnly = requesterId.replace("managed/user/", "");", + " ", + " // Extract form values", + " var actingPrincipalUsername = requestObj.request.common.blob.form.actingPrincipalId;", + " var targetUserUsername = requestObj.request.common.blob.form.targetUserId;", + " var justification = requestObj.request.common.blob.form.justification;", + " ", + " console.log("Acting Principal Username: " + actingPrincipalUsername);", + " console.log("Target User Username: " + targetUserUsername);", + " ", + " // Validate acting principal", + " if (!actingPrincipalUsername || actingPrincipalUsername.trim() === "") {", + " validationErrors.push("Acting Principal username is required");", + " } else {", + " try {", + " var actingPrincipalQuery = {", + " "_queryFilter": 'userName eq "' + actingPrincipalUsername.trim() + '"'", + " };", + " var actingPrincipalResults = openidm.query("managed/alpha_user", actingPrincipalQuery);", + " ", + " if (actingPrincipalResults.resultCount === 0) {", + " validationErrors.push("Acting Principal user not found: " + actingPrincipalUsername);", + " } else if (actingPrincipalResults.resultCount > 1) {", + " validationErrors.push("Multiple users found with username: " + actingPrincipalUsername);", + " } else {", + " actingPrincipalObject = actingPrincipalResults.result[0];", + " ", + " // Verify requester is manager of acting principal", + " if (!actingPrincipalObject.manager || !actingPrincipalObject.manager._id) {", + " validationErrors.push("Acting Principal does not have a manager assigned");", + " } else if (actingPrincipalObject.manager._id !== requesterIdOnly) {", + " validationErrors.push("You are not the manager of " + actingPrincipalUsername + ". You can only act on behalf of your direct reports.");", + " } else {", + " console.log("Acting Principal validated: " + actingPrincipalObject.userName);", + " }", + " }", + " } catch (e) {", + " validationErrors.push("Error validating Acting Principal: " + e.message);", + " }", + " }", + " ", + " // Validate target user", + " if (!targetUserUsername || targetUserUsername.trim() === "") {", + " validationErrors.push("Target User username is required");", + " } else {", + " try {", + " var targetUserQuery = {", + " "_queryFilter": 'userName eq "' + targetUserUsername.trim() + '"'", + " };", + " var targetUserResults = openidm.query("managed/alpha_user", targetUserQuery);", + " ", + " if (targetUserResults.resultCount === 0) {", + " validationErrors.push("Target User not found: " + targetUserUsername);", + " } else if (targetUserResults.resultCount > 1) {", + " validationErrors.push("Multiple users found with username: " + targetUserUsername);", + " } else {", + " targetUserObject = targetUserResults.result[0];", + " ", + " // Verify user type is External", + " if (targetUserObject.userType !== "External") {", + " validationErrors.push("Target User must be of type 'External'. User " + targetUserUsername + " is type: " + (targetUserObject.userType || "Unknown"));", + " } else {", + " console.log("Target User validated: " + targetUserObject.userName);", + " }", + " }", + " } catch (e) {", + " validationErrors.push("Error validating Target User: " + e.message);", + " }", + " }", + " ", + " // Validate justification", + " if (!justification || justification.trim() === "") {", + " validationErrors.push("Justification is required");", + " } else if (justification.trim().length < 10) {", + " validationErrors.push("Justification must be at least 10 characters");", + " }", + " ", + " // Prevent self-disable via delegation", + " if (actingPrincipalObject && targetUserObject && actingPrincipalObject._id === targetUserObject._id) {", + " validationErrors.push("Cannot disable the same user you are acting on behalf of");", + " }", + " ", + " // Check if all validations passed", + " if (validationErrors.length === 0) {", + " validationPassed = true;", + " ", + " // Store user details for display in approval", + " execution.setVariable("actingPrincipalUserName", actingPrincipalObject.userName);", + " execution.setVariable("actingPrincipalFullName", actingPrincipalObject.givenName + " " + actingPrincipalObject.sn);", + " execution.setVariable("actingPrincipalId", actingPrincipalObject._id);", + " ", + " execution.setVariable("targetUserUserName", targetUserObject.userName);", + " execution.setVariable("targetUserFullName", targetUserObject.givenName + " " + targetUserObject.sn);", + " execution.setVariable("targetUserId", targetUserObject._id);", + " ", + " execution.setVariable("justification", justification);", + " ", + " console.log("All validations passed");", + " } else {", + " console.log("Validation failed: " + validationErrors.join("; "));", + " }", + " ", + "} catch (e) {", + " validationPassed = false;", + " validationErrors.push("System error during validation: " + e.message);", + " console.log("Validation exception: " + e.message);", + "}", + "", + "// Set workflow variables", + "execution.setVariable("validationPassed", validationPassed);", + "execution.setVariable("validationErrors", validationErrors.join("\\n"));", + "", + "console.log("=== Validation Complete: " + (validationPassed ? "PASSED" : "FAILED") + " ===");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Passed?", + "name": "exclusiveGateway-d5b7b2e2a80a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "validationPassed == true", + ], + "outcome": "validationSuccess", + "step": "approvalTask-bebe49db4dac", + }, + { + "condition": [ + "validationPassed == false", + ], + "outcome": "validationFailure", + "step": "scriptTask-449aac6b18b8", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - Validation Failed", + "name": "scriptTask-449aac6b18b8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Auto-Reject - Validation Failed", + " * Rejects request with detailed error messages", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "var validationErrors = content.get('validationErrors') || "Validation failed";", + "", + "console.log("Auto-rejecting request due to validation errors");", + "", + "try {", + " var decision = {", + " 'decision': 'rejected',", + " 'status': 'complete',", + " 'comment': 'Request automatically rejected due to validation errors:\\n\\n' + validationErrors + '\\n\\nPlease correct the errors and submit a new request.'", + " };", + " ", + " var updateParams = {", + " '_action': 'update'", + " };", + " ", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams);", + " ", + " console.log("Request " + requestId + " rejected - validation failed");", + " ", + "} catch (e) {", + " console.log("Error rejecting request: " + e.message);", + " throw e;", + "}", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "doNothing", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-4f4b87291099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-bebe49db4dac", + "type": "approvalTask", + }, + { + "displayName": "Disable User Account", + "name": "scriptTask-4f4b87291099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Fulfillment - Disable User Account", + " * Disables the target user's account", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "var targetUserId = content.get('targetUserId');", + "var justification = content.get('justification');", + "var actingPrincipalUserName = content.get('actingPrincipalUserName');", + "", + "console.log("=== Fulfillment Start ===");", + "console.log("Disabling user ID: " + targetUserId);", + "", + "try {", + " // Read current user state", + " var targetUser = openidm.read("managed/alpha_user/" + targetUserId);", + " ", + " if (!targetUser) {", + " throw new Error("Target user not found: " + targetUserId);", + " }", + " ", + " console.log("Current user status: " + (targetUser.accountStatus || "active"));", + " ", + " // Prepare patch operations to disable the account", + " var patchOperations = [", + " {", + " "operation": "replace",", + " "field": "/accountStatus",", + " "value": "inactive"", + " }", + " ];", + " ", + " // Add a description/note about the disable action", + " if (targetUser.description) {", + " patchOperations.push({", + " "operation": "replace",", + " "field": "/description",", + " "value": targetUser.description + "\\n[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification", + " });", + " } else {", + " patchOperations.push({", + " "operation": "add",", + " "field": "/description",", + " "value": "[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification", + " });", + " }", + " ", + " // Execute the patch", + " var updateResult = openidm.patch("managed/alpha_user/" + targetUserId, null, patchOperations);", + " ", + " console.log("User " + targetUser.userName + " successfully disabled");", + " console.log("Account status set to: inactive");", + " ", + " // Set success variables", + " execution.setVariable("fulfillmentStatus", "completed");", + " execution.setVariable("fulfillmentMessage", "User account " + targetUser.userName + " has been successfully disabled");", + " ", + " // Update request with completion details", + " try {", + " var requestUpdate = {", + " 'status': 'complete',", + " 'decision': 'approved'", + " };", + " ", + " openidm.action('iga/governance/requests/' + requestId, 'POST', requestUpdate, {'_action': 'update'});", + " } catch (updateError) {", + " console.log("Could not update request status: " + updateError.message);", + " }", + " ", + "} catch (e) {", + " logger.error("Fulfillment error: " + e.message);", + " execution.setVariable("fulfillmentStatus", "failed");", + " execution.setVariable("fulfillmentMessage", "Error disabling user: " + e.message);", + " ", + " // Don't throw - let workflow complete but mark as failed", + " // You might want to send a notification here", + "}", + "", + "console.log("=== Fulfillment Complete ===");", + ], + }, + "type": "scriptTask", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/phhInternalRoleEntitlementGrant.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "phh-InternalRoleEntitlementGrant", + "displayName": "phh-InternalRoleEntitlementGrant", + "id": "phhInternalRoleEntitlementGrant", + "mutable": true, + "name": "phh-InternalRoleEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-67a954f33919": {}, + "inclusiveGateway-3f85f36eeeef": {}, + "inclusiveGateway-f105ed2b352d": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-91769554db51": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e04f42607ba5": {}, + "scriptTask-e21178ab80f7": {}, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running entitlement grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var assignmentId = null;", + "var app = null;", + "var assignment = null;", + "var existingAccount = false;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check entitlement exists", + "if (!failureReason) {", + " try {", + " assignment = openidm.read('managed/alpha_assignment/' + assignmentId);", + " if (!assignment) {", + " failureReason = "Validation failed: Cannot find assignment with id " + assignmentId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 3 - Check the user has application granted", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " existingAccount = true;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 4 - If account does not exist, provision it", + "if (!failureReason) {", + " if (!existingAccount) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": applicationId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + message;", + " }", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d", + }, + ], + "script": [ + "logger.info("Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "auditContext": {},", + " "grantType": "request",", + " "requestId": requestObj.id,", + " };", + " var queryParams = {", + " "_action": "add",", + " "initiatingUser": requestObj.requester.id", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " var err = e.javaException; ", + " err = JSON.parse(err.detail);", + " var message = err && err.body ? err.body.response : e.message;", + " failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " execution.setVariable('enableEndWait', false);", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-3f85f36eeeef", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval){", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-3f85f36eeeef", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableWait == true", + ], + "outcome": "hasStartDate", + "step": "waitTask-0d53639996da", + }, + { + "condition": [ + "enableWait == false", + ], + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0d53639996da", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-f105ed2b352d", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "enableEndWait == true", + ], + "outcome": "hasEndDate", + "step": "scriptTask-91769554db51", + }, + { + "condition": [ + "enableEndWait == false", + ], + "outcome": "noEndDate", + "step": null, + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-91769554db51", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Create Removal Request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Create Removal Request failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason){", + " try{", + " var request = requestObj.request;", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "entitlementId": request.common.entitlementId,", + " "userId": request.common.userId,", + " "endDate": request.common.endDate,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " var queryParam = {", + " '_action': "publish"", + " }", + " openidm.action('iga/governance/requests/entitlementRemove', 'POST', newRequestPayload, queryParam)", + " }catch(e){", + " logger.warn('Create Removal Request failed to create')", + " }", + " }", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/phhNeDisable.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "phh-ne-disable", + "displayName": "phh-ne-disable", + "id": "phhNeDisable", + "mutable": true, + "name": "phh-ne-disable", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-99fdf317c49b", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "scriptTask-99fdf317c49b": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegate Sources", + "name": "scriptTask-99fdf317c49b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "/*", + " * Load Delegate Sources", + " * Queries users the current requester can act on behalf of", + " */", + "", + "var content = execution.getVariables();", + "var requestId = content.get('_id');", + "", + "try {", + " // Get the request to find requester", + " var requestObj = openidm.read('iga/governance/requests/' + requestId);", + " var requesterId = requestObj.requester.id;", + " var requesterIdOnly = requesterId.replace("managed/user/", "");", + " ", + " console.log("=== Loading Delegation Options ===");", + " console.log("Requester ID: " + requesterIdOnly);", + " ", + " // Query users where current user is the manager", + " var queryParams = {", + " "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"',", + " "_fields": "userName,givenName,sn,mail,_id"", + " };", + " ", + " var results = openidm.query("managed/alpha_user", queryParams);", + " console.log("Results: " + results);", + " ", + " // Build options array", + " var options = [];", + " ", + " if (results.resultCount > 0) {", + " results.result.forEach(function(user) {", + " options.push({", + " "value": user._id,", + " "label": user.givenName + " " + user.sn + " (" + user.userName + ")"", + " });", + " });", + " ", + " logger.info("Found " + options.length + " delegation options");", + " } else {", + " logger.warn("No direct reports found for requester");", + " options.push({", + " "value": "",", + " "label": "No direct reports found"", + " });", + " }", + " ", + " // Store options as JSON string", + " execution.setVariable("delegationOptions", JSON.stringify(options));", + " execution.setVariable("hasDelegationOptions", results.resultCount > 0);", + " execution.setVariable("delegationOptionsCount", results.resultCount);", + " ", + "} catch (e) {", + " logger.error("Error loading delegation options: " + e.message);", + " execution.setVariable("delegationOptions", "[]");", + " execution.setVariable("hasDelegationOptions", false);", + " execution.setVariable("delegationOptionsCount", 0);", + "}", + "", + "logger.info("=== Delegation Options Loaded ===");", + ], + }, + "type": "scriptTask", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/phhNewUserCreate.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-621c9996676a": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-c58309b8c470": {}, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("[phh] Creating User");", + "function generateUsername(givenName, surname) {", + "const usernamePrefix = (givenName[0] + surname[0]).toLowerCase();", + "const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]);", + "const usernames = data.result.map(user => user.userName);", + "let i = 1;", + "while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) {", + "i++;", + "}", + "return usernamePrefix + String(i).padStart(5, '0');", + "}", + "function createUser(custom) {", + "var startDate = new Date(custom.startDate).toISOString();", + "var endDate = new Date(custom.endDate).toISOString();", + "var payload = {", + ""userName": custom.userName,", + ""givenName": custom.givenName,", + ""sn": custom.sn,", + ""mail": custom.mail,", + ""password": custom.password,", + ""frIndexedDate5":startDate,", + ""frIndexedDate4":endDate", + "};", + "return openidm.create('managed/alpha_user', null, payload);", + "}", + "function process(requestObj) {", + "var custom = requestObj.request.custom", + "custom.userName = generateUsername(custom.givenName, custom.sn);", + "custom.password = 'Password!234';", + "const result = createUser(custom);", + "return { outcome: "provisioned" };", + "}", + "try {", + "const requestId = execution.getVariables().get("id");", + "const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {});", + "let decision = { status: "complete", "decision": "approved" };", + "try {", + "const result = process(requestObj);", + "Object.assign(decision, result);", + "} catch (error) {", + "Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true });", + "}", + "openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"});", + "} catch (e) {", + "logger.error(\`Error reading request \${requestId}: \${e}\`);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-621c9996676a": {}, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-626899b6e99a": {}, + "scriptTask-c58309b8c470": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("[phh] Creating User");", + "function generateUsername(givenName, surname) {", + "const usernamePrefix = (givenName[0] + surname[0]).toLowerCase();", + "const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]);", + "const usernames = data.result.map(user => user.userName);", + "let i = 1;", + "while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) {", + "i++;", + "}", + "return usernamePrefix + String(i).padStart(5, '0');", + "}", + "function createUser(custom) {", + "var startDate = new Date(custom.startDate).toISOString();", + "var endDate = new Date(custom.endDate).toISOString();", + "var payload = {", + ""userName": custom.userName,", + ""givenName": custom.givenName,", + ""sn": custom.sn,", + ""mail": custom.mail,", + ""password": custom.password,", + ""frIndexedDate5":startDate,", + ""frIndexedDate4":endDate", + "};", + "return openidm.create('managed/alpha_user', null, payload);", + "}", + "function process(requestObj) {", + "var custom = requestObj.request.custom", + "custom.userName = generateUsername(custom.givenName, custom.sn);", + "custom.password = 'Password!234';", + "const result = createUser(custom);", + "return { outcome: "provisioned" };", + "}", + "try {", + "const requestId = execution.getVariables().get("id");", + "const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {});", + "let decision = { status: "complete", "decision": "approved" };", + "try {", + "const result = process(requestObj);", + "Object.assign(decision, result);", + "} catch (error) {", + "Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true });", + "}", + "openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"});", + "} catch (e) {", + "logger.error(\`Error reading request \${requestId}: \${e}\`);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "// Complete request as rejected", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "try {", + " // Read request object", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + " if (requestObj.request.common.startDate){", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate){", + " enableEndWait = true;", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed " + e.message);", + "}", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var skipApproval = content.get('skipApproval');", + "var queryParams = {", + " "_action": "update"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if (skipApproval) {", + " decision.comment = "Request auto-approved due to request context: " + context;", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = { 'comment': failureReason, 'failure': true };", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/testWorkflow1.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/testWorkflow4.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/testWorkflow5.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_5", + "displayName": "test_workflow_5", + "id": "testWorkflow5", + "mutable": true, + "name": "test_workflow_5", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/testWorkflow6.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_6", + "displayName": "test_workflow_6", + "id": "testWorkflow6", + "mutable": true, + "name": "test_workflow_6", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/testWorkflow7.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/testWorkflow8.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "content.customExpirationDuration", + ], + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is a validation success", + "outcome == true", + ], + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": [ + "// This is a validation failure", + "outcome == false", + ], + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "// This is outcome 1", + "outcome === 1", + ], + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 2", + "outcome === 2", + ], + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": [ + "// This is outcome 3", + "outcome === 3", + ], + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": [ + "/**", + "Define custom script which returns an array of actors in the following format", + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " return [{", + " id: "managed/user/" + requestIndex.applicationOwner[0].id,", + " permissions: {", + " approve: true,", + " reject: true,", + " reassign: true,", + " modify: true,", + " comment: true", + " }", + " }];", + "})()", + "**/", + "(", + "function(){", + " return [];", + "}", + ")()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + ], + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": [ + "// This is the bcc script", + ""bcc@email.com";", + ], + }, + "cc": { + "isExpression": true, + "value": [ + "// This is the cc script", + ""cc@email.com";", + ], + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": [ + "// This is the to script", + ""to@email.com";", + ], + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.manager.id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": [ + "(function() {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " var approver = null;", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " approver = "managed/user/" + requestIndex.roleOwner[0].id;", + " } else if (systemSettings && systemSettings.defaultApprover) {", + " approver = systemSettings.defaultApprover;", + " }", + " return approver;", + "})()", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.startDate", + ], + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "content.get('resumeDate')", + ], + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays: testWorkflowExportDir4/wfEntitlementExampleIsPrivileged.workflow.json 1`] = ` +{ + "meta": Any, + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "wfEntitlementExampleIsPrivileged", + "displayName": "wfEntitlementExampleIsPrivileged", + "id": "wfEntitlementExampleIsPrivileged", + "mutable": true, + "name": "wfEntitlementExampleIsPrivileged", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-63163dc11c1f": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "type": "entitlementOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "approvalTask-77691047b28d": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.user.manager._refResourceId", + ], + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-67a954f33919": {}, + "inclusiveGateway-bcb05a148971": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-5106f7a29d86": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-e04f42607ba5": {}, + "scriptTask-e21178ab80f7": {}, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info("Running entitlement grant request validation");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var applicationId = null;", + "var assignmentId = null;", + "var app = null;", + "var assignment = null;", + "var existingAccount = false;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason = "Validation failed: Error reading request with id " + requestId;", + "}", + "", + "// Validation 1 - Check application exists", + "if (!failureReason) {", + " try {", + " app = openidm.read('managed/alpha_application/' + applicationId);", + " if (!app) {", + " failureReason = "Validation failed: Cannot find application with id " + applicationId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 2 - Check entitlement exists", + "if (!failureReason) {", + " try {", + " assignment = openidm.read('managed/alpha_assignment/' + assignmentId);", + " if (!assignment) {", + " failureReason = "Validation failed: Cannot find assignment with id " + assignmentId;", + " }", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 3 - Check the user has application granted", + "if (!failureReason) {", + " try {", + " var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);", + " user.effectiveApplications.forEach(effectiveApp => {", + " if (effectiveApp._id === applicationId) {", + " existingAccount = true;", + " }", + " })", + " }", + " catch (e) {", + " failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message;", + " }", + "}", + "", + "// Validation 4 - If account does not exist, provision it", + "if (!failureReason) {", + " if (!existingAccount) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "applicationId": applicationId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " logger.info("Creating account: " + payload);", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + e.message;", + " }", + " }", + "}", + "", + "if (failureReason) {", + " logger.info("Validation failed: " + failureReason);", + "}", + "execution.setVariable("failureReason", failureReason); ", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "", + "var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Auto-Provisioning");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info("requestObj: " + requestObj);", + "}", + "catch (e) {", + " failureReason = "Provisioning failed: Error reading request with id " + requestId;", + "}", + "", + "if(!failureReason) {", + " try {", + " var request = requestObj.request;", + " var payload = {", + " "entitlementId": request.common.entitlementId,", + " "startDate": request.common.startDate,", + " "endDate": request.common.endDate,", + " "auditContext": {},", + " "grantType": "request"", + " };", + " var queryParams = {", + " "_action": "add"", + " }", + "", + " var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);", + " }", + " catch (e) {", + " failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + e.message;", + " }", + " ", + " var decision = {'status': 'complete', 'decision': 'approved'};", + " if (failureReason) {", + " decision.outcome = 'not provisioned';", + " decision.comment = failureReason;", + " decision.failure = true;", + " }", + " else {", + " decision.outcome = 'provisioned';", + " }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("Request " + requestId + " completed.");", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Rejecting request");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "logger.info("Execution Content: " + content);", + "var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "var skipApproval = false;", + "var lineItemId = false;", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " lineItemId = requestObj.request.common.context.lineItemId;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed "+e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + "execution.setVariable("lineItemId", lineItemId);", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "/*", + "Script nodes are used to invoke APIs or execute business logic.", + "You can invoke governance APIs or IDM APIs.", + "See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.", + "", + "Script nodes should return a single value and should have the", + "logic enclosed in a try-catch block.", + "", + "Example:", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " applicationId = requestObj.application.id;", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId;", + "}", + "*/", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = content.get('context');", + "var lineItemId = content.get('lineItemId');", + "var queryParams = {", + " "_action": "update"", + "}", + "var lineItemParams = {", + " "_action": "updateRemediationStatus"", + "}", + "try {", + " var decision = {", + " "decision": "approved",", + " "comment": "Request auto-approved due to request context: " + context", + " }", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " var failureReason = "Failure updating decision on request. Error message: " + e.message;", + " var update = {'comment': failureReason, 'failure': true};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);", + " ", + "", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-63163dc11c1f", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Privileged", + "name": "scriptTask-5106f7a29d86", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-bcb05a148971", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var requestObj = null;", + "var entId = null;", + "var entGlossary = null;", + "var entPriv = null;", + "", + "//Check entitlement exists and grab entitlement info", + "try {", + " requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " entId = requestObj.assignment.id;", + "}", + "catch (e) {", + " logger.info("Validation failed: Error reading entitlement grant request with id " + requestId);", + "}", + "//Check glossary for entitlement exists and grab glossary info", + "try {", + " entGlossary = openidm.action('iga/governance/resource/' + entId + '/glossary', 'GET', {}, {});", + " // Sets entPriv based on the glossary contents, if present, otherwise defaults to true", + " entPriv = (entGlossary.hasOwnProperty("isPrivileged")) ? entGlossary.isPrivileged : true;", + " //Sets entPriv based on glossary contents, if present, otherwise defaults to false", + " //entPriv = !!entGlossary.isPrivileged;", + " execution.setVariable("entPriv", entPriv);", + "}", + "catch (e) {", + " logger.info("Could not retrieve glossary with entId " + entId + " from entitlement grant request ID " + requestId);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Inclusive Gateway", + "name": "inclusiveGateway-bcb05a148971", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": [ + "entPriv == true", + ], + "outcome": "Privileged", + "step": "approvalTask-77691047b28d", + }, + { + "condition": [ + "entPriv == false", + ], + "outcome": "NotPrivileged", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": [ + "logger.info("This is inclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.user.manager._refResourceId", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-3eab1948f1ec", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-77691047b28d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": [ + ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + ], + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-5106f7a29d86", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-63163dc11c1f", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --no-metadata -a --directory testWorkflowExportDir2": should export all workflows with no metadata 1`] = `0`; + +exports[`frodo iga workflow export "frodo iga workflow export --no-metadata -a --directory testWorkflowExportDir2": should export all workflows with no metadata 2`] = `""`; + +exports[`frodo iga workflow export "frodo iga workflow export --no-metadata -a --directory testWorkflowExportDir2": should export all workflows with no metadata 3`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✔ Exported 15 workflows +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export --no-metadata -a --directory testWorkflowExportDir2": should export all workflows with no metadata: testWorkflowExportDir2/allWorkflows.workflow.json 1`] = ` +{ + "emailTemplate": { + "FrodoTestEmailTemplate1": { + "_id": "emailTemplate/FrodoTestEmailTemplate1", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template One", + "enabled": true, + "from": "", + "message": { + "en": "

Click to reset your password

Password reset link

", + "fr": "

Cliquez pour réinitialiser votre mot de passe

Mot de passe lien de réinitialisation

", + }, + "mimeType": "text/html", + "subject": { + "en": "Reset your password", + "fr": "Réinitialisez votre mot de passe", + }, + }, + "FrodoTestEmailTemplate2": { + "_id": "emailTemplate/FrodoTestEmailTemplate2", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template Two", + "enabled": true, + "from": "", + "message": { + "en": "

This is your one-time password:

{{object.description}}

", + }, + "mimeType": "text/html", + "subject": { + "en": "One-Time Password for login", + }, + }, + "FrodoTestEmailTemplate3": { + "_id": "emailTemplate/FrodoTestEmailTemplate3", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template Three", + "enabled": true, + "from": "", + "message": { + "en": "

You started a login or profile update that requires MFA.

Click to Proceed

", + }, + "mimeType": "text/html", + "subject": { + "en": "Multi-Factor Email for Identity Cloud login", + }, + }, + "frodoTestEmailTemplateFour": { + "_id": "emailTemplate/frodoTestEmailTemplateFour", + "defaultLocale": "en", + "description": "Frodo email template four", + "displayName": "Frodo Test Email Template Four", + "enabled": true, + "from": ""From" ", + "html": { + "en": "

alt text

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

", + }, + "message": { + "en": "

alt text

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

", + }, + "mimeType": "text/html", + "styles": "body { + background-color: #324054; + color: #455469; + padding: 60px; + text-align: center +} + a { + text-decoration: none; + color: #109cf1; +} + .content { + background-color: #fff; + border-radius: 4px; + margin: 0 auto; + padding: 48px; + width: 235px +} +", + "subject": { + "en": "Subject", + }, + "templateId": "frodoTestEmailTemplateFour", + }, + "requestAssigned": { + "_id": "emailTemplate/requestAssigned", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
.
", + }, + "message": { + "en": ">A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.", + }, + "mimeType": "text/html", + "styles": "body { + background-color: #324054; + color: #455469; + padding: 60px; + text-align: center +} + +a { + text-decoration: none; + color: #109cf1; +} + +.content { + background-color: #fff; + border-radius: 4px; + margin: 0 auto; + padding: 48px; + width: 235px +} +", + "subject": { + "en": "ATTENTION: Request Assigned", + }, + }, + "requestEscalated": { + "_id": "emailTemplate/requestEscalated", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A request approval has been escalated to your attention.
", + }, + "message": { + "en": "A request approval has been escalated to your attention.", + }, + "mimeType": "text/html", + "styles": "body { + background-color: #324054; + color: #455469; + padding: 60px; + text-align: center +} + +a { + text-decoration: none; + color: #109cf1; +} + +.content { + background-color: #fff; + border-radius: 4px; + margin: 0 auto; + padding: 48px; + width: 235px +} +", + "subject": { + "en": "ATTENTION: Request Escalation", + }, + }, + "requestExpired": { + "_id": "emailTemplate/requestExpired", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A request approval assigned to you has expired.
", + }, + "message": { + "en": " A request approval assigned to you has expired.", + }, + "mimeType": "text/html", + "styles": "body { + background-color: #324054; + color: #455469; + padding: 60px; + text-align: center +} + +a { + text-decoration: none; + color: #109cf1; +} + +.content { + background-color: #fff; + border-radius: 4px; + margin: 0 auto; + padding: 48px; + width: 235px +} +", + "subject": { + "en": "ATTENTION: Expiration of Request", + }, + }, + "requestReassigned": { + "_id": "emailTemplate/requestReassigned", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
", + }, + "message": { + "en": "A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.", + }, + "mimeType": "text/html", + "styles": "body { + background-color: #324054; + color: #455469; + padding: 60px; + text-align: center +} + +a { + text-decoration: none; + color: #109cf1; +} + +.content { + background-color: #fff; + border-radius: 4px; + margin: 0 auto; + padding: 48px; + width: 235px +} +", + "subject": { + "en": "ATTENTION: Request Reassigned", + }, + }, + "requestReminder": { + "_id": "emailTemplate/requestReminder", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A request approval assigned to you is awaiting your action.
", + }, + "message": { + "en": "A request approval assigned to you is awaiting your action.", + }, + "mimeType": "text/html", + "styles": "body { + background-color: #324054; + color: #455469; + padding: 60px; + text-align: center +} + +a { + text-decoration: none; + color: #109cf1; +} + +.content { + background-color: #fff; + border-radius: 4px; + margin: 0 auto; + padding: 48px; + width: 235px +} +", + "subject": { + "en": "ATTENTION: Reminder to complete Request", + }, + }, + }, + "event": { + "2a441af0-d057-46a1-996b-1f3ff2725122": { + "action": { + "name": "testWorkflow1", + "parameters": { + "var1": "val1", + "var2": "val2", + "var3": "val3", + }, + "type": "orchestration", + }, + "condition": { + "filter": { + "or": [ + { + "contains": { + "in_string": "user.before.city", + "search_string": { + "literal": "a", + }, + }, + }, + { + "not_contains": { + "in_string": "user.after.city", + "search_string": { + "literal": "b", + }, + }, + }, + { + "equals": { + "left": "user.before.city", + "right": { + "literal": "c", + }, + }, + }, + { + "not_equals": { + "left": "user.after.city", + "right": { + "literal": "d", + }, + }, + }, + { + "starts_with": { + "prefix": { + "literal": "e", + }, + "value": "user.before.city", + }, + }, + { + "ends_with": { + "suffix": { + "literal": "f", + }, + "value": "user.after.city", + }, + }, + { + "not_equals": { + "left": "user.before.city", + "right": "user.after.city", + }, + }, + { + "equals": { + "left": "user.before.city", + "right": "user.after.city", + }, + }, + { + "and": [ + { + "gte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 1, + }, + }, + }, + { + "gt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 2, + }, + }, + }, + { + "lte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 3, + }, + }, + }, + { + "lt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 4, + }, + }, + }, + ], + }, + ], + }, + "version": "v2", + }, + "description": "Test event description", + "entityType": "user", + "id": "2a441af0-d057-46a1-996b-1f3ff2725122", + "metadata": { + "createdDate": "2026-03-04T22:40:13.818750214Z", + }, + "mutationType": "create", + "name": "test_workflow_event_1", + "owners": [ + { + "givenName": "Preston", + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "mail": "test@test.com", + "sn": "Test", + "userName": "PrestonIGATestUser", + }, + ], + "status": "active", + }, + "4bfdbe77-794a-4eb2-85ef-320a327d44ff": { + "action": { + "name": "testWorkflow4", + "parameters": { + "var1": "val1", + "var2": "val2", + "var3": "val3", + }, + "type": "orchestration", + }, + "condition": { + "filter": { + "or": [ + { + "contains": { + "in_string": "user.before.city", + "search_string": { + "literal": "a", + }, + }, + }, + { + "not_contains": { + "in_string": "user.after.city", + "search_string": { + "literal": "b", + }, + }, + }, + { + "equals": { + "left": "user.before.city", + "right": { + "literal": "c", + }, + }, + }, + { + "not_equals": { + "left": "user.after.city", + "right": { + "literal": "d", + }, + }, + }, + { + "starts_with": { + "prefix": { + "literal": "e", + }, + "value": "user.before.city", + }, + }, + { + "ends_with": { + "suffix": { + "literal": "f", + }, + "value": "user.after.city", + }, + }, + { + "not_equals": { + "left": "user.before.city", + "right": "user.after.city", + }, + }, + { + "equals": { + "left": "user.before.city", + "right": "user.after.city", + }, + }, + { + "and": [ + { + "gte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 1, + }, + }, + }, + { + "gt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 2, + }, + }, + }, + { + "lte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 3, + }, + }, + }, + { + "lt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 4, + }, + }, + }, + ], + }, + ], + }, + "version": "v2", + }, + "description": "Test event description", + "entityType": "user", + "id": "4bfdbe77-794a-4eb2-85ef-320a327d44ff", + "metadata": { + "createdDate": "2026-03-04T22:40:15.973316857Z", + }, + "mutationType": "create", + "name": "test_workflow_event_3", + "owners": [ + { + "givenName": "Preston", + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "mail": "test@test.com", + "sn": "Test", + "userName": "PrestonIGATestUser", + }, + ], + "status": "active", + }, + "c87b0605-03f6-4372-9ba6-e0f43e0b3bcf": { + "action": { + "name": "phhBirthrightRolesRequiringApproval", + "parameters": { + "roleNames": "phh-role-other-risk", + }, + "type": "orchestration", + }, + "condition": { + "filter": { + "and": [ + { + "not_contains": { + "in_string": "user.before.description", + "search_string": { + "literal": "teacher", + }, + }, + }, + { + "contains": { + "in_string": "user.after.description", + "search_string": { + "literal": "teacher", + }, + }, + }, + ], + }, + "version": "v2", + }, + "description": "Teacher birthright role approval", + "entityType": "user", + "id": "c87b0605-03f6-4372-9ba6-e0f43e0b3bcf", + "metadata": { + "createdDate": "2025-12-19T23:33:09.589539476Z", + }, + "mutationType": "update", + "name": "phh-teacher-birthright-role-approval", + "owners": [ + { + "givenName": "Parent", + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "mail": "pholderness+poadmin@trivir.com", + "sn": "Admin", + "userName": "phh-parent-org-admin", + }, + ], + "status": "active", + }, + }, + "requestForm": { + "9c10b680-a790-4f73-95ed-81b345f0f3e9": { + "assignments": [ + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-23T23:37:29.474219019Z", + }, + "objectId": "workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac", + }, + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-24T00:52:45.670896494Z", + }, + "objectId": "requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "Form for disabling users with delegation authority", + "form": { + "events": {}, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "description": "Enter the username of individual you are performing the operation for", + "id": "988aad8c-9ef4-4a83-8717-960931b89695", + "label": "Acting on behalf of", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "actingPrincipalId", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "ef298ed6-7f50-456a-9473-934eee627b36", + }, + { + "fields": [ + { + "customSlot": false, + "description": "These are those you can act on behalf of.", + "id": "4b64f437-f304-434a-9cb7-20227549b778", + "label": "Your direct reports", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "availableDirectReports", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "8587be1b-8a68-4a9a-bbfb-26dc47911897", + }, + { + "fields": [ + { + "customSlot": false, + "description": "User to be disabled", + "id": "13c44f83-9f4e-4da1-83ce-60137f25bcd9", + "label": "Target User to Disable", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "targetUserId", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "b24286b5-07ba-420f-9238-667035368e93", + }, + { + "fields": [ + { + "customSlot": false, + "description": "Why is this user being disabled?", + "id": "0ccdeb3c-5df7-45df-95ef-5ed10be592c6", + "label": "Justification", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "justification", + "onChangeEvent": {}, + "readOnly": false, + "type": "textarea", + "validation": { + "required": true, + }, + }, + ], + "id": "915f0cd0-27e1-4d3d-bf55-bf3c1a7697e0", + }, + { + "fields": [ + { + "customSlot": false, + "description": "You are about to submit this using delegated authority...", + "id": "f5b98b5c-1f2b-4609-bcb1-2eb5d6d02953", + "label": "Important", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "confirmationMessage", + "onChangeEvent": {}, + "readOnly": true, + "type": "textarea", + "validation": { + "required": true, + }, + }, + ], + "id": "7ab82555-de43-4840-adbb-f2ea959b6d9e", + }, + ], + }, + "id": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-23T23:07:42.347733285Z", + }, + "name": "phh-delegated-user-disable-form", + "type": "request", + }, + "9e3fc668-4e96-4b03-9605-38b830bea26c": { + "assignments": [ + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:09.860613713Z", + }, + "objectId": "requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc", + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:10.907366203Z", + }, + "objectId": "workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915", + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:11.933983845Z", + }, + "objectId": "workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "This is a test request form", + "form": {}, + "id": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:08.831569376Z", + }, + "name": "test_workflow_request_form_2", + "type": "request", + }, + "c385b530-b912-4dcd-98c8-931673add9b7": { + "assignments": [ + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2026-01-30T18:27:54.68190238Z", + }, + "objectId": "requestType/8d0055b3-155f-4885-a415-4f1c536098e8", + }, + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2025-12-15T17:42:41.495353249Z", + }, + "objectId": "workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "Request new user", + "form": { + "events": { + "onLoad": { + "script": "form.hideField('custom.positionOther'); +form.setValue('custom.positionOther', '');", + "type": "script", + }, + }, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "description": "First Name", + "id": "a221cdbe-3e28-4d98-91b5-4f99bca8ccf6", + "label": "Given Name", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "custom.givenName", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "d3488e29-dde5-4406-873f-3e99ee818508", + }, + { + "fields": [ + { + "customSlot": false, + "description": "Last Name", + "id": "8e398b29-4229-4fec-a37c-d95a91928864", + "label": "Surname", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "custom.sn", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "regex": {}, + "required": true, + }, + }, + ], + "id": "312caf93-1aa9-4659-b076-cef7a6fc9f39", + }, + { + "fields": [ + { + "customSlot": false, + "description": "Email address", + "id": "02cf58e1-d05b-4b24-84e2-073b56fe033f", + "label": "Personal eMail", + "layout": { + "columns": 6, + "offset": 0, + }, + "model": "custom.mail", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + { + "customSlot": false, + "description": "Individual cell phone number. (Needed for Duo server access)", + "id": "3bb65f28-6f65-45aa-b2c6-4a6d1d90ce73", + "label": "Cell number", + "layout": { + "columns": 6, + "offset": 0, + }, + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "regex": { + "message": "Please correct your phone number.", + "pattern": "^(\\+0?1\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$", + }, + "required": true, + }, + }, + ], + "id": "6fd16bae-ea14-43db-ac27-b0dfad060b46", + }, + { + "fields": [ + { + "customSlot": false, + "description": "Position", + "id": "dfeba91e-5141-4da6-97f3-4ad520e64334", + "label": "Position", + "layout": { + "columns": 6, + "offset": 0, + }, + "model": "custom.positionSelect", + "onChangeEvent": { + "script": "// Get the newly selected value +var selectedPosition = form.currentFieldValue; + +//console.log('Position changed to:', selectedPosition); + +if (selectedPosition === 'positionOther') { + // Show the text field and enable it + form.showField('custom.positionOther'); + form.enableField('custom.positionOther'); +} else { + // Hide the text field and clear any value + form.hideField('custom.positionOther'); + form.setValue('custom.positionOther', ''); + + // Optionally disable it as well (though hidden fields are already non-interactive) + form.disableField('custom.positionOther'); +}", + "type": "script", + }, + "options": [ + { + "label": "One", + "selectedByDefault": true, + "value": "positionOne", + }, + { + "label": "Two", + "value": "positionTwo", + }, + { + "label": "Other", + "value": "positionOther", + }, + ], + "readOnly": false, + "type": "select", + "validation": { + "required": true, + }, + }, + { + "customSlot": false, + "description": "Please provide a position", + "id": "5081c59a-016c-4ac3-a518-45123a34cd22", + "label": "", + "layout": { + "columns": 6, + "offset": 0, + }, + "model": "custom.positionOther", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "4d5bbe99-4c48-48f2-9c02-16c194c95a8e", + }, + { + "fields": [ + { + "customSlot": false, + "description": "Start Date", + "id": "855991a5-6ac8-4bc0-91a6-c1b156e9832c", + "label": "Start Date", + "layout": { + "columns": 6, + "offset": 0, + }, + "model": "custom.startDate", + "onChangeEvent": {}, + "readOnly": false, + "type": "date", + "validation": { + "required": true, + }, + }, + { + "customSlot": false, + "description": "End Date", + "id": "e1687d03-9db3-4f3b-8939-5bb42893a165", + "label": "End Date", + "layout": { + "columns": 6, + "offset": 0, + }, + "model": "custom.endDate", + "onChangeEvent": {}, + "readOnly": false, + "type": "date", + "validation": { + "required": true, + }, + }, + ], + "id": "d36ce194-5b64-452a-bb10-b99a30ce8038", + }, + ], + }, + "id": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2025-12-15T16:46:29.581505111Z", + }, + "name": "phh-new-user", + "type": "request", + }, + "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9": { + "assignments": [ + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:03.856752543Z", + }, + "objectId": "workflow/testWorkflow3/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:01.849201534Z", + }, + "objectId": "workflow/testWorkflow1/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:02.84761136Z", + }, + "objectId": "workflow/testWorkflow2/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:04.870872677Z", + }, + "objectId": "workflow/testWorkflow4/node/approvalTask-7e33e73d6763", + }, + ], + "categories": { + "applicationType": null, + "objectType": "Group", + "operation": "create", + }, + "description": "This is a test application request form", + "form": {}, + "id": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:00.809825423Z", + }, + "name": "test_workflow_request_form_1", + "type": "applicationRequest", + }, + }, + "requestType": { + "3eb082e7-68f2-409f-9423-26e771259dc8": { + "custom": true, + "displayName": "test_workflow_request_type_4", + "id": "3eb082e7-68f2-409f-9423-26e771259dc8", + "metadata": { + "createdDate": "2026-03-04T22:40:22.060377906Z", + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false, + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false, + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7, + }, + "isInternal": true, + "isRequired": false, + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + "isDraft": { + "isInternal": true, + "isRequired": false, + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3, + }, + "isInternal": true, + "isRequired": false, + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6, + }, + "isRequired": false, + "text": { + "defaultValue": "low", + }, + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5, + }, + "isInternal": true, + "isRequired": false, + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "blob": { + "type": "object", + }, + "context": { + "type": "object", + }, + "endDate": { + "type": "text", + }, + "expiryDate": { + "type": "text", + }, + "externalRequestId": { + "type": "text", + }, + "isDraft": { + "type": "boolean", + }, + "justification": { + "type": "text", + }, + "priority": { + "type": "text", + }, + "requestIdPrefix": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + "workflowId": { + "type": "text", + }, + }, + }, + ], + }, + "workflow": { + "id": "testWorkflow4", + }, + }, + "8d0055b3-155f-4885-a415-4f1c536098e8": { + "custom": true, + "displayName": "phh-create-user", + "id": "8d0055b3-155f-4885-a415-4f1c536098e8", + "metadata": { + "createdDate": "2025-12-15T22:22:58.524157136Z", + }, + "notModifiableProperties": [], + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false, + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false, + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7, + }, + "isInternal": true, + "isRequired": false, + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + "isDraft": { + "isInternal": true, + "isRequired": false, + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3, + }, + "isInternal": true, + "isRequired": false, + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6, + }, + "isRequired": false, + "text": { + "defaultValue": "low", + }, + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5, + }, + "isInternal": true, + "isRequired": false, + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "blob": { + "type": "object", + }, + "context": { + "type": "object", + }, + "endDate": { + "type": "text", + }, + "expiryDate": { + "type": "text", + }, + "externalRequestId": { + "type": "text", + }, + "isDraft": { + "type": "boolean", + }, + "justification": { + "type": "text", + }, + "priority": { + "type": "text", + }, + "requestIdPrefix": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + "workflowId": { + "type": "text", + }, + }, + }, + ], + "custom": [ + { + "_meta": { + "properties": { + "endDate": { + "display": { + "isVisible": true, + "name": "End Date", + "order": 5, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false, + }, + "givenName": { + "display": { + "isVisible": true, + "name": "Given Name", + "order": 1, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true, + }, + "mail": { + "display": { + "isVisible": true, + "name": "eMail", + "order": 3, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true, + }, + "sn": { + "display": { + "isVisible": true, + "name": "Surname", + "order": 2, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true, + }, + "startDate": { + "display": { + "isVisible": true, + "name": "Start Date", + "order": 4, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "endDate": { + "type": "text", + }, + "givenName": { + "type": "text", + }, + "mail": { + "type": "text", + }, + "sn": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + }, + }, + ], + }, + "workflow": { + "id": "phhNewUserCreate", + }, + }, + "af4a6f84-f9a9-4f8d-82ae-649639debabc": { + "custom": true, + "displayName": "test_workflow_request_type_5", + "id": "af4a6f84-f9a9-4f8d-82ae-649639debabc", + "metadata": { + "createdDate": "2026-03-04T22:39:54.772364584Z", + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false, + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false, + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7, + }, + "isInternal": true, + "isRequired": false, + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + "isDraft": { + "isInternal": true, + "isRequired": false, + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3, + }, + "isInternal": true, + "isRequired": false, + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6, + }, + "isRequired": false, + "text": { + "defaultValue": "low", + }, + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5, + }, + "isInternal": true, + "isRequired": false, + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "blob": { + "type": "object", + }, + "context": { + "type": "object", + }, + "endDate": { + "type": "text", + }, + "expiryDate": { + "type": "text", + }, + "externalRequestId": { + "type": "text", + }, + "isDraft": { + "type": "boolean", + }, + "justification": { + "type": "text", + }, + "priority": { + "type": "text", + }, + "requestIdPrefix": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + "workflowId": { + "type": "text", + }, + }, + }, + ], + "custom": [ + {}, + ], + }, + "workflow": {}, + }, + "e9dcd66e-1388-4872-9790-66df2f44deef": { + "custom": true, + "displayName": "test_workflow_request_type_1", + "id": "e9dcd66e-1388-4872-9790-66df2f44deef", + "metadata": { + "createdDate": "2026-03-04T22:40:20.099572476Z", + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false, + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false, + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7, + }, + "isInternal": true, + "isRequired": false, + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + "isDraft": { + "isInternal": true, + "isRequired": false, + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3, + }, + "isInternal": true, + "isRequired": false, + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6, + }, + "isRequired": false, + "text": { + "defaultValue": "low", + }, + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5, + }, + "isInternal": true, + "isRequired": false, + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "blob": { + "type": "object", + }, + "context": { + "type": "object", + }, + "endDate": { + "type": "text", + }, + "expiryDate": { + "type": "text", + }, + "externalRequestId": { + "type": "text", + }, + "isDraft": { + "type": "boolean", + }, + "justification": { + "type": "text", + }, + "priority": { + "type": "text", + }, + "requestIdPrefix": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + "workflowId": { + "type": "text", + }, + }, + }, + ], + "custom": [ + {}, + ], + }, + "validation": null, + "workflow": { + "id": "testWorkflow1", + }, + }, + "fdf9e9a1-b5cf-496a-821b-e7b3d5841252": { + "custom": true, + "displayName": "phh-delegate-user-disable-type", + "id": "fdf9e9a1-b5cf-496a-821b-e7b3d5841252", + "metadata": { + "createdDate": "2026-02-23T23:40:17.173973796Z", + }, + "notModifiableProperties": [], + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false, + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false, + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7, + }, + "isInternal": true, + "isRequired": false, + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + "isDraft": { + "isInternal": true, + "isRequired": false, + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3, + }, + "isInternal": true, + "isRequired": false, + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6, + }, + "isRequired": false, + "text": { + "defaultValue": "low", + }, + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5, + }, + "isInternal": true, + "isRequired": false, + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "blob": { + "type": "object", + }, + "context": { + "type": "object", + }, + "endDate": { + "type": "text", + }, + "expiryDate": { + "type": "text", + }, + "externalRequestId": { + "type": "text", + }, + "isDraft": { + "type": "boolean", + }, + "justification": { + "type": "text", + }, + "priority": { + "type": "text", + }, + "requestIdPrefix": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + "workflowId": { + "type": "text", + }, + }, + }, + ], + }, + "validation": null, + "workflow": { + "id": "phhDelegatedUserDisableWorkflow", + }, + }, + }, + "variable": {}, + "workflow": { + "createNonEmployee": { + "draft": { + "childType": false, + "description": "CreateNonEmployee", + "displayName": "CreateNonEmployee", + "id": "createNonEmployee", + "mutable": true, + "name": "CreateNonEmployee", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1694, + "y": 154, + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + "x": 12, + "y": 110, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {}); + return systemSettings.defaultApprover; +})()", + }, + "events": { + "escalationType": "script", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 732, + "y": 172, + }, + "exclusiveGateway-abbb089758c8": { + "x": 433, + "y": 89.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 928, + "y": 53.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 963, + "y": 223.015625, + }, + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 112.015625, + }, + "scriptTask-e8842de66fbb": { + "x": 718, + "y": 43.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {}); + return systemSettings.defaultApprover; +})()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(1*24*60*60*1000))).toISOString()", + }, + "frequency": 1, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Creating User"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +} +catch (e) { + failureReason = "Creating User: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var payload = requestObj.request.user.object; + + /** Create new user **/ + var result = openidm.create('managed/alpha_user', null, payload, queryParams); + logger.info("User created with userName " + result.userName + " and _id " + result._id + ".") + + /** Send new user email **/ + var body = { + subject: "Welcome " + payload.givenName + " " + payload.sn + "!", + to: payload.mail, + body: "Your new user has been created.\\n\\nUsername: " + payload.userName, + object: {} + }; + + if(payload.manager && payload.manager._ref){ + logger.info("Getting manager information for " + payload.userName + " create user welcome email.") + try { + var managerResult = openidm.read(payload.manager._ref); + body.cc = managerResult.mail; + } catch (e) { + logger.info("Unable to read manager information for " + payload.userName + " create user welcome email. " + e.message) + } + } + openidm.action("external/email", "send", body); + } + catch (e) { + failureReason = "Creating user failed: Error during creation of user " + payload.userName + ". Error message: " + e.message; + } + + var decision = {'status': 'complete', 'decision': 'approved'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Create User - rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": "// This permission check script will check that the requester has proper privileges to +// create a user. If so, it will skip any approval process and directly move to create the new user. + +logger.info("Create User - Permission check"); +var content = execution.getVariables(); +var requestId = content.get('id'); +var skipApproval = false; + +try { + // Read the request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var requester = requestObj.requester + + if(requester.id.startsWith('managed/user/')){ + // If requester is a normal managed user, check that the user has permissions to create a user + var userId = requester.id.split('/'); + var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': userId[2], 'scopePermission': 'createUser', '_queryFilter': \`id+eq+'\` + userId[2] + \`'\`}) + if(user.result.length > 0){ + skipApproval = true; + } + } + else{ + // Tenant admins and system requests + skipApproval = true; + } +} +catch (e) { + logger.info("Request permission check failed: " + e.message); +} + +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": "logger.info("Create User - marking request as auto approved."); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + "comment": "Request auto-approved due to requester having create user privileges." + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = {'comment': failureReason, 'failure': true}; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "deleteme": { + "draft": { + "childType": false, + "description": "deleteme", + "displayName": "deleteme", + "id": "deleteme", + "mutable": true, + "name": "deleteme", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 500, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-9fc2071912bc", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 50, + "y": 250, + }, + "uiConfig": { + "approvalTask-9fc2071912bc": { + "actors": { + "isExpression": true, + "value": "console.log("This is so cool!")", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 298.3999938964844, + "y": 192.6125030517578, + }, + "fulfillmentTask-0dcefcedc0e1": { + "actors": { + "isExpression": true, + "value": "console.log("This is so cool too!")", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 521.3999938964844, + "y": 301.6125030517578, + }, + "scriptTask-4bf0978a3148": { + "x": 294.3999938964844, + "y": 335.6125030517578, + }, + "violationTask-d368cda5d3be": { + "actors": { + "isExpression": true, + "value": "console.log("This is so cool three!")", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 577.3999938964844, + "y": 477.6125030517578, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "console.log("This is so cool!")", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-4bf0978a3148", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-9fc2071912bc", + "type": "approvalTask", + }, + { + "displayName": "Script Task", + "name": "scriptTask-4bf0978a3148", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "fulfillmentTask-0dcefcedc0e1", + }, + ], + "script": "console.error("NOT COOL!");", + }, + "type": "scriptTask", + }, + { + "displayName": "Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "console.log("This is so cool too!")", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": null, + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-d368cda5d3be", + }, + ], + }, + "name": "fulfillmentTask-0dcefcedc0e1", + "type": "fulfillmentTask", + }, + { + "displayName": "Violation Task", + "name": "violationTask-d368cda5d3be", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "console.log("This is so cool three!")", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": null, + }, + ], + }, + }, + ], + }, + "published": null, + }, + "phhBasicApplicationGrant": { + "draft": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2822, + "y": 352, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1038.7499923706055, + "y": 469.76562881469727, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.2499923706055, + "y": 334.76562881469727, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1037.2499923706055, + "y": 601.7656288146973, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 682, + "y": 155, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.9999923706055, + "y": 736.7656288146973, + }, + "exclusiveGateway-5167870154a9": { + "x": 1855, + "y": 84, + }, + "exclusiveGateway-621c9996676a": { + "x": 433, + "y": 117.015625, + }, + "inclusiveGateway-2fbd3e7aa50c": { + "x": 803.3999938964844, + "y": 472.6125030517578, + }, + "inclusiveGateway-7d248125a9bd": { + "x": 2417, + "y": 43.015625, + }, + "inclusiveGateway-a71e67faaad1": { + "x": 1124, + "y": 93.015625, + }, + "scriptTask-0e5b6187ea62": { + "x": 889, + "y": 116.015625, + }, + "scriptTask-14acc58c28dd": { + "x": 2650, + "y": 85.015625, + }, + "scriptTask-3a74557440fb": { + "x": 2144, + "y": 62, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + "scriptTask-626899b6e99a": { + "x": 1549, + "y": 108, + }, + "scriptTask-744ef6a8b9a2": { + "x": 2151, + "y": 207.015625, + }, + "scriptTask-c444d08a6099": { + "x": 818.3999938964844, + "y": 348.6125030517578, + }, + "scriptTask-c58309b8c470": { + "x": 1554, + "y": 242, + }, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + "x": 1339, + "y": 85.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": "logger.info("Running application grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var app = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check the user does not already have application granted +// Note: this is done at request submission time as well, the following is an example of how to check user's accounts +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); ", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": "failureReason != null", + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": "logger.info("Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "applicationId": request.common.applicationId, + "auditContext": {}, + "grantType": "request", + "requestId": requestObj.id, + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message; + } + + var decision = {'status': 'complete'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + execution.setVariable('enableEndWait', false); + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.startDate", + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null, + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Create Removal Request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Create Removal Request failed: Error reading request with id " + requestId; +} + +if(!failureReason){ + try{ + var request = requestObj.request; + var newRequestPayload = { + "common":{ + "context": { + "type": "admin" + }, + "applicationId": request.common.applicationId, + "userId": request.common.userId, + "endDate": request.common.endDate, + "justification": "Request submitted automatically to remove access granted by request: " + requestId + } + }; + var queryParam = { + '_action': "publish" + } + openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam) + }catch(e){ + logger.info("Create Removal Request failed to create request") + } + }", + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ + +var content = execution.getVariables(); +var requestId = content.get('id'); +var requestObj = null; +var appId = null; +var appGlossary = null; +var lob = null; +try { +requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +appId = requestObj.application.id; +} +catch (e) { +logger.info("Validation failed: Error reading application grant request with id " + requestId); +} +try { +appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {}); +lob = appGlossary.lineOfBusiness || "default" +execution.setVariable("lob", lob); +} +catch (e) { +logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "lob == "sales"", + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": "lob == "finance"", + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": "lob == "hr"", + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": "lob == "default"", + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2822, + "y": 352, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1038.7499923706055, + "y": 469.76562881469727, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.2499923706055, + "y": 334.76562881469727, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1037.2499923706055, + "y": 601.7656288146973, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 682, + "y": 155, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.9999923706055, + "y": 736.7656288146973, + }, + "exclusiveGateway-5167870154a9": { + "x": 1855, + "y": 84, + }, + "exclusiveGateway-621c9996676a": { + "x": 433, + "y": 117.015625, + }, + "inclusiveGateway-2fbd3e7aa50c": { + "x": 803.3999938964844, + "y": 472.6125030517578, + }, + "inclusiveGateway-7d248125a9bd": { + "x": 2417, + "y": 43.015625, + }, + "inclusiveGateway-a71e67faaad1": { + "x": 1124, + "y": 93.015625, + }, + "scriptTask-0e5b6187ea62": { + "x": 889, + "y": 116.015625, + }, + "scriptTask-14acc58c28dd": { + "x": 2650, + "y": 85.015625, + }, + "scriptTask-3a74557440fb": { + "x": 2144, + "y": 62, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + "scriptTask-626899b6e99a": { + "x": 1549, + "y": 108, + }, + "scriptTask-744ef6a8b9a2": { + "x": 2151, + "y": 207.015625, + }, + "scriptTask-c444d08a6099": { + "x": 818.3999938964844, + "y": 348.6125030517578, + }, + "scriptTask-c58309b8c470": { + "x": 1554, + "y": 242, + }, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + "x": 1339, + "y": 85.015625, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": "logger.info("Running application grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var app = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check the user does not already have application granted +// Note: this is done at request submission time as well, the following is an example of how to check user's accounts +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); ", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": "failureReason != null", + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": "logger.info("Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "applicationId": request.common.applicationId, + "auditContext": {}, + "grantType": "request", + "requestId": requestObj.id, + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message; + } + + var decision = {'status': 'complete'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + execution.setVariable('enableEndWait', false); + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.startDate", + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null, + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Create Removal Request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Create Removal Request failed: Error reading request with id " + requestId; +} + +if(!failureReason){ + try{ + var request = requestObj.request; + var newRequestPayload = { + "common":{ + "context": { + "type": "admin" + }, + "applicationId": request.common.applicationId, + "userId": request.common.userId, + "endDate": request.common.endDate, + "justification": "Request submitted automatically to remove access granted by request: " + requestId + } + }; + var queryParam = { + '_action': "publish" + } + openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam) + }catch(e){ + logger.info("Create Removal Request failed to create request") + } + }", + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ + +var content = execution.getVariables(); +var requestId = content.get('id'); +var requestObj = null; +var appId = null; +var appGlossary = null; +var lob = null; +try { +requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +appId = requestObj.application.id; +} +catch (e) { +logger.info("Validation failed: Error reading application grant request with id " + requestId); +} +try { +appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {}); +lob = appGlossary.lineOfBusiness || "default" +execution.setVariable("lob", lob); +} +catch (e) { +logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "lob == "sales"", + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": "lob == "finance"", + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": "lob == "hr"", + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": "lob == "default"", + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + "phhBirthrightRolesRequiringApproval": { + "draft": null, + "published": { + "childType": false, + "description": "phh-birthright-roles-requiring-approval", + "displayName": "phh-birthright-roles-requiring-approval", + "id": "phhBirthrightRolesRequiringApproval", + "mutable": true, + "name": "phh-birthright-roles-requiring-approval", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 1303, + "y": 236, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-0e64ff0c1695", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 70, + "y": 151, + }, + "uiConfig": { + "approvalTask-f4e7324654b5": { + "actors": { + "isExpression": true, + "value": "(function() { +var content = execution.getVariables(); +var requestId = content.get('id'); +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var approverId = ''; +if (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id } +return [{ +"id": "managed/user/" + approverId, +"permissions": { +"approve": true, +"reject": true, +"reassign": true, +"modify": true, +"comment": true +} +}]; +})()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 440, + "y": 126.5, + }, + "scriptTask-0e64ff0c1695": { + "x": 210, + "y": 153, + }, + "scriptTask-792e240778b1": { + "x": 712, + "y": 226, + }, + "scriptTask-ad05a46c2e74": { + "x": 712, + "y": 80, + }, + "scriptTask-aecf833994d2": { + "x": 1032, + "y": 153, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Debug Task", + "name": "scriptTask-0e64ff0c1695", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "approvalTask-f4e7324654b5", + }, + ], + "script": "logger.info("Running user update event"); +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var context = null; +var skipApproval = false; +var userObj = null; +var userId = null; +// Read event user information from request object +try { +var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +logger.error("requestObj "+JSON.stringify(requestObj)); +if (requestObj.request.common.context) { +context = requestObj.request.common.context.type; +if (context == 'admin') { +skipApproval = true; +} +} +userObj = requestObj.request.common.blob.after; +userId = userObj.userId; +} +catch (e) { +failureReason = "Validation failed: Error reading request with id " + requestId; +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "(function() { +var content = execution.getVariables(); +var requestId = content.get('id'); +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var approverId = ''; +if (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id } +return [{ +"id": "managed/user/" + approverId, +"permissions": { +"approve": true, +"reject": true, +"reassign": true, +"modify": true, +"comment": true +} +}]; +})()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-792e240778b1", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-ad05a46c2e74", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-f4e7324654b5", + "type": "approvalTask", + }, + { + "displayName": "Look Up Roles and Request", + "name": "scriptTask-792e240778b1", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Running user update event"); +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var userObj = null; +var userId = null; +// +// Read event user information from request object +try { +var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +userObj = requestObj.request.common.blob.after; +userId = userObj.userId; +} +catch (e) { +failureReason = "Validation failed: Error reading request with id " + requestId; +} +///Get Roles from Role Variable +var roleNames = requestObj.request.common.blob.parameters.roleNames.split(','); +logger.error("UpdateRequest with roleNames: " + roleNames); +// Look up roles in catalog +var operand = []; +for (var index in roleNames) { +var role = roleNames[index]; +var roleClean = role.trim(); +operand.push({operator: "EQUALS", operand: { targetName: "role.name", targetValue: roleClean }}) +} +var body = { targetFilter: {operator: "OR", operand: operand}}; +var catalog = openidm.action("iga/governance/catalog/search", "POST", body); +var catalogResults = catalog.result; +// Define request catalogs key +var catalogBody = []; +for (var idx in catalogResults) { +var catalog = catalogResults[idx]; +catalogBody.push({type: "role", id: catalog.id}) +} +// Define request payload +var requestBody = { +priority: "low", +accessModifier: "add", +justification: "Request submitted on user update.", +users: [ userId ], +catalogs: catalogBody, +context: { +type: "NoAdmin" +} +}; +// Create requests +try { +logger.error("DRLCREATING REQUST for "+JSON.stringify(body)); +openidm.action("iga/governance/requests", "POST", requestBody, {_action: "create"}) +} +catch (e) { +failureReason = "Unable to generate requests for roles"; +} +// Update event request as final +var decision = failureReason ? +{'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true} : +{'status': 'complete', 'outcome': 'fulfilled', 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +logger.info("Request " + requestId + " completed.");", + }, + "type": "scriptTask", + }, + { + "displayName": "Finalize Request on Reject", + "name": "scriptTask-ad05a46c2e74", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-aecf833994d2", + }, + ], + "script": "logger.info("Finalize Request:BirthRight Roles that need Approval"); +var content = execution.getVariables(); +var requestId = content.get('requestId'); +var failureState = content.get('failureState'); +if (!failureState) { +try { +// Update event request as final +var decision = {'status': 'complete', 'outcome': 'fulfilled', 'decision': 'rejected'} +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +logger.info("Request " + requestId + " completed."); +} +catch (e) { +execution.setVariable("failureState", "Unable to finalize request."); +} +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Failure Handler", + "name": "scriptTask-aecf833994d2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Failure Handler: BirthRight Roles that need Approval "); +var content = execution.getVariables(); +var requestId = content.get('requestId'); +var failureReason = content.get('failureReason'); +// Update event request as final +if (failureReason) { +var decision = {'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true} +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +logger.info("Request " + requestId + " completed."); +}", + }, + "type": "scriptTask", + }, + ], + }, + }, + "phhDelegatedUserDisableWorkflow": { + "draft": null, + "published": { + "childType": false, + "description": "phh-delegated-user-disable-workflow", + "displayName": "phh-delegated-user-disable-workflow", + "id": "phhDelegatedUserDisableWorkflow", + "mutable": true, + "name": "phh-delegated-user-disable-workflow", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 1563, + "y": 352, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-3d854e98930e", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 50, + "y": 250, + }, + "uiConfig": { + "approvalTask-bebe49db4dac": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1177, + "y": 60.61250305175781, + }, + "exclusiveGateway-26e0a9262468": { + "x": 438.3999938964844, + "y": 232.6125030517578, + }, + "exclusiveGateway-d5b7b2e2a80a": { + "x": 931.7999877929688, + "y": 111.61250305175781, + }, + "scriptTask-38eb13f4deca": { + "x": 648.3999938964844, + "y": 343.6125030517578, + }, + "scriptTask-3d854e98930e": { + "x": 175.39999389648438, + "y": 251.6125030517578, + }, + "scriptTask-449aac6b18b8": { + "x": 1149.3999938964844, + "y": 236.6125030517578, + }, + "scriptTask-4f4b87291099": { + "x": 1442.9999694824219, + "y": 101.61250305175781, + }, + "scriptTask-8e24794e9be4": { + "x": 649.3999938964844, + "y": 132.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegation Info", + "name": "scriptTask-3d854e98930e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-26e0a9262468", + }, + ], + "script": "/* + * Load Delegation Information + * Populates available direct reports for the requester + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +console.log("=== Load Delegation Info Start ==="); +console.log("Request ID: " + requestId); + +try { + // Get the request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var requesterId = requestObj.requester.id; + var requesterIdOnly = requesterId.replace("managed/user/", ""); + + console.log("Requester ID: " + requesterIdOnly); + + // Query users where current user is the manager + var queryParams = { + "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"', + "_fields": "userName,givenName,sn,_id" + }; + + var results = openidm.query("managed/alpha_user", queryParams); + + // Build a formatted list for display + var directReportsList = ""; + var directReportsCount = 0; + + if (results.resultCount > 0) { + directReportsList = "You can act on behalf of the following users:\\n\\n"; + results.result.forEach(function(user) { + directReportsList += "• " + user.userName + " (" + user.givenName + " " + user.sn + ")\\n"; + }); + directReportsCount = results.resultCount; + logger.info("Found " + directReportsCount + " direct reports"); + } else { + directReportsList = "You do not have any direct reports in the system.\\n\\nYou cannot submit delegation requests without direct reports."; + logger.warn("No direct reports found"); + } + + // Store variables for later use + execution.setVariable("directReportsList", directReportsList); + execution.setVariable("directReportsCount", directReportsCount); + execution.setVariable("hasDelegationAuthority", directReportsCount > 0); + + // Update the request to populate the helper field + // This updates the form display for the user + var updatePayload = { + "request": { + "common": { + "blob": { + "form": { + "availableDirectReports": directReportsList + } + } + } + } + }; + + openidm.patch('iga/governance/requests/' + requestId, null, [ + { + "operation": "add", + "field": "/request/common/blob/form/availableDirectReports", + "value": directReportsList + } + ]); + + console.log("Direct reports list populated in form"); + +} catch (e) { + logger.error("Error loading delegation info: " + e.message); + execution.setVariable("hasDelegationAuthority", false); + execution.setVariable("directReportsCount", 0); + execution.setVariable("directReportsList", "Error loading your direct reports. Please contact your administrator."); +} + +console.log("=== Load Delegation Info Complete ===");", + }, + "type": "scriptTask", + }, + { + "displayName": "Auth Check", + "name": "exclusiveGateway-26e0a9262468", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "hasDelegationAuthority == true", + "outcome": "validationSuccess", + "step": "scriptTask-8e24794e9be4", + }, + { + "condition": "hasDelegationAuthority == false", + "outcome": "validationFailure", + "step": "scriptTask-38eb13f4deca", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - No Authority", + "name": "scriptTask-38eb13f4deca", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "/* + * Auto-Reject - No Delegation Authority + * Rejects request if user has no direct reports + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +console.log("Auto-rejecting request " + requestId + " - no delegation authority"); + +try { + var decision = { + 'decision': 'rejected', + 'status': 'complete', + 'comment': 'Request automatically rejected: You do not have any direct reports in the system. You cannot submit delegation requests without having direct reports assigned to you.\\n\\nPlease contact your administrator if you believe this is an error.' + }; + + var updateParams = { + '_action': 'update' + }; + + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams); + + console.log("Request " + requestId + " rejected successfully"); + +} catch (e) { + console.log("Error rejecting request: " + e.message); + throw e; +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Validate Delegation Request", + "name": "scriptTask-8e24794e9be4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-d5b7b2e2a80a", + }, + ], + "script": "/* + * Validate Delegation Request + * Validates all user inputs and delegation authority + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +console.log("=== Validation Start ==="); + +var validationPassed = false; +var validationErrors = []; +var actingPrincipalObject = null; +var targetUserObject = null; + +try { + // Get request object with form data + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + var requesterId = requestObj.requester.id; + var requesterIdOnly = requesterId.replace("managed/user/", ""); + + // Extract form values + var actingPrincipalUsername = requestObj.request.common.blob.form.actingPrincipalId; + var targetUserUsername = requestObj.request.common.blob.form.targetUserId; + var justification = requestObj.request.common.blob.form.justification; + + console.log("Acting Principal Username: " + actingPrincipalUsername); + console.log("Target User Username: " + targetUserUsername); + + // Validate acting principal + if (!actingPrincipalUsername || actingPrincipalUsername.trim() === "") { + validationErrors.push("Acting Principal username is required"); + } else { + try { + var actingPrincipalQuery = { + "_queryFilter": 'userName eq "' + actingPrincipalUsername.trim() + '"' + }; + var actingPrincipalResults = openidm.query("managed/alpha_user", actingPrincipalQuery); + + if (actingPrincipalResults.resultCount === 0) { + validationErrors.push("Acting Principal user not found: " + actingPrincipalUsername); + } else if (actingPrincipalResults.resultCount > 1) { + validationErrors.push("Multiple users found with username: " + actingPrincipalUsername); + } else { + actingPrincipalObject = actingPrincipalResults.result[0]; + + // Verify requester is manager of acting principal + if (!actingPrincipalObject.manager || !actingPrincipalObject.manager._id) { + validationErrors.push("Acting Principal does not have a manager assigned"); + } else if (actingPrincipalObject.manager._id !== requesterIdOnly) { + validationErrors.push("You are not the manager of " + actingPrincipalUsername + ". You can only act on behalf of your direct reports."); + } else { + console.log("Acting Principal validated: " + actingPrincipalObject.userName); + } + } + } catch (e) { + validationErrors.push("Error validating Acting Principal: " + e.message); + } + } + + // Validate target user + if (!targetUserUsername || targetUserUsername.trim() === "") { + validationErrors.push("Target User username is required"); + } else { + try { + var targetUserQuery = { + "_queryFilter": 'userName eq "' + targetUserUsername.trim() + '"' + }; + var targetUserResults = openidm.query("managed/alpha_user", targetUserQuery); + + if (targetUserResults.resultCount === 0) { + validationErrors.push("Target User not found: " + targetUserUsername); + } else if (targetUserResults.resultCount > 1) { + validationErrors.push("Multiple users found with username: " + targetUserUsername); + } else { + targetUserObject = targetUserResults.result[0]; + + // Verify user type is External + if (targetUserObject.userType !== "External") { + validationErrors.push("Target User must be of type 'External'. User " + targetUserUsername + " is type: " + (targetUserObject.userType || "Unknown")); + } else { + console.log("Target User validated: " + targetUserObject.userName); + } + } + } catch (e) { + validationErrors.push("Error validating Target User: " + e.message); + } + } + + // Validate justification + if (!justification || justification.trim() === "") { + validationErrors.push("Justification is required"); + } else if (justification.trim().length < 10) { + validationErrors.push("Justification must be at least 10 characters"); + } + + // Prevent self-disable via delegation + if (actingPrincipalObject && targetUserObject && actingPrincipalObject._id === targetUserObject._id) { + validationErrors.push("Cannot disable the same user you are acting on behalf of"); + } + + // Check if all validations passed + if (validationErrors.length === 0) { + validationPassed = true; + + // Store user details for display in approval + execution.setVariable("actingPrincipalUserName", actingPrincipalObject.userName); + execution.setVariable("actingPrincipalFullName", actingPrincipalObject.givenName + " " + actingPrincipalObject.sn); + execution.setVariable("actingPrincipalId", actingPrincipalObject._id); + + execution.setVariable("targetUserUserName", targetUserObject.userName); + execution.setVariable("targetUserFullName", targetUserObject.givenName + " " + targetUserObject.sn); + execution.setVariable("targetUserId", targetUserObject._id); + + execution.setVariable("justification", justification); + + console.log("All validations passed"); + } else { + console.log("Validation failed: " + validationErrors.join("; ")); + } + +} catch (e) { + validationPassed = false; + validationErrors.push("System error during validation: " + e.message); + console.log("Validation exception: " + e.message); +} + +// Set workflow variables +execution.setVariable("validationPassed", validationPassed); +execution.setVariable("validationErrors", validationErrors.join("\\n")); + +console.log("=== Validation Complete: " + (validationPassed ? "PASSED" : "FAILED") + " ===");", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Passed?", + "name": "exclusiveGateway-d5b7b2e2a80a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "validationPassed == true", + "outcome": "validationSuccess", + "step": "approvalTask-bebe49db4dac", + }, + { + "condition": "validationPassed == false", + "outcome": "validationFailure", + "step": "scriptTask-449aac6b18b8", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - Validation Failed", + "name": "scriptTask-449aac6b18b8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "/* + * Auto-Reject - Validation Failed + * Rejects request with detailed error messages + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); +var validationErrors = content.get('validationErrors') || "Validation failed"; + +console.log("Auto-rejecting request due to validation errors"); + +try { + var decision = { + 'decision': 'rejected', + 'status': 'complete', + 'comment': 'Request automatically rejected due to validation errors:\\n\\n' + validationErrors + '\\n\\nPlease correct the errors and submit a new request.' + }; + + var updateParams = { + '_action': 'update' + }; + + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams); + + console.log("Request " + requestId + " rejected - validation failed"); + +} catch (e) { + console.log("Error rejecting request: " + e.message); + throw e; +}", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "doNothing", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-4f4b87291099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-bebe49db4dac", + "type": "approvalTask", + }, + { + "displayName": "Disable User Account", + "name": "scriptTask-4f4b87291099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "/* + * Fulfillment - Disable User Account + * Disables the target user's account + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); +var targetUserId = content.get('targetUserId'); +var justification = content.get('justification'); +var actingPrincipalUserName = content.get('actingPrincipalUserName'); + +console.log("=== Fulfillment Start ==="); +console.log("Disabling user ID: " + targetUserId); + +try { + // Read current user state + var targetUser = openidm.read("managed/alpha_user/" + targetUserId); + + if (!targetUser) { + throw new Error("Target user not found: " + targetUserId); + } + + console.log("Current user status: " + (targetUser.accountStatus || "active")); + + // Prepare patch operations to disable the account + var patchOperations = [ + { + "operation": "replace", + "field": "/accountStatus", + "value": "inactive" + } + ]; + + // Add a description/note about the disable action + if (targetUser.description) { + patchOperations.push({ + "operation": "replace", + "field": "/description", + "value": targetUser.description + "\\n[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification + }); + } else { + patchOperations.push({ + "operation": "add", + "field": "/description", + "value": "[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification + }); + } + + // Execute the patch + var updateResult = openidm.patch("managed/alpha_user/" + targetUserId, null, patchOperations); + + console.log("User " + targetUser.userName + " successfully disabled"); + console.log("Account status set to: inactive"); + + // Set success variables + execution.setVariable("fulfillmentStatus", "completed"); + execution.setVariable("fulfillmentMessage", "User account " + targetUser.userName + " has been successfully disabled"); + + // Update request with completion details + try { + var requestUpdate = { + 'status': 'complete', + 'decision': 'approved' + }; + + openidm.action('iga/governance/requests/' + requestId, 'POST', requestUpdate, {'_action': 'update'}); + } catch (updateError) { + console.log("Could not update request status: " + updateError.message); + } + +} catch (e) { + logger.error("Fulfillment error: " + e.message); + execution.setVariable("fulfillmentStatus", "failed"); + execution.setVariable("fulfillmentMessage", "Error disabling user: " + e.message); + + // Don't throw - let workflow complete but mark as failed + // You might want to send a notification here +} + +console.log("=== Fulfillment Complete ===");", + }, + "type": "scriptTask", + }, + ], + }, + }, + "phhInternalRoleEntitlementGrant": { + "draft": { + "childType": false, + "description": "phh-InternalRoleEntitlementGrant", + "displayName": "phh-InternalRoleEntitlementGrant", + "id": "phhInternalRoleEntitlementGrant", + "mutable": true, + "name": "phh-InternalRoleEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2597, + "y": 322, + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 722, + "y": 156, + }, + "exclusiveGateway-48e748c42994": { + "x": 1731, + "y": 88.015625, + }, + "exclusiveGateway-67a954f33919": { + "x": 467, + "y": 121.015625, + }, + "inclusiveGateway-3f85f36eeeef": { + "x": 948, + "y": 57.015625, + }, + "inclusiveGateway-f105ed2b352d": { + "x": 2255, + "y": 48.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 1972, + "y": 119.015625, + }, + "scriptTask-0b56191887de": { + "x": 1979, + "y": 212.015625, + }, + "scriptTask-3eab1948f1ec": { + "x": 1434, + "y": 95.015625, + }, + "scriptTask-91769554db51": { + "x": 2561, + "y": 74.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1441, + "y": 268.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 186, + "y": 143.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 716, + "y": 74.015625, + }, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 1208, + "y": 30.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": "logger.info("Running entitlement grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var assignmentId = null; +var app = null; +var assignment = null; +var existingAccount = false; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check entitlement exists +if (!failureReason) { + try { + assignment = openidm.read('managed/alpha_assignment/' + assignmentId); + if (!assignment) { + failureReason = "Validation failed: Cannot find assignment with id " + assignmentId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message; + } +} + +// Validation 3 - Check the user has application granted +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + existingAccount = true; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +// Validation 4 - If account does not exist, provision it +if (!failureReason) { + if (!existingAccount) { + try { + var request = requestObj.request; + var payload = { + "applicationId": applicationId, + "startDate": request.common.startDate, + "endDate": request.common.endDate, + "auditContext": {}, + "grantType": "request" + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + message; + } + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); ", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": "failureReason != null", + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d", + }, + ], + "script": "logger.info("Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "entitlementId": request.common.entitlementId, + "auditContext": {}, + "grantType": "request", + "requestId": requestObj.id, + }; + var queryParams = { + "_action": "add", + "initiatingUser": requestObj.requester.id + } + + var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message; + } + + var decision = {'status': 'complete', 'decision': 'approved'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + execution.setVariable('enableEndWait', false); + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} + +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-3f85f36eeeef", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if(skipApproval){ + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-3f85f36eeeef", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-0d53639996da", + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0d53639996da", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-f105ed2b352d", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-91769554db51", + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null, + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-91769554db51", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Create Removal Request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Create Removal Request failed: Error reading request with id " + requestId; +} + +if(!failureReason){ + try{ + var request = requestObj.request; + var newRequestPayload = { + "common":{ + "context": { + "type": "admin" + }, + "entitlementId": request.common.entitlementId, + "userId": request.common.userId, + "endDate": request.common.endDate, + "justification": "Request submitted automatically to remove access granted by request: " + requestId + } + }; + var queryParam = { + '_action': "publish" + } + openidm.action('iga/governance/requests/entitlementRemove', 'POST', newRequestPayload, queryParam) + }catch(e){ + logger.warn('Create Removal Request failed to create') + } + }", + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "phhNeDisable": { + "draft": null, + "published": { + "childType": false, + "description": "phh-ne-disable", + "displayName": "phh-ne-disable", + "id": "phhNeDisable", + "mutable": true, + "name": "phh-ne-disable", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 601, + "y": 255, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-99fdf317c49b", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 50, + "y": 250, + }, + "uiConfig": { + "scriptTask-99fdf317c49b": { + "x": 270.3999938964844, + "y": 250.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegate Sources", + "name": "scriptTask-99fdf317c49b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "/* + * Load Delegate Sources + * Queries users the current requester can act on behalf of + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +try { + // Get the request to find requester + var requestObj = openidm.read('iga/governance/requests/' + requestId); + var requesterId = requestObj.requester.id; + var requesterIdOnly = requesterId.replace("managed/user/", ""); + + console.log("=== Loading Delegation Options ==="); + console.log("Requester ID: " + requesterIdOnly); + + // Query users where current user is the manager + var queryParams = { + "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"', + "_fields": "userName,givenName,sn,mail,_id" + }; + + var results = openidm.query("managed/alpha_user", queryParams); + console.log("Results: " + results); + + // Build options array + var options = []; + + if (results.resultCount > 0) { + results.result.forEach(function(user) { + options.push({ + "value": user._id, + "label": user.givenName + " " + user.sn + " (" + user.userName + ")" + }); + }); + + logger.info("Found " + options.length + " delegation options"); + } else { + logger.warn("No direct reports found for requester"); + options.push({ + "value": "", + "label": "No direct reports found" + }); + } + + // Store options as JSON string + execution.setVariable("delegationOptions", JSON.stringify(options)); + execution.setVariable("hasDelegationOptions", results.resultCount > 0); + execution.setVariable("delegationOptionsCount", results.resultCount); + +} catch (e) { + logger.error("Error loading delegation options: " + e.message); + execution.setVariable("delegationOptions", "[]"); + execution.setVariable("hasDelegationOptions", false); + execution.setVariable("delegationOptionsCount", 0); +} + +logger.info("=== Delegation Options Loaded ===");", + }, + "type": "scriptTask", + }, + ], + }, + }, + "phhNewUserCreate": { + "draft": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1348, + "y": 177.5, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 177.5, + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 777, + "y": 226, + }, + "exclusiveGateway-621c9996676a": { + "x": 514, + "y": 153, + }, + "scriptTask-0e5b6187ea62": { + "x": 777, + "y": 80, + }, + "scriptTask-4e9121fe850a": { + "x": 210, + "y": 179.5, + }, + "scriptTask-626899b6e99a": { + "x": 1049, + "y": 97.66666666666667, + }, + "scriptTask-c58309b8c470": { + "x": 1049, + "y": 234.83333333333334, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("[phh] Creating User"); +function generateUsername(givenName, surname) { +const usernamePrefix = (givenName[0] + surname[0]).toLowerCase(); +const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]); +const usernames = data.result.map(user => user.userName); +let i = 1; +while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) { +i++; +} +return usernamePrefix + String(i).padStart(5, '0'); +} +function createUser(custom) { +var startDate = new Date(custom.startDate).toISOString(); +var endDate = new Date(custom.endDate).toISOString(); +var payload = { +"userName": custom.userName, +"givenName": custom.givenName, +"sn": custom.sn, +"mail": custom.mail, +"password": custom.password, +"frIndexedDate5":startDate, +"frIndexedDate4":endDate +}; +return openidm.create('managed/alpha_user', null, payload); +} +function process(requestObj) { +var custom = requestObj.request.custom +custom.userName = generateUsername(custom.givenName, custom.sn); +custom.password = 'Password!234'; +const result = createUser(custom); +return { outcome: "provisioned" }; +} +try { +const requestId = execution.getVariables().get("id"); +const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {}); +let decision = { status: "complete", "decision": "approved" }; +try { +const result = process(requestObj); +Object.assign(decision, result); +} catch (error) { +Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true }); +} +openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"}); +} catch (e) { +logger.error(\`Error reading request \${requestId}: \${e}\`); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +}", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1348, + "y": 177.5, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 177.5, + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 777, + "y": 226, + }, + "exclusiveGateway-621c9996676a": { + "x": 514, + "y": 153, + }, + "scriptTask-0e5b6187ea62": { + "x": 777, + "y": 80, + }, + "scriptTask-4e9121fe850a": { + "x": 210, + "y": 179.5, + }, + "scriptTask-626899b6e99a": { + "x": 1049, + "y": 97.66666666666667, + }, + "scriptTask-c58309b8c470": { + "x": 1049, + "y": 234.83333333333334, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("[phh] Creating User"); +function generateUsername(givenName, surname) { +const usernamePrefix = (givenName[0] + surname[0]).toLowerCase(); +const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]); +const usernames = data.result.map(user => user.userName); +let i = 1; +while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) { +i++; +} +return usernamePrefix + String(i).padStart(5, '0'); +} +function createUser(custom) { +var startDate = new Date(custom.startDate).toISOString(); +var endDate = new Date(custom.endDate).toISOString(); +var payload = { +"userName": custom.userName, +"givenName": custom.givenName, +"sn": custom.sn, +"mail": custom.mail, +"password": custom.password, +"frIndexedDate5":startDate, +"frIndexedDate4":endDate +}; +return openidm.create('managed/alpha_user', null, payload); +} +function process(requestObj) { +var custom = requestObj.request.custom +custom.userName = generateUsername(custom.givenName, custom.sn); +custom.password = 'Password!234'; +const result = createUser(custom); +return { outcome: "provisioned" }; +} +try { +const requestId = execution.getVariables().get("id"); +const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {}); +let decision = { status: "complete", "decision": "approved" }; +try { +const result = process(requestObj); +Object.assign(decision, result); +} catch (error) { +Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true }); +} +openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"}); +} catch (e) { +logger.error(\`Error reading request \${requestId}: \${e}\`); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +}", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + "testWorkflow1": { + "draft": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow4": { + "draft": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow5": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_5", + "displayName": "test_workflow_5", + "id": "testWorkflow5", + "mutable": true, + "name": "test_workflow_5", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow6": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_6", + "displayName": "test_workflow_6", + "id": "testWorkflow6", + "mutable": true, + "name": "test_workflow_6", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow7": { + "draft": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow8": { + "draft": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + "wfEntitlementExampleIsPrivileged": { + "draft": { + "childType": false, + "description": "wfEntitlementExampleIsPrivileged", + "displayName": "wfEntitlementExampleIsPrivileged", + "id": "wfEntitlementExampleIsPrivileged", + "mutable": true, + "name": "wfEntitlementExampleIsPrivileged", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2262, + "y": 220, + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + "x": 70, + "y": 176, + }, + "uiConfig": { + "approvalTask-63163dc11c1f": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "entitlementOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 722, + "y": 265, + }, + "approvalTask-77691047b28d": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.user.manager._refResourceId", + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1219, + "y": 273, + }, + "exclusiveGateway-48e748c42994": { + "x": 1917, + "y": 104, + }, + "exclusiveGateway-67a954f33919": { + "x": 462, + "y": 155, + }, + "inclusiveGateway-bcb05a148971": { + "x": 1216, + "y": 99, + }, + "scriptTask-0359a9d77ee2": { + "x": 1924, + "y": 258.6666666666667, + }, + "scriptTask-0b56191887de": { + "x": 1907, + "y": 367.33333333333337, + }, + "scriptTask-3eab1948f1ec": { + "x": 1532, + "y": 151.66666666666669, + }, + "scriptTask-5106f7a29d86": { + "x": 940, + "y": 210, + }, + "scriptTask-aec6c36b3a45": { + "x": 1567, + "y": 274.33333333333337, + }, + "scriptTask-e04f42607ba5": { + "x": 181, + "y": 178, + }, + "scriptTask-e21178ab80f7": { + "x": 724, + "y": 101, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": "logger.info("Running entitlement grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var assignmentId = null; +var app = null; +var assignment = null; +var existingAccount = false; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check entitlement exists +if (!failureReason) { + try { + assignment = openidm.read('managed/alpha_assignment/' + assignmentId); + if (!assignment) { + failureReason = "Validation failed: Cannot find assignment with id " + assignmentId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message; + } +} + +// Validation 3 - Check the user has application granted +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + existingAccount = true; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +// Validation 4 - If account does not exist, provision it +if (!failureReason) { + if (!existingAccount) { + try { + var request = requestObj.request; + var payload = { + "applicationId": applicationId, + "startDate": request.common.startDate, + "endDate": request.common.endDate, + "auditContext": {}, + "grantType": "request" + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + e.message; + } + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); ", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": "failureReason != null", + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Auto-Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "entitlementId": request.common.entitlementId, + "startDate": request.common.startDate, + "endDate": request.common.endDate, + "auditContext": {}, + "grantType": "request" + }; + var queryParams = { + "_action": "add" + } + + var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams); + } + catch (e) { + failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + e.message; + } + + var decision = {'status': 'complete', 'decision': 'approved'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +logger.info("Execution Content: " + content); +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var skipApproval = false; +var lineItemId = false; +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + lineItemId = requestObj.request.common.context.lineItemId; + if (context == 'admin') { + skipApproval = true; + } + } +} +catch (e) { + logger.info("Request Context Check failed "+e.message); +} + +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("lineItemId", lineItemId); +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var lineItemId = content.get('lineItemId'); +var queryParams = { + "_action": "update" +} +var lineItemParams = { + "_action": "updateRemediationStatus" +} +try { + var decision = { + "decision": "approved", + "comment": "Request auto-approved due to request context: " + context + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = {'comment': failureReason, 'failure': true}; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); + + +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-63163dc11c1f", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Privileged", + "name": "scriptTask-5106f7a29d86", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-bcb05a148971", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var requestObj = null; +var entId = null; +var entGlossary = null; +var entPriv = null; + +//Check entitlement exists and grab entitlement info +try { + requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + entId = requestObj.assignment.id; +} +catch (e) { + logger.info("Validation failed: Error reading entitlement grant request with id " + requestId); +} +//Check glossary for entitlement exists and grab glossary info +try { + entGlossary = openidm.action('iga/governance/resource/' + entId + '/glossary', 'GET', {}, {}); + // Sets entPriv based on the glossary contents, if present, otherwise defaults to true + entPriv = (entGlossary.hasOwnProperty("isPrivileged")) ? entGlossary.isPrivileged : true; + //Sets entPriv based on glossary contents, if present, otherwise defaults to false + //entPriv = !!entGlossary.isPrivileged; + execution.setVariable("entPriv", entPriv); +} +catch (e) { + logger.info("Could not retrieve glossary with entId " + entId + " from entitlement grant request ID " + requestId); +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Inclusive Gateway", + "name": "inclusiveGateway-bcb05a148971", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "entPriv == true", + "outcome": "Privileged", + "step": "approvalTask-77691047b28d", + }, + { + "condition": "entPriv == false", + "outcome": "NotPrivileged", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.user.manager._refResourceId", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-3eab1948f1ec", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-77691047b28d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-5106f7a29d86", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-63163dc11c1f", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export --workflow-id testWorkflow1 --no-coords --no-deps -f testWorkflowExportFile1.json": should export workflow 'testWorkflow1' with no coordinates and no dependencies 1`] = `0`; + +exports[`frodo iga workflow export "frodo iga workflow export --workflow-id testWorkflow1 --no-coords --no-deps -f testWorkflowExportFile1.json": should export workflow 'testWorkflow1' with no coordinates and no dependencies 2`] = `""`; + +exports[`frodo iga workflow export "frodo iga workflow export --workflow-id testWorkflow1 --no-coords --no-deps -f testWorkflowExportFile1.json": should export workflow 'testWorkflow1' with no coordinates and no dependencies 3`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✔ Exported workflow testWorkflow1 to file +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export --workflow-id testWorkflow1 --no-coords --no-deps -f testWorkflowExportFile1.json": should export workflow 'testWorkflow1' with no coordinates and no dependencies: testWorkflowExportFile1.json 1`] = ` +{ + "emailTemplate": {}, + "event": {}, + "meta": Any, + "requestForm": {}, + "requestType": {}, + "variable": {}, + "workflow": { + "testWorkflow1": { + "draft": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + }, + "emailTask-2068f5d711c8": {}, + "emailTask-881f2975e240": {}, + "exclusiveGateway-94bc3d35f3b4": {}, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)()", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata 1`] = `0`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata 2`] = `""`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata 3`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✔ Exported workflow testWorkflow1 to file +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1.workflow.json 1`] = ` +{ + "emailTemplate": { + "FrodoTestEmailTemplate1": { + "_id": "emailTemplate/FrodoTestEmailTemplate1", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template One", + "enabled": true, + "from": "", + "message": { + "en": "

Click to reset your password

Password reset link

", + "fr": "

Cliquez pour réinitialiser votre mot de passe

Mot de passe lien de réinitialisation

", + }, + "mimeType": "text/html", + "subject": { + "en": "Reset your password", + "fr": "Réinitialisez votre mot de passe", + }, + }, + "FrodoTestEmailTemplate2": { + "_id": "emailTemplate/FrodoTestEmailTemplate2", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template Two", + "enabled": true, + "from": "", + "message": { + "en": "

This is your one-time password:

{{object.description}}

", + }, + "mimeType": "text/html", + "subject": { + "en": "One-Time Password for login", + }, + }, + "FrodoTestEmailTemplate3": { + "_id": "emailTemplate/FrodoTestEmailTemplate3", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template Three", + "enabled": true, + "from": "", + "message": { + "en": "

You started a login or profile update that requires MFA.

Click to Proceed

", + }, + "mimeType": "text/html", + "subject": { + "en": "Multi-Factor Email for Identity Cloud login", + }, + }, + "frodoTestEmailTemplateFour": { + "_id": "emailTemplate/frodoTestEmailTemplateFour", + "defaultLocale": "en", + "description": "Frodo email template four", + "displayName": "Frodo Test Email Template Four", + "enabled": true, + "from": ""From" ", + "html": { + "en": "

alt text

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

", + }, + "message": { + "en": "

alt text

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

", + }, + "mimeType": "text/html", + "styles": "body { + background-color: #324054; + color: #455469; + padding: 60px; + text-align: center +} + a { + text-decoration: none; + color: #109cf1; +} + .content { + background-color: #fff; + border-radius: 4px; + margin: 0 auto; + padding: 48px; + width: 235px +} +", + "subject": { + "en": "Subject", + }, + "templateId": "frodoTestEmailTemplateFour", + }, + }, + "event": { + "2a441af0-d057-46a1-996b-1f3ff2725122": { + "action": { + "name": "testWorkflow1", + "parameters": { + "var1": "val1", + "var2": "val2", + "var3": "val3", + }, + "type": "orchestration", + }, + "condition": { + "filter": { + "or": [ + { + "contains": { + "in_string": "user.before.city", + "search_string": { + "literal": "a", + }, + }, + }, + { + "not_contains": { + "in_string": "user.after.city", + "search_string": { + "literal": "b", + }, + }, + }, + { + "equals": { + "left": "user.before.city", + "right": { + "literal": "c", + }, + }, + }, + { + "not_equals": { + "left": "user.after.city", + "right": { + "literal": "d", + }, + }, + }, + { + "starts_with": { + "prefix": { + "literal": "e", + }, + "value": "user.before.city", + }, + }, + { + "ends_with": { + "suffix": { + "literal": "f", + }, + "value": "user.after.city", + }, + }, + { + "not_equals": { + "left": "user.before.city", + "right": "user.after.city", + }, + }, + { + "equals": { + "left": "user.before.city", + "right": "user.after.city", + }, + }, + { + "and": [ + { + "gte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 1, + }, + }, + }, + { + "gt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 2, + }, + }, + }, + { + "lte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 3, + }, + }, + }, + { + "lt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 4, + }, + }, + }, + ], + }, + ], + }, + "version": "v2", + }, + "description": "Test event description", + "entityType": "user", + "id": "2a441af0-d057-46a1-996b-1f3ff2725122", + "metadata": { + "createdDate": "2026-03-04T22:40:13.818750214Z", + }, + "mutationType": "create", + "name": "test_workflow_event_1", + "owners": [ + { + "givenName": "Preston", + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "mail": "test@test.com", + "sn": "Test", + "userName": "PrestonIGATestUser", + }, + ], + "status": "active", + }, + }, + "requestForm": { + "9e3fc668-4e96-4b03-9605-38b830bea26c": { + "assignments": [ + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:09.860613713Z", + }, + "objectId": "requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc", + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:10.907366203Z", + }, + "objectId": "workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915", + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:11.933983845Z", + }, + "objectId": "workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "This is a test request form", + "form": {}, + "id": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:08.831569376Z", + }, + "name": "test_workflow_request_form_2", + "type": "request", + }, + "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9": { + "assignments": [ + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:03.856752543Z", + }, + "objectId": "workflow/testWorkflow3/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:01.849201534Z", + }, + "objectId": "workflow/testWorkflow1/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:02.84761136Z", + }, + "objectId": "workflow/testWorkflow2/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:04.870872677Z", + }, + "objectId": "workflow/testWorkflow4/node/approvalTask-7e33e73d6763", + }, + ], + "categories": { + "applicationType": null, + "objectType": "Group", + "operation": "create", + }, + "description": "This is a test application request form", + "form": {}, + "id": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:00.809825423Z", + }, + "name": "test_workflow_request_form_1", + "type": "applicationRequest", + }, + }, + "requestType": { + "af4a6f84-f9a9-4f8d-82ae-649639debabc": { + "custom": true, + "displayName": "test_workflow_request_type_5", + "id": "af4a6f84-f9a9-4f8d-82ae-649639debabc", + "metadata": { + "createdDate": "2026-03-04T22:39:54.772364584Z", + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false, + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false, + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7, + }, + "isInternal": true, + "isRequired": false, + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + "isDraft": { + "isInternal": true, + "isRequired": false, + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3, + }, + "isInternal": true, + "isRequired": false, + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6, + }, + "isRequired": false, + "text": { + "defaultValue": "low", + }, + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5, + }, + "isInternal": true, + "isRequired": false, + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "blob": { + "type": "object", + }, + "context": { + "type": "object", + }, + "endDate": { + "type": "text", + }, + "expiryDate": { + "type": "text", + }, + "externalRequestId": { + "type": "text", + }, + "isDraft": { + "type": "boolean", + }, + "justification": { + "type": "text", + }, + "priority": { + "type": "text", + }, + "requestIdPrefix": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + "workflowId": { + "type": "text", + }, + }, + }, + ], + "custom": [ + {}, + ], + }, + "workflow": {}, + }, + "e9dcd66e-1388-4872-9790-66df2f44deef": { + "custom": true, + "displayName": "test_workflow_request_type_1", + "id": "e9dcd66e-1388-4872-9790-66df2f44deef", + "metadata": { + "createdDate": "2026-03-04T22:40:20.099572476Z", + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false, + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false, + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7, + }, + "isInternal": true, + "isRequired": false, + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + "isDraft": { + "isInternal": true, + "isRequired": false, + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3, + }, + "isInternal": true, + "isRequired": false, + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6, + }, + "isRequired": false, + "text": { + "defaultValue": "low", + }, + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5, + }, + "isInternal": true, + "isRequired": false, + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8, + }, + "isInternal": true, + "isRequired": false, + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7, + }, + "isChangable": false, + "isInternal": true, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "blob": { + "type": "object", + }, + "context": { + "type": "object", + }, + "endDate": { + "type": "text", + }, + "expiryDate": { + "type": "text", + }, + "externalRequestId": { + "type": "text", + }, + "isDraft": { + "type": "boolean", + }, + "justification": { + "type": "text", + }, + "priority": { + "type": "text", + }, + "requestIdPrefix": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + "workflowId": { + "type": "text", + }, + }, + }, + ], + "custom": [ + {}, + ], + }, + "validation": null, + "workflow": { + "id": "testWorkflow1", + }, + }, + }, + "variable": {}, + "workflow": { + "testWorkflow1": { + "draft": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow1/draft/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow1/published/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/draft/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/draft/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/published/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata: testWorkflowExportDir1/testWorkflow1/published/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata 1`] = `0`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata 2`] = `""`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata 3`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✔ Exported 14 workflows +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/createNonEmployee.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "CreateNonEmployee", + "displayName": "CreateNonEmployee", + "id": "createNonEmployee", + "mutable": true, + "name": "CreateNonEmployee", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1694, + "y": 154, + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + "x": 12, + "y": 110, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": "file://createNonEmployee/draft/approvalTask-74cf85c35437.workflow.js", + }, + "events": { + "escalationType": "script", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 732, + "y": 172, + }, + "exclusiveGateway-abbb089758c8": { + "x": 433, + "y": 89.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 928, + "y": 53.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 963, + "y": 223.015625, + }, + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 112.015625, + }, + "scriptTask-e8842de66fbb": { + "x": 718, + "y": 43.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://createNonEmployee/draft/approvalTask-74cf85c35437.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(1*24*60*60*1000))).toISOString()", + }, + "frequency": 1, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Create User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://createNonEmployee/draft/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://createNonEmployee/draft/scriptTask-aec6c36b3a45.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": "file://createNonEmployee/draft/scriptTask-ca9504ae90d8.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": "file://createNonEmployee/draft/scriptTask-e8842de66fbb.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/createNonEmployee/draft/approvalTask-74cf85c35437.workflow.js 1`] = ` +"(function() { + var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {}); + return systemSettings.defaultApprover; +})() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/createNonEmployee/draft/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"logger.info("Creating User"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +} +catch (e) { + failureReason = "Creating User: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var payload = requestObj.request.user.object; + + /** Create new user **/ + var result = openidm.create('managed/alpha_user', null, payload, queryParams); + logger.info("User created with userName " + result.userName + " and _id " + result._id + ".") + + /** Send new user email **/ + var body = { + subject: "Welcome " + payload.givenName + " " + payload.sn + "!", + to: payload.mail, + body: "Your new user has been created.\\n\\nUsername: " + payload.userName, + object: {} + }; + + if(payload.manager && payload.manager._ref){ + logger.info("Getting manager information for " + payload.userName + " create user welcome email.") + try { + var managerResult = openidm.read(payload.manager._ref); + body.cc = managerResult.mail; + } catch (e) { + logger.info("Unable to read manager information for " + payload.userName + " create user welcome email. " + e.message) + } + } + openidm.action("external/email", "send", body); + } + catch (e) { + failureReason = "Creating user failed: Error during creation of user " + payload.userName + ". Error message: " + e.message; + } + + var decision = {'status': 'complete', 'decision': 'approved'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/createNonEmployee/draft/scriptTask-aec6c36b3a45.workflow.js 1`] = ` +"logger.info("Create User - rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/createNonEmployee/draft/scriptTask-ca9504ae90d8.workflow.js 1`] = ` +"// This permission check script will check that the requester has proper privileges to +// create a user. If so, it will skip any approval process and directly move to create the new user. + +logger.info("Create User - Permission check"); +var content = execution.getVariables(); +var requestId = content.get('id'); +var skipApproval = false; + +try { + // Read the request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var requester = requestObj.requester + + if(requester.id.startsWith('managed/user/')){ + // If requester is a normal managed user, check that the user has permissions to create a user + var userId = requester.id.split('/'); + var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': userId[2], 'scopePermission': 'createUser', '_queryFilter': \`id+eq+'\` + userId[2] + \`'\`}) + if(user.result.length > 0){ + skipApproval = true; + } + } + else{ + // Tenant admins and system requests + skipApproval = true; + } +} +catch (e) { + logger.info("Request permission check failed: " + e.message); +} + +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/createNonEmployee/draft/scriptTask-e8842de66fbb.workflow.js 1`] = ` +"logger.info("Create User - marking request as auto approved."); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + "comment": "Request auto-approved due to requester having create user privileges." + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = {'comment': failureReason, 'failure': true}; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2822, + "y": 352, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1038.7499923706055, + "y": 469.76562881469727, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.2499923706055, + "y": 334.76562881469727, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1037.2499923706055, + "y": 601.7656288146973, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 682, + "y": 155, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.9999923706055, + "y": 736.7656288146973, + }, + "exclusiveGateway-5167870154a9": { + "x": 1855, + "y": 84, + }, + "exclusiveGateway-621c9996676a": { + "x": 433, + "y": 117.015625, + }, + "inclusiveGateway-2fbd3e7aa50c": { + "x": 803.3999938964844, + "y": 472.6125030517578, + }, + "inclusiveGateway-7d248125a9bd": { + "x": 2417, + "y": 43.015625, + }, + "inclusiveGateway-a71e67faaad1": { + "x": 1124, + "y": 93.015625, + }, + "scriptTask-0e5b6187ea62": { + "x": 889, + "y": 116.015625, + }, + "scriptTask-14acc58c28dd": { + "x": 2650, + "y": 85.015625, + }, + "scriptTask-3a74557440fb": { + "x": 2144, + "y": 62, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + "scriptTask-626899b6e99a": { + "x": 1549, + "y": 108, + }, + "scriptTask-744ef6a8b9a2": { + "x": 2151, + "y": 207.015625, + }, + "scriptTask-c444d08a6099": { + "x": 818.3999938964844, + "y": 348.6125030517578, + }, + "scriptTask-c58309b8c470": { + "x": 1554, + "y": 242, + }, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + "x": 1339, + "y": 85.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-626899b6e99a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-c58309b8c470.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": "failureReason != null", + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-3a74557440fb.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-744ef6a8b9a2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-4e9121fe850a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-0e5b6187ea62.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.startDate", + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null, + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-14acc58c28dd.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": "file://phhBasicApplicationGrant/draft/scriptTask-c444d08a6099.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "lob == "sales"", + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": "lob == "finance"", + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": "lob == "hr"", + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": "lob == "default"", + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2822, + "y": 352, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1038.7499923706055, + "y": 469.76562881469727, + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.2499923706055, + "y": 334.76562881469727, + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1037.2499923706055, + "y": 601.7656288146973, + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 682, + "y": 155, + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1039.9999923706055, + "y": 736.7656288146973, + }, + "exclusiveGateway-5167870154a9": { + "x": 1855, + "y": 84, + }, + "exclusiveGateway-621c9996676a": { + "x": 433, + "y": 117.015625, + }, + "inclusiveGateway-2fbd3e7aa50c": { + "x": 803.3999938964844, + "y": 472.6125030517578, + }, + "inclusiveGateway-7d248125a9bd": { + "x": 2417, + "y": 43.015625, + }, + "inclusiveGateway-a71e67faaad1": { + "x": 1124, + "y": 93.015625, + }, + "scriptTask-0e5b6187ea62": { + "x": 889, + "y": 116.015625, + }, + "scriptTask-14acc58c28dd": { + "x": 2650, + "y": 85.015625, + }, + "scriptTask-3a74557440fb": { + "x": 2144, + "y": 62, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + "scriptTask-626899b6e99a": { + "x": 1549, + "y": 108, + }, + "scriptTask-744ef6a8b9a2": { + "x": 2151, + "y": 207.015625, + }, + "scriptTask-c444d08a6099": { + "x": 818.3999938964844, + "y": 348.6125030517578, + }, + "scriptTask-c58309b8c470": { + "x": 1554, + "y": 242, + }, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate", + }, + "x": 1339, + "y": 85.015625, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-5167870154a9", + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-626899b6e99a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-c58309b8c470.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb", + }, + { + "condition": "failureReason != null", + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd", + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-3a74557440fb.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-744ef6a8b9a2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-4e9121fe850a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1", + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-0e5b6187ea62.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.startDate", + }, + }, + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37", + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd", + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null, + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-14acc58c28dd.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c", + }, + ], + "script": "file://phhBasicApplicationGrant/published/scriptTask-c444d08a6099.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "lob == "sales"", + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384", + }, + { + "condition": "lob == "finance"", + "outcome": "finance", + "step": "approvalTask-440960b2744d", + }, + { + "condition": "lob == "hr"", + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998", + }, + { + "condition": "lob == "default"", + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-0e5b6187ea62.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-3a74557440fb.workflow.js 1`] = ` +"logger.info("Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "applicationId": request.common.applicationId, + "auditContext": {}, + "grantType": "request", + "requestId": requestObj.id, + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message; + } + + var decision = {'status': 'complete'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + execution.setVariable('enableEndWait', false); + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-4e9121fe850a.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-14acc58c28dd.workflow.js 1`] = ` +"logger.info("Create Removal Request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Create Removal Request failed: Error reading request with id " + requestId; +} + +if(!failureReason){ + try{ + var request = requestObj.request; + var newRequestPayload = { + "common":{ + "context": { + "type": "admin" + }, + "applicationId": request.common.applicationId, + "userId": request.common.userId, + "endDate": request.common.endDate, + "justification": "Request submitted automatically to remove access granted by request: " + requestId + } + }; + var queryParam = { + '_action': "publish" + } + openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam) + }catch(e){ + logger.info("Create Removal Request failed to create request") + } + } +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-744ef6a8b9a2.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-626899b6e99a.workflow.js 1`] = ` +"logger.info("Running application grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var app = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check the user does not already have application granted +// Note: this is done at request submission time as well, the following is an example of how to check user's accounts +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-c444d08a6099.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ + +var content = execution.getVariables(); +var requestId = content.get('id'); +var requestObj = null; +var appId = null; +var appGlossary = null; +var lob = null; +try { +requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +appId = requestObj.application.id; +} +catch (e) { +logger.info("Validation failed: Error reading application grant request with id " + requestId); +} +try { +appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {}); +lob = appGlossary.lineOfBusiness || "default" +execution.setVariable("lob", lob); +} +catch (e) { +logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/draft/scriptTask-c58309b8c470.workflow.js 1`] = ` +"logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-0e5b6187ea62.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-3a74557440fb.workflow.js 1`] = ` +"logger.info("Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "applicationId": request.common.applicationId, + "auditContext": {}, + "grantType": "request", + "requestId": requestObj.id, + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Provisioning failed: Error provisioning account to user " + request.common.userId + " for application " + request.common.applicationId + ". Error message: " + message; + } + + var decision = {'status': 'complete'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + execution.setVariable('enableEndWait', false); + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-4e9121fe850a.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-14acc58c28dd.workflow.js 1`] = ` +"logger.info("Create Removal Request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Create Removal Request failed: Error reading request with id " + requestId; +} + +if(!failureReason){ + try{ + var request = requestObj.request; + var newRequestPayload = { + "common":{ + "context": { + "type": "admin" + }, + "applicationId": request.common.applicationId, + "userId": request.common.userId, + "endDate": request.common.endDate, + "justification": "Request submitted automatically to remove access granted by request: " + requestId + } + }; + var queryParam = { + '_action': "publish" + } + openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam) + }catch(e){ + logger.info("Create Removal Request failed to create request") + } + } +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-744ef6a8b9a2.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-626899b6e99a.workflow.js 1`] = ` +"logger.info("Running application grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var app = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check the user does not already have application granted +// Note: this is done at request submission time as well, the following is an example of how to check user's accounts +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + failureReason = "Validation failed: User with id " + requestObj.user.id + " already has effective application " + applicationId; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check effective applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-c444d08a6099.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ + +var content = execution.getVariables(); +var requestId = content.get('id'); +var requestObj = null; +var appId = null; +var appGlossary = null; +var lob = null; +try { +requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +appId = requestObj.application.id; +} +catch (e) { +logger.info("Validation failed: Error reading application grant request with id " + requestId); +} +try { +appGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {}); +lob = appGlossary.lineOfBusiness || "default" +execution.setVariable("lob", lob); +} +catch (e) { +logger.info("Could not retrieve glossary with appId " + appId + " from application grant request ID " + requestId); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBasicApplicationGrant/published/scriptTask-c58309b8c470.workflow.js 1`] = ` +"logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBirthrightRolesRequiringApproval.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "phh-birthright-roles-requiring-approval", + "displayName": "phh-birthright-roles-requiring-approval", + "id": "phhBirthrightRolesRequiringApproval", + "mutable": true, + "name": "phh-birthright-roles-requiring-approval", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 1303, + "y": 236, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-0e64ff0c1695", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 70, + "y": 151, + }, + "uiConfig": { + "approvalTask-f4e7324654b5": { + "actors": { + "isExpression": true, + "value": "file://phhBirthrightRolesRequiringApproval/published/approvalTask-f4e7324654b5.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 440, + "y": 126.5, + }, + "scriptTask-0e64ff0c1695": { + "x": 210, + "y": 153, + }, + "scriptTask-792e240778b1": { + "x": 712, + "y": 226, + }, + "scriptTask-ad05a46c2e74": { + "x": 712, + "y": 80, + }, + "scriptTask-aecf833994d2": { + "x": 1032, + "y": 153, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Debug Task", + "name": "scriptTask-0e64ff0c1695", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "approvalTask-f4e7324654b5", + }, + ], + "script": "file://phhBirthrightRolesRequiringApproval/published/scriptTask-0e64ff0c1695.workflow.js", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://phhBirthrightRolesRequiringApproval/published/approvalTask-f4e7324654b5.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-792e240778b1", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-ad05a46c2e74", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-f4e7324654b5", + "type": "approvalTask", + }, + { + "displayName": "Look Up Roles and Request", + "name": "scriptTask-792e240778b1", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBirthrightRolesRequiringApproval/published/scriptTask-792e240778b1.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Finalize Request on Reject", + "name": "scriptTask-ad05a46c2e74", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-aecf833994d2", + }, + ], + "script": "file://phhBirthrightRolesRequiringApproval/published/scriptTask-ad05a46c2e74.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Failure Handler", + "name": "scriptTask-aecf833994d2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhBirthrightRolesRequiringApproval/published/scriptTask-aecf833994d2.workflow.js", + }, + "type": "scriptTask", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBirthrightRolesRequiringApproval/published/approvalTask-f4e7324654b5.workflow.js 1`] = ` +"(function() { +var content = execution.getVariables(); +var requestId = content.get('id'); +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var approverId = ''; +if (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id } +return [{ +"id": "managed/user/" + approverId, +"permissions": { +"approve": true, +"reject": true, +"reassign": true, +"modify": true, +"comment": true +} +}]; +})() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBirthrightRolesRequiringApproval/published/scriptTask-0e64ff0c1695.workflow.js 1`] = ` +"logger.info("Running user update event"); +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var context = null; +var skipApproval = false; +var userObj = null; +var userId = null; +// Read event user information from request object +try { +var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +logger.error("requestObj "+JSON.stringify(requestObj)); +if (requestObj.request.common.context) { +context = requestObj.request.common.context.type; +if (context == 'admin') { +skipApproval = true; +} +} +userObj = requestObj.request.common.blob.after; +userId = userObj.userId; +} +catch (e) { +failureReason = "Validation failed: Error reading request with id " + requestId; +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBirthrightRolesRequiringApproval/published/scriptTask-792e240778b1.workflow.js 1`] = ` +"logger.info("Running user update event"); +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var userObj = null; +var userId = null; +// +// Read event user information from request object +try { +var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +userObj = requestObj.request.common.blob.after; +userId = userObj.userId; +} +catch (e) { +failureReason = "Validation failed: Error reading request with id " + requestId; +} +///Get Roles from Role Variable +var roleNames = requestObj.request.common.blob.parameters.roleNames.split(','); +logger.error("UpdateRequest with roleNames: " + roleNames); +// Look up roles in catalog +var operand = []; +for (var index in roleNames) { +var role = roleNames[index]; +var roleClean = role.trim(); +operand.push({operator: "EQUALS", operand: { targetName: "role.name", targetValue: roleClean }}) +} +var body = { targetFilter: {operator: "OR", operand: operand}}; +var catalog = openidm.action("iga/governance/catalog/search", "POST", body); +var catalogResults = catalog.result; +// Define request catalogs key +var catalogBody = []; +for (var idx in catalogResults) { +var catalog = catalogResults[idx]; +catalogBody.push({type: "role", id: catalog.id}) +} +// Define request payload +var requestBody = { +priority: "low", +accessModifier: "add", +justification: "Request submitted on user update.", +users: [ userId ], +catalogs: catalogBody, +context: { +type: "NoAdmin" +} +}; +// Create requests +try { +logger.error("DRLCREATING REQUST for "+JSON.stringify(body)); +openidm.action("iga/governance/requests", "POST", requestBody, {_action: "create"}) +} +catch (e) { +failureReason = "Unable to generate requests for roles"; +} +// Update event request as final +var decision = failureReason ? +{'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true} : +{'status': 'complete', 'outcome': 'fulfilled', 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +logger.info("Request " + requestId + " completed."); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBirthrightRolesRequiringApproval/published/scriptTask-ad05a46c2e74.workflow.js 1`] = ` +"logger.info("Finalize Request:BirthRight Roles that need Approval"); +var content = execution.getVariables(); +var requestId = content.get('requestId'); +var failureState = content.get('failureState'); +if (!failureState) { +try { +// Update event request as final +var decision = {'status': 'complete', 'outcome': 'fulfilled', 'decision': 'rejected'} +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +logger.info("Request " + requestId + " completed."); +} +catch (e) { +execution.setVariable("failureState", "Unable to finalize request."); +} +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhBirthrightRolesRequiringApproval/published/scriptTask-aecf833994d2.workflow.js 1`] = ` +"logger.info("Failure Handler: BirthRight Roles that need Approval "); +var content = execution.getVariables(); +var requestId = content.get('requestId'); +var failureReason = content.get('failureReason'); +// Update event request as final +if (failureReason) { +var decision = {'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true} +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +logger.info("Request " + requestId + " completed."); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhDelegatedUserDisableWorkflow.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "phh-delegated-user-disable-workflow", + "displayName": "phh-delegated-user-disable-workflow", + "id": "phhDelegatedUserDisableWorkflow", + "mutable": true, + "name": "phh-delegated-user-disable-workflow", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 1563, + "y": 352, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-3d854e98930e", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 50, + "y": 250, + }, + "uiConfig": { + "approvalTask-bebe49db4dac": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1177, + "y": 60.61250305175781, + }, + "exclusiveGateway-26e0a9262468": { + "x": 438.3999938964844, + "y": 232.6125030517578, + }, + "exclusiveGateway-d5b7b2e2a80a": { + "x": 931.7999877929688, + "y": 111.61250305175781, + }, + "scriptTask-38eb13f4deca": { + "x": 648.3999938964844, + "y": 343.6125030517578, + }, + "scriptTask-3d854e98930e": { + "x": 175.39999389648438, + "y": 251.6125030517578, + }, + "scriptTask-449aac6b18b8": { + "x": 1149.3999938964844, + "y": 236.6125030517578, + }, + "scriptTask-4f4b87291099": { + "x": 1442.9999694824219, + "y": 101.61250305175781, + }, + "scriptTask-8e24794e9be4": { + "x": 649.3999938964844, + "y": 132.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegation Info", + "name": "scriptTask-3d854e98930e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-26e0a9262468", + }, + ], + "script": "file://phhDelegatedUserDisableWorkflow/published/scriptTask-3d854e98930e.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Auth Check", + "name": "exclusiveGateway-26e0a9262468", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "hasDelegationAuthority == true", + "outcome": "validationSuccess", + "step": "scriptTask-8e24794e9be4", + }, + { + "condition": "hasDelegationAuthority == false", + "outcome": "validationFailure", + "step": "scriptTask-38eb13f4deca", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - No Authority", + "name": "scriptTask-38eb13f4deca", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhDelegatedUserDisableWorkflow/published/scriptTask-38eb13f4deca.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Validate Delegation Request", + "name": "scriptTask-8e24794e9be4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-d5b7b2e2a80a", + }, + ], + "script": "file://phhDelegatedUserDisableWorkflow/published/scriptTask-8e24794e9be4.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Passed?", + "name": "exclusiveGateway-d5b7b2e2a80a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "validationPassed == true", + "outcome": "validationSuccess", + "step": "approvalTask-bebe49db4dac", + }, + { + "condition": "validationPassed == false", + "outcome": "validationFailure", + "step": "scriptTask-449aac6b18b8", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Reject - Validation Failed", + "name": "scriptTask-449aac6b18b8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhDelegatedUserDisableWorkflow/published/scriptTask-449aac6b18b8.workflow.js", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "doNothing", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-4f4b87291099", + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-bebe49db4dac", + "type": "approvalTask", + }, + { + "displayName": "Disable User Account", + "name": "scriptTask-4f4b87291099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhDelegatedUserDisableWorkflow/published/scriptTask-4f4b87291099.workflow.js", + }, + "type": "scriptTask", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhDelegatedUserDisableWorkflow/published/scriptTask-3d854e98930e.workflow.js 1`] = ` +"/* + * Load Delegation Information + * Populates available direct reports for the requester + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +console.log("=== Load Delegation Info Start ==="); +console.log("Request ID: " + requestId); + +try { + // Get the request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var requesterId = requestObj.requester.id; + var requesterIdOnly = requesterId.replace("managed/user/", ""); + + console.log("Requester ID: " + requesterIdOnly); + + // Query users where current user is the manager + var queryParams = { + "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"', + "_fields": "userName,givenName,sn,_id" + }; + + var results = openidm.query("managed/alpha_user", queryParams); + + // Build a formatted list for display + var directReportsList = ""; + var directReportsCount = 0; + + if (results.resultCount > 0) { + directReportsList = "You can act on behalf of the following users:\\n\\n"; + results.result.forEach(function(user) { + directReportsList += "• " + user.userName + " (" + user.givenName + " " + user.sn + ")\\n"; + }); + directReportsCount = results.resultCount; + logger.info("Found " + directReportsCount + " direct reports"); + } else { + directReportsList = "You do not have any direct reports in the system.\\n\\nYou cannot submit delegation requests without direct reports."; + logger.warn("No direct reports found"); + } + + // Store variables for later use + execution.setVariable("directReportsList", directReportsList); + execution.setVariable("directReportsCount", directReportsCount); + execution.setVariable("hasDelegationAuthority", directReportsCount > 0); + + // Update the request to populate the helper field + // This updates the form display for the user + var updatePayload = { + "request": { + "common": { + "blob": { + "form": { + "availableDirectReports": directReportsList + } + } + } + } + }; + + openidm.patch('iga/governance/requests/' + requestId, null, [ + { + "operation": "add", + "field": "/request/common/blob/form/availableDirectReports", + "value": directReportsList + } + ]); + + console.log("Direct reports list populated in form"); + +} catch (e) { + logger.error("Error loading delegation info: " + e.message); + execution.setVariable("hasDelegationAuthority", false); + execution.setVariable("directReportsCount", 0); + execution.setVariable("directReportsList", "Error loading your direct reports. Please contact your administrator."); +} + +console.log("=== Load Delegation Info Complete ==="); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhDelegatedUserDisableWorkflow/published/scriptTask-4f4b87291099.workflow.js 1`] = ` +"/* + * Fulfillment - Disable User Account + * Disables the target user's account + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); +var targetUserId = content.get('targetUserId'); +var justification = content.get('justification'); +var actingPrincipalUserName = content.get('actingPrincipalUserName'); + +console.log("=== Fulfillment Start ==="); +console.log("Disabling user ID: " + targetUserId); + +try { + // Read current user state + var targetUser = openidm.read("managed/alpha_user/" + targetUserId); + + if (!targetUser) { + throw new Error("Target user not found: " + targetUserId); + } + + console.log("Current user status: " + (targetUser.accountStatus || "active")); + + // Prepare patch operations to disable the account + var patchOperations = [ + { + "operation": "replace", + "field": "/accountStatus", + "value": "inactive" + } + ]; + + // Add a description/note about the disable action + if (targetUser.description) { + patchOperations.push({ + "operation": "replace", + "field": "/description", + "value": targetUser.description + "\\n[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification + }); + } else { + patchOperations.push({ + "operation": "add", + "field": "/description", + "value": "[" + new Date().toISOString() + "] Disabled via delegation by " + actingPrincipalUserName + ". Reason: " + justification + }); + } + + // Execute the patch + var updateResult = openidm.patch("managed/alpha_user/" + targetUserId, null, patchOperations); + + console.log("User " + targetUser.userName + " successfully disabled"); + console.log("Account status set to: inactive"); + + // Set success variables + execution.setVariable("fulfillmentStatus", "completed"); + execution.setVariable("fulfillmentMessage", "User account " + targetUser.userName + " has been successfully disabled"); + + // Update request with completion details + try { + var requestUpdate = { + 'status': 'complete', + 'decision': 'approved' + }; + + openidm.action('iga/governance/requests/' + requestId, 'POST', requestUpdate, {'_action': 'update'}); + } catch (updateError) { + console.log("Could not update request status: " + updateError.message); + } + +} catch (e) { + logger.error("Fulfillment error: " + e.message); + execution.setVariable("fulfillmentStatus", "failed"); + execution.setVariable("fulfillmentMessage", "Error disabling user: " + e.message); + + // Don't throw - let workflow complete but mark as failed + // You might want to send a notification here +} + +console.log("=== Fulfillment Complete ==="); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhDelegatedUserDisableWorkflow/published/scriptTask-8e24794e9be4.workflow.js 1`] = ` +"/* + * Validate Delegation Request + * Validates all user inputs and delegation authority + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +console.log("=== Validation Start ==="); + +var validationPassed = false; +var validationErrors = []; +var actingPrincipalObject = null; +var targetUserObject = null; + +try { + // Get request object with form data + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + var requesterId = requestObj.requester.id; + var requesterIdOnly = requesterId.replace("managed/user/", ""); + + // Extract form values + var actingPrincipalUsername = requestObj.request.common.blob.form.actingPrincipalId; + var targetUserUsername = requestObj.request.common.blob.form.targetUserId; + var justification = requestObj.request.common.blob.form.justification; + + console.log("Acting Principal Username: " + actingPrincipalUsername); + console.log("Target User Username: " + targetUserUsername); + + // Validate acting principal + if (!actingPrincipalUsername || actingPrincipalUsername.trim() === "") { + validationErrors.push("Acting Principal username is required"); + } else { + try { + var actingPrincipalQuery = { + "_queryFilter": 'userName eq "' + actingPrincipalUsername.trim() + '"' + }; + var actingPrincipalResults = openidm.query("managed/alpha_user", actingPrincipalQuery); + + if (actingPrincipalResults.resultCount === 0) { + validationErrors.push("Acting Principal user not found: " + actingPrincipalUsername); + } else if (actingPrincipalResults.resultCount > 1) { + validationErrors.push("Multiple users found with username: " + actingPrincipalUsername); + } else { + actingPrincipalObject = actingPrincipalResults.result[0]; + + // Verify requester is manager of acting principal + if (!actingPrincipalObject.manager || !actingPrincipalObject.manager._id) { + validationErrors.push("Acting Principal does not have a manager assigned"); + } else if (actingPrincipalObject.manager._id !== requesterIdOnly) { + validationErrors.push("You are not the manager of " + actingPrincipalUsername + ". You can only act on behalf of your direct reports."); + } else { + console.log("Acting Principal validated: " + actingPrincipalObject.userName); + } + } + } catch (e) { + validationErrors.push("Error validating Acting Principal: " + e.message); + } + } + + // Validate target user + if (!targetUserUsername || targetUserUsername.trim() === "") { + validationErrors.push("Target User username is required"); + } else { + try { + var targetUserQuery = { + "_queryFilter": 'userName eq "' + targetUserUsername.trim() + '"' + }; + var targetUserResults = openidm.query("managed/alpha_user", targetUserQuery); + + if (targetUserResults.resultCount === 0) { + validationErrors.push("Target User not found: " + targetUserUsername); + } else if (targetUserResults.resultCount > 1) { + validationErrors.push("Multiple users found with username: " + targetUserUsername); + } else { + targetUserObject = targetUserResults.result[0]; + + // Verify user type is External + if (targetUserObject.userType !== "External") { + validationErrors.push("Target User must be of type 'External'. User " + targetUserUsername + " is type: " + (targetUserObject.userType || "Unknown")); + } else { + console.log("Target User validated: " + targetUserObject.userName); + } + } + } catch (e) { + validationErrors.push("Error validating Target User: " + e.message); + } + } + + // Validate justification + if (!justification || justification.trim() === "") { + validationErrors.push("Justification is required"); + } else if (justification.trim().length < 10) { + validationErrors.push("Justification must be at least 10 characters"); + } + + // Prevent self-disable via delegation + if (actingPrincipalObject && targetUserObject && actingPrincipalObject._id === targetUserObject._id) { + validationErrors.push("Cannot disable the same user you are acting on behalf of"); + } + + // Check if all validations passed + if (validationErrors.length === 0) { + validationPassed = true; + + // Store user details for display in approval + execution.setVariable("actingPrincipalUserName", actingPrincipalObject.userName); + execution.setVariable("actingPrincipalFullName", actingPrincipalObject.givenName + " " + actingPrincipalObject.sn); + execution.setVariable("actingPrincipalId", actingPrincipalObject._id); + + execution.setVariable("targetUserUserName", targetUserObject.userName); + execution.setVariable("targetUserFullName", targetUserObject.givenName + " " + targetUserObject.sn); + execution.setVariable("targetUserId", targetUserObject._id); + + execution.setVariable("justification", justification); + + console.log("All validations passed"); + } else { + console.log("Validation failed: " + validationErrors.join("; ")); + } + +} catch (e) { + validationPassed = false; + validationErrors.push("System error during validation: " + e.message); + console.log("Validation exception: " + e.message); +} + +// Set workflow variables +execution.setVariable("validationPassed", validationPassed); +execution.setVariable("validationErrors", validationErrors.join("\\n")); + +console.log("=== Validation Complete: " + (validationPassed ? "PASSED" : "FAILED") + " ==="); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhDelegatedUserDisableWorkflow/published/scriptTask-38eb13f4deca.workflow.js 1`] = ` +"/* + * Auto-Reject - No Delegation Authority + * Rejects request if user has no direct reports + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +console.log("Auto-rejecting request " + requestId + " - no delegation authority"); + +try { + var decision = { + 'decision': 'rejected', + 'status': 'complete', + 'comment': 'Request automatically rejected: You do not have any direct reports in the system. You cannot submit delegation requests without having direct reports assigned to you.\\n\\nPlease contact your administrator if you believe this is an error.' + }; + + var updateParams = { + '_action': 'update' + }; + + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams); + + console.log("Request " + requestId + " rejected successfully"); + +} catch (e) { + console.log("Error rejecting request: " + e.message); + throw e; +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhDelegatedUserDisableWorkflow/published/scriptTask-449aac6b18b8.workflow.js 1`] = ` +"/* + * Auto-Reject - Validation Failed + * Rejects request with detailed error messages + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); +var validationErrors = content.get('validationErrors') || "Validation failed"; + +console.log("Auto-rejecting request due to validation errors"); + +try { + var decision = { + 'decision': 'rejected', + 'status': 'complete', + 'comment': 'Request automatically rejected due to validation errors:\\n\\n' + validationErrors + '\\n\\nPlease correct the errors and submit a new request.' + }; + + var updateParams = { + '_action': 'update' + }; + + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams); + + console.log("Request " + requestId + " rejected - validation failed"); + +} catch (e) { + console.log("Error rejecting request: " + e.message); + throw e; +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "phh-InternalRoleEntitlementGrant", + "displayName": "phh-InternalRoleEntitlementGrant", + "id": "phhInternalRoleEntitlementGrant", + "mutable": true, + "name": "phh-InternalRoleEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2597, + "y": 322, + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 722, + "y": 156, + }, + "exclusiveGateway-48e748c42994": { + "x": 1731, + "y": 88.015625, + }, + "exclusiveGateway-67a954f33919": { + "x": 467, + "y": 121.015625, + }, + "inclusiveGateway-3f85f36eeeef": { + "x": 948, + "y": 57.015625, + }, + "inclusiveGateway-f105ed2b352d": { + "x": 2255, + "y": 48.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 1972, + "y": 119.015625, + }, + "scriptTask-0b56191887de": { + "x": 1979, + "y": 212.015625, + }, + "scriptTask-3eab1948f1ec": { + "x": 1434, + "y": 95.015625, + }, + "scriptTask-91769554db51": { + "x": 2561, + "y": 74.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1441, + "y": 268.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 186, + "y": 143.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 716, + "y": 74.015625, + }, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 1208, + "y": 30.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": "file://phhInternalRoleEntitlementGrant/draft/scriptTask-3eab1948f1ec.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": "failureReason != null", + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhInternalRoleEntitlementGrant/draft/scriptTask-0b56191887de.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d", + }, + ], + "script": "file://phhInternalRoleEntitlementGrant/draft/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhInternalRoleEntitlementGrant/draft/scriptTask-aec6c36b3a45.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "file://phhInternalRoleEntitlementGrant/draft/scriptTask-e04f42607ba5.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-3f85f36eeeef", + }, + ], + "script": "file://phhInternalRoleEntitlementGrant/draft/scriptTask-e21178ab80f7.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-3f85f36eeeef", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-0d53639996da", + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Wait Task", + "name": "waitTask-0d53639996da", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-f105ed2b352d", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-91769554db51", + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null, + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-91769554db51", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhInternalRoleEntitlementGrant/draft/scriptTask-91769554db51.workflow.js", + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant/draft/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"logger.info("Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "entitlementId": request.common.entitlementId, + "auditContext": {}, + "grantType": "request", + "requestId": requestObj.id, + }; + var queryParams = { + "_action": "add", + "initiatingUser": requestObj.requester.id + } + + var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + message; + } + + var decision = {'status': 'complete', 'decision': 'approved'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + execution.setVariable('enableEndWait', false); + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant/draft/scriptTask-0b56191887de.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant/draft/scriptTask-3eab1948f1ec.workflow.js 1`] = ` +"logger.info("Running entitlement grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var assignmentId = null; +var app = null; +var assignment = null; +var existingAccount = false; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check entitlement exists +if (!failureReason) { + try { + assignment = openidm.read('managed/alpha_assignment/' + assignmentId); + if (!assignment) { + failureReason = "Validation failed: Cannot find assignment with id " + assignmentId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message; + } +} + +// Validation 3 - Check the user has application granted +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + existingAccount = true; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +// Validation 4 - If account does not exist, provision it +if (!failureReason) { + if (!existingAccount) { + try { + var request = requestObj.request; + var payload = { + "applicationId": applicationId, + "startDate": request.common.startDate, + "endDate": request.common.endDate, + "auditContext": {}, + "grantType": "request" + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + var err = e.javaException; + err = JSON.parse(err.detail); + var message = err && err.body ? err.body.response : e.message; + failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + message; + } + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant/draft/scriptTask-91769554db51.workflow.js 1`] = ` +"logger.info("Create Removal Request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Create Removal Request failed: Error reading request with id " + requestId; +} + +if(!failureReason){ + try{ + var request = requestObj.request; + var newRequestPayload = { + "common":{ + "context": { + "type": "admin" + }, + "entitlementId": request.common.entitlementId, + "userId": request.common.userId, + "endDate": request.common.endDate, + "justification": "Request submitted automatically to remove access granted by request: " + requestId + } + }; + var queryParam = { + '_action': "publish" + } + openidm.action('iga/governance/requests/entitlementRemove', 'POST', newRequestPayload, queryParam) + }catch(e){ + logger.warn('Create Removal Request failed to create') + } + } +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant/draft/scriptTask-aec6c36b3a45.workflow.js 1`] = ` +"logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant/draft/scriptTask-e04f42607ba5.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} + +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhInternalRoleEntitlementGrant/draft/scriptTask-e21178ab80f7.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if(skipApproval){ + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNeDisable.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "phh-ne-disable", + "displayName": "phh-ne-disable", + "id": "phhNeDisable", + "mutable": true, + "name": "phh-ne-disable", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 601, + "y": 255, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-99fdf317c49b", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 50, + "y": 250, + }, + "uiConfig": { + "scriptTask-99fdf317c49b": { + "x": 270.3999938964844, + "y": 250.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegate Sources", + "name": "scriptTask-99fdf317c49b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhNeDisable/published/scriptTask-99fdf317c49b.workflow.js", + }, + "type": "scriptTask", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNeDisable/published/scriptTask-99fdf317c49b.workflow.js 1`] = ` +"/* + * Load Delegate Sources + * Queries users the current requester can act on behalf of + */ + +var content = execution.getVariables(); +var requestId = content.get('_id'); + +try { + // Get the request to find requester + var requestObj = openidm.read('iga/governance/requests/' + requestId); + var requesterId = requestObj.requester.id; + var requesterIdOnly = requesterId.replace("managed/user/", ""); + + console.log("=== Loading Delegation Options ==="); + console.log("Requester ID: " + requesterIdOnly); + + // Query users where current user is the manager + var queryParams = { + "_queryFilter": 'manager._id eq "' + requesterIdOnly + '"', + "_fields": "userName,givenName,sn,mail,_id" + }; + + var results = openidm.query("managed/alpha_user", queryParams); + console.log("Results: " + results); + + // Build options array + var options = []; + + if (results.resultCount > 0) { + results.result.forEach(function(user) { + options.push({ + "value": user._id, + "label": user.givenName + " " + user.sn + " (" + user.userName + ")" + }); + }); + + logger.info("Found " + options.length + " delegation options"); + } else { + logger.warn("No direct reports found for requester"); + options.push({ + "value": "", + "label": "No direct reports found" + }); + } + + // Store options as JSON string + execution.setVariable("delegationOptions", JSON.stringify(options)); + execution.setVariable("hasDelegationOptions", results.resultCount > 0); + execution.setVariable("delegationOptionsCount", results.resultCount); + +} catch (e) { + logger.error("Error loading delegation options: " + e.message); + execution.setVariable("delegationOptions", "[]"); + execution.setVariable("hasDelegationOptions", false); + execution.setVariable("delegationOptionsCount", 0); +} + +logger.info("=== Delegation Options Loaded ==="); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1348, + "y": 177.5, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 177.5, + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 777, + "y": 226, + }, + "exclusiveGateway-621c9996676a": { + "x": 514, + "y": 153, + }, + "scriptTask-0e5b6187ea62": { + "x": 777, + "y": 80, + }, + "scriptTask-4e9121fe850a": { + "x": 210, + "y": 179.5, + }, + "scriptTask-626899b6e99a": { + "x": 1049, + "y": 97.66666666666667, + }, + "scriptTask-c58309b8c470": { + "x": 1049, + "y": 234.83333333333334, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhNewUserCreate/draft/scriptTask-626899b6e99a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhNewUserCreate/draft/scriptTask-c58309b8c470.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "file://phhNewUserCreate/draft/scriptTask-4e9121fe850a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "file://phhNewUserCreate/draft/scriptTask-0e5b6187ea62.workflow.js", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1348, + "y": 177.5, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 177.5, + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 777, + "y": 226, + }, + "exclusiveGateway-621c9996676a": { + "x": 514, + "y": 153, + }, + "scriptTask-0e5b6187ea62": { + "x": 777, + "y": 80, + }, + "scriptTask-4e9121fe850a": { + "x": 210, + "y": 179.5, + }, + "scriptTask-626899b6e99a": { + "x": 1049, + "y": 97.66666666666667, + }, + "scriptTask-c58309b8c470": { + "x": 1049, + "y": 234.83333333333334, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhNewUserCreate/published/scriptTask-626899b6e99a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://phhNewUserCreate/published/scriptTask-c58309b8c470.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "file://phhNewUserCreate/published/scriptTask-4e9121fe850a.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-626899b6e99a", + }, + ], + "script": "file://phhNewUserCreate/published/scriptTask-0e5b6187ea62.workflow.js", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/draft/scriptTask-0e5b6187ea62.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/draft/scriptTask-4e9121fe850a.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/draft/scriptTask-626899b6e99a.workflow.js 1`] = ` +"logger.info("[phh] Creating User"); +function generateUsername(givenName, surname) { +const usernamePrefix = (givenName[0] + surname[0]).toLowerCase(); +const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]); +const usernames = data.result.map(user => user.userName); +let i = 1; +while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) { +i++; +} +return usernamePrefix + String(i).padStart(5, '0'); +} +function createUser(custom) { +var startDate = new Date(custom.startDate).toISOString(); +var endDate = new Date(custom.endDate).toISOString(); +var payload = { +"userName": custom.userName, +"givenName": custom.givenName, +"sn": custom.sn, +"mail": custom.mail, +"password": custom.password, +"frIndexedDate5":startDate, +"frIndexedDate4":endDate +}; +return openidm.create('managed/alpha_user', null, payload); +} +function process(requestObj) { +var custom = requestObj.request.custom +custom.userName = generateUsername(custom.givenName, custom.sn); +custom.password = 'Password!234'; +const result = createUser(custom); +return { outcome: "provisioned" }; +} +try { +const requestId = execution.getVariables().get("id"); +const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {}); +let decision = { status: "complete", "decision": "approved" }; +try { +const result = process(requestObj); +Object.assign(decision, result); +} catch (error) { +Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true }); +} +openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"}); +} catch (e) { +logger.error(\`Error reading request \${requestId}: \${e}\`); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/draft/scriptTask-c58309b8c470.workflow.js 1`] = ` +"logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/published/scriptTask-0e5b6187ea62.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var skipApproval = content.get('skipApproval'); +var queryParams = { + "_action": "update" +} +try { + var decision = { + "decision": "approved", + } + if (skipApproval) { + decision.comment = "Request auto-approved due to request context: " + context; + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = { 'comment': failureReason, 'failure': true }; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/published/scriptTask-4e9121fe850a.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +try { + // Read request object + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + if (requestObj.request.common.startDate){ + enableWait = true; + } + if (requestObj.request.common.endDate){ + enableEndWait = true; + } +} +catch (e) { + logger.info("Request Context Check failed " + e.message); +} +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/published/scriptTask-626899b6e99a.workflow.js 1`] = ` +"logger.info("[phh] Creating User"); +function generateUsername(givenName, surname) { +const usernamePrefix = (givenName[0] + surname[0]).toLowerCase(); +const data = openidm.query("managed/alpha_user", {'_queryFilter': \`userName sw "\${usernamePrefix}"\`}, ["userName"]); +const usernames = data.result.map(user => user.userName); +let i = 1; +while (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) { +i++; +} +return usernamePrefix + String(i).padStart(5, '0'); +} +function createUser(custom) { +var startDate = new Date(custom.startDate).toISOString(); +var endDate = new Date(custom.endDate).toISOString(); +var payload = { +"userName": custom.userName, +"givenName": custom.givenName, +"sn": custom.sn, +"mail": custom.mail, +"password": custom.password, +"frIndexedDate5":startDate, +"frIndexedDate4":endDate +}; +return openidm.create('managed/alpha_user', null, payload); +} +function process(requestObj) { +var custom = requestObj.request.custom +custom.userName = generateUsername(custom.givenName, custom.sn); +custom.password = 'Password!234'; +const result = createUser(custom); +return { outcome: "provisioned" }; +} +try { +const requestId = execution.getVariables().get("id"); +const requestObj = openidm.action(\`iga/governance/requests/\${requestId}\`, "GET", {}, {}); +let decision = { status: "complete", "decision": "approved" }; +try { +const result = process(requestObj); +Object.assign(decision, result); +} catch (error) { +Object.assign(decision, { outcome: "unknown", comment: \`Error processing request \${requestId}: \${e.message}\`, failure: true }); +} +openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', decision, { _action: "update"}); +} catch (e) { +logger.error(\`Error reading request \${requestId}: \${e}\`); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhNewUserCreate/published/scriptTask-c58309b8c470.workflow.js 1`] = ` +"logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +// Complete request as rejected +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow1/draft/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/draft/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow1/published/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow1/published/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/draft/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/draft/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/published/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow1/published/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/draft/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow4/draft/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/draft/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/published/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/published/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/published/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow4/published/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow4/published/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/draft/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/draft/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/draft/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/draft/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/published/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/published/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/published/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow4/published/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow5.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_5", + "displayName": "test_workflow_5", + "id": "testWorkflow5", + "mutable": true, + "name": "test_workflow_5", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow5/published/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow5/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow5/published/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow5/published/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow5/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow5/published/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow5/published/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow5/published/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow5/published/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow5/published/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow5/published/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow6.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_6", + "displayName": "test_workflow_6", + "id": "testWorkflow6", + "mutable": true, + "name": "test_workflow_6", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow6/published/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow6/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow6/published/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow6/published/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow6/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow6/published/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow6/published/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow6/published/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow6/published/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow6/published/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow6/published/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/draft/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow7/draft/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/draft/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/published/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/published/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/published/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow7/published/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow7/published/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/draft/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/draft/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/draft/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/draft/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/published/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/published/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/published/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow7/published/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/draft/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/draft/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/draft/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow8/draft/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/draft/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success", + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "approvalTask-7e33e73d6763", + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info", + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42, + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + "type": "role", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "applicationOwner", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "type": "manager", + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "type": "entitlementOwner", + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "type": "roleOwner", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 478.3999938964844, + "y": 195.6125030517578, + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/published/approvalTask-7e33e73d6763.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)", + }, + "x": 146.39999389648438, + "y": 15.61250305175781, + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023, + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836, + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578, + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 479.3999938964844, + "y": 334.41250228881836, + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)", + }, + "x": 145.39999389648438, + "y": 146.6125030517578, + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578, + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578, + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/published/violationTask-50261d9bc712.workflow.js", + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)", + }, + "x": 480.3999938964844, + "y": 13.61250305175781, + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [], + }, + "x": 788.3999938964844, + "y": 613.4125022888184, + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 476.3999938964844, + "y": 612.4125022888184, + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate", + }, + "x": 476.3999938964844, + "y": 694.4125022888184, + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 148.39999389648438, + "y": 779.812502861023, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/published/approvalTask-7e33e73d6763.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration", + }, + "notification": "FrodoTestEmailTemplate1", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()", + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/published/fulfillmentTask-7fce35a32915.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2", + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate2", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()", + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success +outcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55", + }, + { + "condition": "// This is a validation failure +outcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1 +outcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 2 +outcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636", + }, + { + "condition": "// This is outcome 3 +outcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8", + }, + ], + "script": "file://testWorkflow8/published/scriptTask-493f5ea87636.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "file://testWorkflow8/published/violationTask-50261d9bc712.workflow.js", + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()", + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3", + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()", + }, + "notification": "FrodoTestEmailTemplate3", + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script +"bcc@email.com";", + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script +"cc@email.com";", + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": { + "hello": "goodbye", + "hi": "hola", + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script +"to@email.com";", + }, + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()", + }, + }, + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.manager.id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": ""managed/user/" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + { + "id": { + "isExpression": true, + "value": "(function() { + var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {}); + var approver = null; + if (requestIndex.roleOwner && requestIndex.roleOwner[0]) { + approver = "managed/user/" + requestIndex.roleOwner[0].id; + } else if (systemSettings && systemSettings.defaultApprover) { + approver = systemSettings.defaultApprover; + } + return approver; +})()", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask", + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240", + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712", + }, + ], + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask", + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121", + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712", + }, + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com", + }, + "name": "emailTask-881f2975e240", + "type": "emailTask", + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate", + }, + }, + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a", + }, + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')", + }, + }, + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null, + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null, + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763", + }, + ], + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/draft/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/draft/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/draft/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/draft/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/published/approvalTask-7e33e73d6763.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/published/fulfillmentTask-7fce35a32915.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/published/scriptTask-493f5ea87636.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/testWorkflow8/published/violationTask-50261d9bc712.workflow.js 1`] = ` +"/** +Define custom script which returns an array of actors in the following format +(function() { + var content = execution.getVariables(); + var requestId = content.get('id'); + var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + return [{ + id: "managed/user/" + requestIndex.applicationOwner[0].id, + permissions: { + approve: true, + reject: true, + reassign: true, + modify: true, + comment: true + } + }]; +})() +**/ +( +function(){ + return []; +} +)() +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "wfEntitlementExampleIsPrivileged", + "displayName": "wfEntitlementExampleIsPrivileged", + "id": "wfEntitlementExampleIsPrivileged", + "mutable": true, + "name": "wfEntitlementExampleIsPrivileged", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2262, + "y": 220, + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + "x": 70, + "y": 176, + }, + "uiConfig": { + "approvalTask-63163dc11c1f": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + }, + "type": "entitlementOwner", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 722, + "y": 265, + }, + "approvalTask-77691047b28d": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.user.manager._refResourceId", + }, + "type": "manager", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 1219, + "y": 273, + }, + "exclusiveGateway-48e748c42994": { + "x": 1917, + "y": 104, + }, + "exclusiveGateway-67a954f33919": { + "x": 462, + "y": 155, + }, + "inclusiveGateway-bcb05a148971": { + "x": 1216, + "y": 99, + }, + "scriptTask-0359a9d77ee2": { + "x": 1924, + "y": 258.6666666666667, + }, + "scriptTask-0b56191887de": { + "x": 1907, + "y": 367.33333333333337, + }, + "scriptTask-3eab1948f1ec": { + "x": 1532, + "y": 151.66666666666669, + }, + "scriptTask-5106f7a29d86": { + "x": 940, + "y": 210, + }, + "scriptTask-aec6c36b3a45": { + "x": 1567, + "y": 274.33333333333337, + }, + "scriptTask-e04f42607ba5": { + "x": 181, + "y": 178, + }, + "scriptTask-e21178ab80f7": { + "x": 724, + "y": 101, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": "file://wfEntitlementExampleIsPrivileged/draft/scriptTask-3eab1948f1ec.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": "failureReason != null", + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://wfEntitlementExampleIsPrivileged/draft/scriptTask-0b56191887de.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://wfEntitlementExampleIsPrivileged/draft/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "file://wfEntitlementExampleIsPrivileged/draft/scriptTask-aec6c36b3a45.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "file://wfEntitlementExampleIsPrivileged/draft/scriptTask-e04f42607ba5.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": "file://wfEntitlementExampleIsPrivileged/draft/scriptTask-e21178ab80f7.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-63163dc11c1f", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Entitlement Privileged", + "name": "scriptTask-5106f7a29d86", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-bcb05a148971", + }, + ], + "script": "file://wfEntitlementExampleIsPrivileged/draft/scriptTask-5106f7a29d86.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Inclusive Gateway", + "name": "inclusiveGateway-bcb05a148971", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "entPriv == true", + "outcome": "Privileged", + "step": "approvalTask-77691047b28d", + }, + { + "condition": "entPriv == false", + "outcome": "NotPrivileged", + "step": "scriptTask-3eab1948f1ec", + }, + ], + "script": "logger.info("This is inclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.user.manager._refResourceId", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-3eab1948f1ec", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Manager Approval", + "name": "approvalTask-77691047b28d", + "type": "approvalTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": ""managed/user/" + requestIndex.entitlementOwner[0].id ? "managed/user/" + requestIndex.entitlementOwner[0].id : "managed/user/" + requestIndex.applicationOwner[0].id", + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()", + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30", + }, + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + "frequency": 7, + "notification": "requestExpired", + }, + "reassign": { + "notification": "requestReassigned", + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()", + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-5106f7a29d86", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-63163dc11c1f", + "type": "approvalTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged/draft/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"logger.info("Auto-Provisioning"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + logger.info("requestObj: " + requestObj); +} +catch (e) { + failureReason = "Provisioning failed: Error reading request with id " + requestId; +} + +if(!failureReason) { + try { + var request = requestObj.request; + var payload = { + "entitlementId": request.common.entitlementId, + "startDate": request.common.startDate, + "endDate": request.common.endDate, + "auditContext": {}, + "grantType": "request" + }; + var queryParams = { + "_action": "add" + } + + var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams); + } + catch (e) { + failureReason = "Provisioning failed: Error provisioning entitlement to user " + request.common.userId + " for entitlement " + request.common.entitlementId + ". Error message: " + e.message; + } + + var decision = {'status': 'complete', 'decision': 'approved'}; + if (failureReason) { + decision.outcome = 'not provisioned'; + decision.comment = failureReason; + decision.failure = true; + } + else { + decision.outcome = 'provisioned'; + } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); + logger.info("Request " + requestId + " completed."); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged/draft/scriptTask-0b56191887de.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = content.get('failureReason'); + +var decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged/draft/scriptTask-3eab1948f1ec.workflow.js 1`] = ` +"logger.info("Running entitlement grant request validation"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var applicationId = null; +var assignmentId = null; +var app = null; +var assignment = null; +var existingAccount = false; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason = "Validation failed: Error reading request with id " + requestId; +} + +// Validation 1 - Check application exists +if (!failureReason) { + try { + app = openidm.read('managed/alpha_application/' + applicationId); + if (!app) { + failureReason = "Validation failed: Cannot find application with id " + applicationId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading application with id " + applicationId + ". Error message: " + e.message; + } +} + +// Validation 2 - Check entitlement exists +if (!failureReason) { + try { + assignment = openidm.read('managed/alpha_assignment/' + assignmentId); + if (!assignment) { + failureReason = "Validation failed: Cannot find assignment with id " + assignmentId; + } + } + catch (e) { + failureReason = "Validation failed: Error reading assignment with id " + assignmentId + ". Error message: " + e.message; + } +} + +// Validation 3 - Check the user has application granted +if (!failureReason) { + try { + var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]); + user.effectiveApplications.forEach(effectiveApp => { + if (effectiveApp._id === applicationId) { + existingAccount = true; + } + }) + } + catch (e) { + failureReason = "Validation failed: Unable to check existing applications of user with id " + requestObj.user.id + ". Error message: " + e.message; + } +} + +// Validation 4 - If account does not exist, provision it +if (!failureReason) { + if (!existingAccount) { + try { + var request = requestObj.request; + var payload = { + "applicationId": applicationId, + "startDate": request.common.startDate, + "endDate": request.common.endDate, + "auditContext": {}, + "grantType": "request" + }; + var queryParams = { + "_action": "add" + } + + logger.info("Creating account: " + payload); + var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams); + } + catch (e) { + failureReason = "Validation failed: Error provisioning new account to user " + request.common.userId + " for application " + applicationId + ". Error message: " + e.message; + } + } +} + +if (failureReason) { + logger.info("Validation failed: " + failureReason); +} +execution.setVariable("failureReason", failureReason); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged/draft/scriptTask-5106f7a29d86.workflow.js 1`] = ` +"var content = execution.getVariables(); +var requestId = content.get('id'); +var requestObj = null; +var entId = null; +var entGlossary = null; +var entPriv = null; + +//Check entitlement exists and grab entitlement info +try { + requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + entId = requestObj.assignment.id; +} +catch (e) { + logger.info("Validation failed: Error reading entitlement grant request with id " + requestId); +} +//Check glossary for entitlement exists and grab glossary info +try { + entGlossary = openidm.action('iga/governance/resource/' + entId + '/glossary', 'GET', {}, {}); + // Sets entPriv based on the glossary contents, if present, otherwise defaults to true + entPriv = (entGlossary.hasOwnProperty("isPrivileged")) ? entGlossary.isPrivileged : true; + //Sets entPriv based on glossary contents, if present, otherwise defaults to false + //entPriv = !!entGlossary.isPrivileged; + execution.setVariable("entPriv", entPriv); +} +catch (e) { + logger.info("Could not retrieve glossary with entId " + entId + " from entitlement grant request ID " + requestId); +} +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged/draft/scriptTask-aec6c36b3a45.workflow.js 1`] = ` +"logger.info("Rejecting request"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +logger.info("Execution Content: " + content); +var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); +var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged/draft/scriptTask-e04f42607ba5.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; +var skipApproval = false; +var lineItemId = false; +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + lineItemId = requestObj.request.common.context.lineItemId; + if (context == 'admin') { + skipApproval = true; + } + } +} +catch (e) { + logger.info("Request Context Check failed "+e.message); +} + +logger.info("Context: " + context); +execution.setVariable("context", context); +execution.setVariable("lineItemId", lineItemId); +execution.setVariable("skipApproval", skipApproval); +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/wfEntitlementExampleIsPrivileged/draft/scriptTask-e21178ab80f7.workflow.js 1`] = ` +"/* +Script nodes are used to invoke APIs or execute business logic. +You can invoke governance APIs or IDM APIs. +See https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details. + +Script nodes should return a single value and should have the +logic enclosed in a try-catch block. + +Example: +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + applicationId = requestObj.application.id; +} +catch (e) { + failureReason = 'Validation failed: Error reading request with id ' + requestId; +} +*/ +var content = execution.getVariables(); +var requestId = content.get('id'); +var context = content.get('context'); +var lineItemId = content.get('lineItemId'); +var queryParams = { + "_action": "update" +} +var lineItemParams = { + "_action": "updateRemediationStatus" +} +try { + var decision = { + "decision": "approved", + "comment": "Request auto-approved due to request context: " + context + } + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +} +catch (e) { + var failureReason = "Failure updating decision on request. Error message: " + e.message; + var update = {'comment': failureReason, 'failure': true}; + openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams); + + +} +" +`; diff --git a/test/e2e/__snapshots__/iga-workflow-list.e2e.test.js.snap b/test/e2e/__snapshots__/iga-workflow-list.e2e.test.js.snap new file mode 100644 index 000000000..6ce0e82c2 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-list.e2e.test.js.snap @@ -0,0 +1,93 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo iga workflow list "frodo iga workflow list --long": should list the ids, names, mutability, and statuses of the workflows. 1`] = ` +"ID │Name │Drafted│Published│Mutable +createNonEmployee │CreateNonEmployee │true │false │true +phhBasicApplicationGrant │phh-BasicApplicationGrant │true │true │true +phhInternalRoleEntitlementGrant │phh-InternalRoleEntitlementGrant │true │false │true +phhNewUserCreate │phh-new-user-create │true │true │true +testWorkflow1 │test_workflow_1 │true │true │true +testWorkflow4 │test_workflow_4 │true │true │true +testWorkflow5 │test_workflow_5 │true │false │true +testWorkflow7 │test_workflow_7 │true │true │true +testWorkflow8 │test_workflow_8 │true │true │true +wfEntitlementExampleIsPrivileged │wfEntitlementExampleIsPrivileged │true │false │true +BasicApplicationGrant │BasicApplicationGrant │false │true │false +BasicApplicationRemove │BasicApplicationRemove │false │true │false +BasicEntitlementGrant │BasicEntitlementGrant │false │true │false +BasicEntitlementRemove │BasicEntitlementRemove │false │true │false +BasicRoleGrant │BasicRoleGrant │false │true │false +BasicRoleRemove │BasicRoleRemove │false │true │false +BasicViolationProcess │BasicViolationProcess │false │true │false +CreateEntitlement │CreateEntitlement │false │true │false +CreateUser │CreateUser │false │true │false +DeleteUser │DeleteUser │false │true │false +ModifyEntitlement │ModifyEntitlement │false │true │false +ModifyUser │ModifyUser │false │true │false +phhBirthrightRolesRequiringApproval│phh-birthright-roles-requiring-approval│false │true │true +phhDelegatedUserDisableWorkflow │phh-delegated-user-disable-workflow │false │true │true +phhNeDisable │phh-ne-disable │false │true │true +testWorkflow6 │test_workflow_6 │false │true │true +" +`; + +exports[`frodo iga workflow list "frodo iga workflow list -l": should list the ids, names, mutability, and statuses of the workflows. 1`] = ` +"ID │Name │Drafted│Published│Mutable +createNonEmployee │CreateNonEmployee │true │false │true +phhBasicApplicationGrant │phh-BasicApplicationGrant │true │true │true +phhInternalRoleEntitlementGrant │phh-InternalRoleEntitlementGrant │true │false │true +phhNewUserCreate │phh-new-user-create │true │true │true +testWorkflow1 │test_workflow_1 │true │true │true +testWorkflow4 │test_workflow_4 │true │true │true +testWorkflow5 │test_workflow_5 │true │false │true +testWorkflow7 │test_workflow_7 │true │true │true +testWorkflow8 │test_workflow_8 │true │true │true +wfEntitlementExampleIsPrivileged │wfEntitlementExampleIsPrivileged │true │false │true +BasicApplicationGrant │BasicApplicationGrant │false │true │false +BasicApplicationRemove │BasicApplicationRemove │false │true │false +BasicEntitlementGrant │BasicEntitlementGrant │false │true │false +BasicEntitlementRemove │BasicEntitlementRemove │false │true │false +BasicRoleGrant │BasicRoleGrant │false │true │false +BasicRoleRemove │BasicRoleRemove │false │true │false +BasicViolationProcess │BasicViolationProcess │false │true │false +CreateEntitlement │CreateEntitlement │false │true │false +CreateUser │CreateUser │false │true │false +DeleteUser │DeleteUser │false │true │false +ModifyEntitlement │ModifyEntitlement │false │true │false +ModifyUser │ModifyUser │false │true │false +phhBirthrightRolesRequiringApproval│phh-birthright-roles-requiring-approval│false │true │true +phhDelegatedUserDisableWorkflow │phh-delegated-user-disable-workflow │false │true │true +phhNeDisable │phh-ne-disable │false │true │true +testWorkflow6 │test_workflow_6 │false │true │true +" +`; + +exports[`frodo iga workflow list "frodo iga workflow list": should list the ids of the workflows 1`] = ` +"createNonEmployee +phhBasicApplicationGrant +phhInternalRoleEntitlementGrant +phhNewUserCreate +testWorkflow1 +testWorkflow4 +testWorkflow5 +testWorkflow7 +testWorkflow8 +wfEntitlementExampleIsPrivileged +BasicApplicationGrant +BasicApplicationRemove +BasicEntitlementGrant +BasicEntitlementRemove +BasicRoleGrant +BasicRoleRemove +BasicViolationProcess +CreateEntitlement +CreateUser +DeleteUser +ModifyEntitlement +ModifyUser +phhBirthrightRolesRequiringApproval +phhDelegatedUserDisableWorkflow +phhNeDisable +testWorkflow6 +" +`; diff --git a/test/e2e/__snapshots__/iga-workflow-publish.e2e.test.js.snap b/test/e2e/__snapshots__/iga-workflow-publish.e2e.test.js.snap new file mode 100644 index 000000000..3889152f2 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-publish.e2e.test.js.snap @@ -0,0 +1,24 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo iga workflow publish "frodo iga workflow publish --workflow-id testWorkflow5": should failed to publish already published workflow 'testWorkflow5' 1`] = `""`; + +exports[`frodo iga workflow publish "frodo iga workflow publish --workflow-id testWorkflow5": should failed to publish already published workflow 'testWorkflow5' 2`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✖ Error: Error publishing draft workflow testWorkflow5 +Error publishing draft workflow testWorkflow5 + Error reading draft workflow testWorkflow5 + Network error: + URL: https://openam-frodo-dev.forgeblocks.com/iga/governance/workflow/testWorkflow5/draft + Status: 404 + Code: ERR_BAD_REQUEST + Message: Workflow with id: testWorkflow5 was not found +" +`; + +exports[`frodo iga workflow publish "frodo iga workflow publish -i testWorkflow5": should publish workflow 'testWorkflow5' 1`] = `""`; + +exports[`frodo iga workflow publish "frodo iga workflow publish -i testWorkflow5": should publish workflow 'testWorkflow5' 2`] = ` +"Connected to https://openam-frodo-dev.forgeblocks.com/am [alpha] as service account Frodo-SA-1766159115537 [b672336b-41ef-428d-ae4a-e0c082875377] +✔ Published workflow testWorkflow5. +" +`; diff --git a/test/e2e/exports/all/allWorkflows.workflow.json b/test/e2e/exports/all/allWorkflows.workflow.json new file mode 100644 index 000000000..3c0c4f7a5 --- /dev/null +++ b/test/e2e/exports/all/allWorkflows.workflow.json @@ -0,0 +1,15795 @@ +{ + "emailTemplate": { + "FrodoTestEmailTemplate1": { + "_id": "emailTemplate/FrodoTestEmailTemplate1", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template One", + "enabled": true, + "from": "", + "message": { + "en": "

Click to reset your password

Password reset link

", + "fr": "

Cliquez pour réinitialiser votre mot de passe

Mot de passe lien de réinitialisation

" + }, + "mimeType": "text/html", + "subject": { + "en": "Reset your password", + "fr": "Réinitialisez votre mot de passe" + } + }, + "FrodoTestEmailTemplate2": { + "_id": "emailTemplate/FrodoTestEmailTemplate2", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template Two", + "enabled": true, + "from": "", + "message": { + "en": "

This is your one-time password:

{{object.description}}

" + }, + "mimeType": "text/html", + "subject": { + "en": "One-Time Password for login" + } + }, + "FrodoTestEmailTemplate3": { + "_id": "emailTemplate/FrodoTestEmailTemplate3", + "defaultLocale": "en", + "displayName": "Frodo Test Email Template Three", + "enabled": true, + "from": "", + "message": { + "en": "

You started a login or profile update that requires MFA.

Click to Proceed

" + }, + "mimeType": "text/html", + "subject": { + "en": "Multi-Factor Email for Identity Cloud login" + } + }, + "frodoTestEmailTemplateFour": { + "_id": "emailTemplate/frodoTestEmailTemplateFour", + "defaultLocale": "en", + "description": "Frodo email template four", + "displayName": "Frodo Test Email Template Four", + "enabled": true, + "from": "\"From\" ", + "html": { + "en": "

\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

" + }, + "message": { + "en": "

\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

" + }, + "mimeType": "text/html", + "styles": "body {\n background-color: #324054;\n color: #455469;\n padding: 60px;\n text-align: center \n}\n a {\n text-decoration: none;\n color: #109cf1;\n}\n .content {\n background-color: #fff;\n border-radius: 4px;\n margin: 0 auto;\n padding: 48px;\n width: 235px \n}\n", + "subject": { + "en": "Subject" + }, + "templateId": "frodoTestEmailTemplateFour" + }, + "requestAssigned": { + "_id": "emailTemplate/requestAssigned", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
.
" + }, + "message": { + "en": ">A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience." + }, + "mimeType": "text/html", + "styles": "body {\n\tbackground-color: #324054;\n\tcolor: #455469;\n\tpadding: 60px;\n\ttext-align: center\n}\n\na {\n\ttext-decoration: none;\n\tcolor: #109cf1;\n}\n\n.content {\n\tbackground-color: #fff;\n\tborder-radius: 4px;\n\tmargin: 0 auto;\n\tpadding: 48px;\n\twidth: 235px\n}\n", + "subject": { + "en": "ATTENTION: Request Assigned" + } + }, + "requestEscalated": { + "_id": "emailTemplate/requestEscalated", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A request approval has been escalated to your attention.
" + }, + "message": { + "en": "A request approval has been escalated to your attention." + }, + "mimeType": "text/html", + "styles": "body {\n\tbackground-color: #324054;\n\tcolor: #455469;\n\tpadding: 60px;\n\ttext-align: center\n}\n\na {\n\ttext-decoration: none;\n\tcolor: #109cf1;\n}\n\n.content {\n\tbackground-color: #fff;\n\tborder-radius: 4px;\n\tmargin: 0 auto;\n\tpadding: 48px;\n\twidth: 235px\n}\n", + "subject": { + "en": "ATTENTION: Request Escalation" + } + }, + "requestExpired": { + "_id": "emailTemplate/requestExpired", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A request approval assigned to you has expired.
" + }, + "message": { + "en": " A request approval assigned to you has expired." + }, + "mimeType": "text/html", + "styles": "body {\n\tbackground-color: #324054;\n\tcolor: #455469;\n\tpadding: 60px;\n\ttext-align: center\n}\n\na {\n\ttext-decoration: none;\n\tcolor: #109cf1;\n}\n\n.content {\n\tbackground-color: #fff;\n\tborder-radius: 4px;\n\tmargin: 0 auto;\n\tpadding: 48px;\n\twidth: 235px\n}\n", + "subject": { + "en": "ATTENTION: Expiration of Request" + } + }, + "requestReassigned": { + "_id": "emailTemplate/requestReassigned", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
" + }, + "message": { + "en": "A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience." + }, + "mimeType": "text/html", + "styles": "body {\n\tbackground-color: #324054;\n\tcolor: #455469;\n\tpadding: 60px;\n\ttext-align: center\n}\n\na {\n\ttext-decoration: none;\n\tcolor: #109cf1;\n}\n\n.content {\n\tbackground-color: #fff;\n\tborder-radius: 4px;\n\tmargin: 0 auto;\n\tpadding: 48px;\n\twidth: 235px\n}\n", + "subject": { + "en": "ATTENTION: Request Reassigned" + } + }, + "requestReminder": { + "_id": "emailTemplate/requestReminder", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A request approval assigned to you is awaiting your action.
" + }, + "message": { + "en": "A request approval assigned to you is awaiting your action." + }, + "mimeType": "text/html", + "styles": "body {\n\tbackground-color: #324054;\n\tcolor: #455469;\n\tpadding: 60px;\n\ttext-align: center\n}\n\na {\n\ttext-decoration: none;\n\tcolor: #109cf1;\n}\n\n.content {\n\tbackground-color: #fff;\n\tborder-radius: 4px;\n\tmargin: 0 auto;\n\tpadding: 48px;\n\twidth: 235px\n}\n", + "subject": { + "en": "ATTENTION: Reminder to complete Request" + } + } + }, + "event": { + "2a441af0-d057-46a1-996b-1f3ff2725122": { + "action": { + "name": "testWorkflow1", + "parameters": { + "var1": "val1", + "var2": "val2", + "var3": "val3" + }, + "type": "orchestration" + }, + "condition": { + "filter": { + "or": [ + { + "contains": { + "in_string": "user.before.city", + "search_string": { + "literal": "a" + } + } + }, + { + "not_contains": { + "in_string": "user.after.city", + "search_string": { + "literal": "b" + } + } + }, + { + "equals": { + "left": "user.before.city", + "right": { + "literal": "c" + } + } + }, + { + "not_equals": { + "left": "user.after.city", + "right": { + "literal": "d" + } + } + }, + { + "starts_with": { + "prefix": { + "literal": "e" + }, + "value": "user.before.city" + } + }, + { + "ends_with": { + "suffix": { + "literal": "f" + }, + "value": "user.after.city" + } + }, + { + "not_equals": { + "left": "user.before.city", + "right": "user.after.city" + } + }, + { + "equals": { + "left": "user.before.city", + "right": "user.after.city" + } + }, + { + "and": [ + { + "gte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 1 + } + } + }, + { + "gt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 2 + } + } + }, + { + "lte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 3 + } + } + }, + { + "lt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 4 + } + } + } + ] + } + ] + }, + "version": "v2" + }, + "description": "Test event description", + "entityType": "user", + "id": "2a441af0-d057-46a1-996b-1f3ff2725122", + "metadata": { + "createdDate": "2026-03-04T22:40:13.818750214Z" + }, + "mutationType": "create", + "name": "test_workflow_event_1", + "owners": [ + { + "givenName": "Preston", + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "mail": "test@test.com", + "sn": "Test", + "userName": "PrestonIGATestUser" + } + ], + "status": "active" + }, + "4bfdbe77-794a-4eb2-85ef-320a327d44ff": { + "action": { + "name": "testWorkflow4", + "parameters": { + "var1": "val1", + "var2": "val2", + "var3": "val3" + }, + "type": "orchestration" + }, + "condition": { + "filter": { + "or": [ + { + "contains": { + "in_string": "user.before.city", + "search_string": { + "literal": "a" + } + } + }, + { + "not_contains": { + "in_string": "user.after.city", + "search_string": { + "literal": "b" + } + } + }, + { + "equals": { + "left": "user.before.city", + "right": { + "literal": "c" + } + } + }, + { + "not_equals": { + "left": "user.after.city", + "right": { + "literal": "d" + } + } + }, + { + "starts_with": { + "prefix": { + "literal": "e" + }, + "value": "user.before.city" + } + }, + { + "ends_with": { + "suffix": { + "literal": "f" + }, + "value": "user.after.city" + } + }, + { + "not_equals": { + "left": "user.before.city", + "right": "user.after.city" + } + }, + { + "equals": { + "left": "user.before.city", + "right": "user.after.city" + } + }, + { + "and": [ + { + "gte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 1 + } + } + }, + { + "gt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 2 + } + } + }, + { + "lte": { + "left": "user.before.frIndexedInteger1", + "right": { + "literal": 3 + } + } + }, + { + "lt": { + "left": "user.after.frIndexedInteger1", + "right": { + "literal": 4 + } + } + } + ] + } + ] + }, + "version": "v2" + }, + "description": "Test event description", + "entityType": "user", + "id": "4bfdbe77-794a-4eb2-85ef-320a327d44ff", + "metadata": { + "createdDate": "2026-03-04T22:40:15.973316857Z" + }, + "mutationType": "create", + "name": "test_workflow_event_3", + "owners": [ + { + "givenName": "Preston", + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "mail": "test@test.com", + "sn": "Test", + "userName": "PrestonIGATestUser" + } + ], + "status": "active" + }, + "c87b0605-03f6-4372-9ba6-e0f43e0b3bcf": { + "action": { + "name": "phhBirthrightRolesRequiringApproval", + "parameters": { + "roleNames": "phh-role-other-risk" + }, + "type": "orchestration" + }, + "condition": { + "filter": { + "and": [ + { + "not_contains": { + "in_string": "user.before.description", + "search_string": { + "literal": "teacher" + } + } + }, + { + "contains": { + "in_string": "user.after.description", + "search_string": { + "literal": "teacher" + } + } + } + ] + }, + "version": "v2" + }, + "description": "Teacher birthright role approval", + "entityType": "user", + "id": "c87b0605-03f6-4372-9ba6-e0f43e0b3bcf", + "metadata": { + "createdDate": "2025-12-19T23:33:09.589539476Z" + }, + "mutationType": "update", + "name": "phh-teacher-birthright-role-approval", + "owners": [ + { + "givenName": "Parent", + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "mail": "pholderness+poadmin@trivir.com", + "sn": "Admin", + "userName": "phh-parent-org-admin" + } + ], + "status": "active" + } + }, + "meta": { + "exportDate": "2026-03-04T23:35:03.925Z", + "exportTool": "frodo", + "exportToolVersion": "v4.0.0-21 [v24.13.0]", + "origin": "https://openam-trivir-fairfax.forgeblocks.com/am", + "originAmVersion": "8.1.0" + }, + "requestForm": { + "9c10b680-a790-4f73-95ed-81b345f0f3e9": { + "assignments": [ + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-23T23:37:29.474219019Z" + }, + "objectId": "workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac" + }, + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-24T00:52:45.670896494Z" + }, + "objectId": "requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252" + } + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create" + }, + "description": "Form for disabling users with delegation authority", + "form": { + "events": {}, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "description": "Enter the username of individual you are performing the operation for", + "id": "988aad8c-9ef4-4a83-8717-960931b89695", + "label": "Acting on behalf of", + "layout": { + "columns": 12, + "offset": 0 + }, + "model": "actingPrincipalId", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true + } + } + ], + "id": "ef298ed6-7f50-456a-9473-934eee627b36" + }, + { + "fields": [ + { + "customSlot": false, + "description": "These are those you can act on behalf of.", + "id": "4b64f437-f304-434a-9cb7-20227549b778", + "label": "Your direct reports", + "layout": { + "columns": 12, + "offset": 0 + }, + "model": "availableDirectReports", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true + } + } + ], + "id": "8587be1b-8a68-4a9a-bbfb-26dc47911897" + }, + { + "fields": [ + { + "customSlot": false, + "description": "User to be disabled", + "id": "13c44f83-9f4e-4da1-83ce-60137f25bcd9", + "label": "Target User to Disable", + "layout": { + "columns": 12, + "offset": 0 + }, + "model": "targetUserId", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true + } + } + ], + "id": "b24286b5-07ba-420f-9238-667035368e93" + }, + { + "fields": [ + { + "customSlot": false, + "description": "Why is this user being disabled?", + "id": "0ccdeb3c-5df7-45df-95ef-5ed10be592c6", + "label": "Justification", + "layout": { + "columns": 12, + "offset": 0 + }, + "model": "justification", + "onChangeEvent": {}, + "readOnly": false, + "type": "textarea", + "validation": { + "required": true + } + } + ], + "id": "915f0cd0-27e1-4d3d-bf55-bf3c1a7697e0" + }, + { + "fields": [ + { + "customSlot": false, + "description": "You are about to submit this using delegated authority...", + "id": "f5b98b5c-1f2b-4609-bcb1-2eb5d6d02953", + "label": "Important", + "layout": { + "columns": 12, + "offset": 0 + }, + "model": "confirmationMessage", + "onChangeEvent": {}, + "readOnly": true, + "type": "textarea", + "validation": { + "required": true + } + } + ], + "id": "7ab82555-de43-4840-adbb-f2ea959b6d9e" + } + ] + }, + "id": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-23T23:07:42.347733285Z" + }, + "name": "phh-delegated-user-disable-form", + "type": "request" + }, + "9e3fc668-4e96-4b03-9605-38b830bea26c": { + "assignments": [ + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:09.860613713Z" + }, + "objectId": "requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc" + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:10.907366203Z" + }, + "objectId": "workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915" + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:11.933983845Z" + }, + "objectId": "workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915" + } + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create" + }, + "description": "This is a test request form", + "form": {}, + "id": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-04T22:40:08.831569376Z" + }, + "name": "test_workflow_request_form_2", + "type": "request" + }, + "c385b530-b912-4dcd-98c8-931673add9b7": { + "assignments": [ + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2026-01-30T18:27:54.68190238Z" + }, + "objectId": "requestType/8d0055b3-155f-4885-a415-4f1c536098e8" + }, + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2025-12-15T17:42:41.495353249Z" + }, + "objectId": "workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d" + } + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create" + }, + "description": "Request new user", + "form": { + "events": { + "onLoad": { + "script": "form.hideField('custom.positionOther');\nform.setValue('custom.positionOther', '');", + "type": "script" + } + }, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "description": "First Name", + "id": "a221cdbe-3e28-4d98-91b5-4f99bca8ccf6", + "label": "Given Name", + "layout": { + "columns": 12, + "offset": 0 + }, + "model": "custom.givenName", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true + } + } + ], + "id": "d3488e29-dde5-4406-873f-3e99ee818508" + }, + { + "fields": [ + { + "customSlot": false, + "description": "Last Name", + "id": "8e398b29-4229-4fec-a37c-d95a91928864", + "label": "Surname", + "layout": { + "columns": 12, + "offset": 0 + }, + "model": "custom.sn", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "regex": {}, + "required": true + } + } + ], + "id": "312caf93-1aa9-4659-b076-cef7a6fc9f39" + }, + { + "fields": [ + { + "customSlot": false, + "description": "Email address", + "id": "02cf58e1-d05b-4b24-84e2-073b56fe033f", + "label": "Personal eMail", + "layout": { + "columns": 6, + "offset": 0 + }, + "model": "custom.mail", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true + } + }, + { + "customSlot": false, + "description": "Individual cell phone number. (Needed for Duo server access)", + "id": "3bb65f28-6f65-45aa-b2c6-4a6d1d90ce73", + "label": "Cell number", + "layout": { + "columns": 6, + "offset": 0 + }, + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "regex": { + "message": "Please correct your phone number.", + "pattern": "^(\\+0?1\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$" + }, + "required": true + } + } + ], + "id": "6fd16bae-ea14-43db-ac27-b0dfad060b46" + }, + { + "fields": [ + { + "customSlot": false, + "description": "Position", + "id": "dfeba91e-5141-4da6-97f3-4ad520e64334", + "label": "Position", + "layout": { + "columns": 6, + "offset": 0 + }, + "model": "custom.positionSelect", + "onChangeEvent": { + "script": "// Get the newly selected value\nvar selectedPosition = form.currentFieldValue;\n\n//console.log('Position changed to:', selectedPosition);\n\nif (selectedPosition === 'positionOther') {\n // Show the text field and enable it\n form.showField('custom.positionOther');\n form.enableField('custom.positionOther');\n} else {\n // Hide the text field and clear any value\n form.hideField('custom.positionOther');\n form.setValue('custom.positionOther', '');\n \n // Optionally disable it as well (though hidden fields are already non-interactive)\n form.disableField('custom.positionOther');\n}", + "type": "script" + }, + "options": [ + { + "label": "One", + "selectedByDefault": true, + "value": "positionOne" + }, + { + "label": "Two", + "value": "positionTwo" + }, + { + "label": "Other", + "value": "positionOther" + } + ], + "readOnly": false, + "type": "select", + "validation": { + "required": true + } + }, + { + "customSlot": false, + "description": "Please provide a position", + "id": "5081c59a-016c-4ac3-a518-45123a34cd22", + "label": "", + "layout": { + "columns": 6, + "offset": 0 + }, + "model": "custom.positionOther", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true + } + } + ], + "id": "4d5bbe99-4c48-48f2-9c02-16c194c95a8e" + }, + { + "fields": [ + { + "customSlot": false, + "description": "Start Date", + "id": "855991a5-6ac8-4bc0-91a6-c1b156e9832c", + "label": "Start Date", + "layout": { + "columns": 6, + "offset": 0 + }, + "model": "custom.startDate", + "onChangeEvent": {}, + "readOnly": false, + "type": "date", + "validation": { + "required": true + } + }, + { + "customSlot": false, + "description": "End Date", + "id": "e1687d03-9db3-4f3b-8939-5bb42893a165", + "label": "End Date", + "layout": { + "columns": 6, + "offset": 0 + }, + "model": "custom.endDate", + "onChangeEvent": {}, + "readOnly": false, + "type": "date", + "validation": { + "required": true + } + } + ], + "id": "d36ce194-5b64-452a-bb10-b99a30ce8038" + } + ] + }, + "id": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2025-12-15T16:46:29.581505111Z" + }, + "name": "phh-new-user", + "type": "request" + }, + "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9": { + "assignments": [ + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:03.856752543Z" + }, + "objectId": "workflow/testWorkflow3/node/approvalTask-7e33e73d6763" + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:01.849201534Z" + }, + "objectId": "workflow/testWorkflow1/node/approvalTask-7e33e73d6763" + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:02.84761136Z" + }, + "objectId": "workflow/testWorkflow2/node/approvalTask-7e33e73d6763" + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:04.870872677Z" + }, + "objectId": "workflow/testWorkflow4/node/approvalTask-7e33e73d6763" + } + ], + "categories": { + "applicationType": null, + "objectType": "Group", + "operation": "create" + }, + "description": "This is a test application request form", + "form": {}, + "id": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-04T22:40:00.809825423Z" + }, + "name": "test_workflow_request_form_1", + "type": "applicationRequest" + } + }, + "requestType": { + "3eb082e7-68f2-409f-9423-26e771259dc8": { + "custom": true, + "displayName": "test_workflow_request_type_4", + "id": "3eb082e7-68f2-409f-9423-26e771259dc8", + "metadata": { + "createdDate": "2026-03-04T22:40:22.060377906Z" + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7 + }, + "isInternal": true, + "isRequired": false + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + }, + "isDraft": { + "isInternal": true, + "isRequired": false + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3 + }, + "isInternal": true, + "isRequired": false + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6 + }, + "isRequired": false, + "text": { + "defaultValue": "low" + } + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5 + }, + "isInternal": true, + "isRequired": false + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + } + }, + "type": "system" + }, + "properties": { + "blob": { + "type": "object" + }, + "context": { + "type": "object" + }, + "endDate": { + "type": "text" + }, + "expiryDate": { + "type": "text" + }, + "externalRequestId": { + "type": "text" + }, + "isDraft": { + "type": "boolean" + }, + "justification": { + "type": "text" + }, + "priority": { + "type": "text" + }, + "requestIdPrefix": { + "type": "text" + }, + "startDate": { + "type": "text" + }, + "workflowId": { + "type": "text" + } + } + } + ] + }, + "workflow": { + "id": "testWorkflow4" + } + }, + "8d0055b3-155f-4885-a415-4f1c536098e8": { + "custom": true, + "displayName": "phh-create-user", + "id": "8d0055b3-155f-4885-a415-4f1c536098e8", + "metadata": { + "createdDate": "2025-12-15T22:22:58.524157136Z" + }, + "notModifiableProperties": [], + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7 + }, + "isInternal": true, + "isRequired": false + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + }, + "isDraft": { + "isInternal": true, + "isRequired": false + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3 + }, + "isInternal": true, + "isRequired": false + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6 + }, + "isRequired": false, + "text": { + "defaultValue": "low" + } + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5 + }, + "isInternal": true, + "isRequired": false + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + } + }, + "type": "system" + }, + "properties": { + "blob": { + "type": "object" + }, + "context": { + "type": "object" + }, + "endDate": { + "type": "text" + }, + "expiryDate": { + "type": "text" + }, + "externalRequestId": { + "type": "text" + }, + "isDraft": { + "type": "boolean" + }, + "justification": { + "type": "text" + }, + "priority": { + "type": "text" + }, + "requestIdPrefix": { + "type": "text" + }, + "startDate": { + "type": "text" + }, + "workflowId": { + "type": "text" + } + } + } + ], + "custom": [ + { + "_meta": { + "properties": { + "endDate": { + "display": { + "isVisible": true, + "name": "End Date", + "order": 5 + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false + }, + "givenName": { + "display": { + "isVisible": true, + "name": "Given Name", + "order": 1 + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true + }, + "mail": { + "display": { + "isVisible": true, + "name": "eMail", + "order": 3 + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true + }, + "sn": { + "display": { + "isVisible": true, + "name": "Surname", + "order": 2 + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true + }, + "startDate": { + "display": { + "isVisible": true, + "name": "Start Date", + "order": 4 + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false + } + }, + "type": "system" + }, + "properties": { + "endDate": { + "type": "text" + }, + "givenName": { + "type": "text" + }, + "mail": { + "type": "text" + }, + "sn": { + "type": "text" + }, + "startDate": { + "type": "text" + } + } + } + ] + }, + "workflow": { + "id": "phhNewUserCreate" + } + }, + "af4a6f84-f9a9-4f8d-82ae-649639debabc": { + "custom": true, + "displayName": "test_workflow_request_type_5", + "id": "af4a6f84-f9a9-4f8d-82ae-649639debabc", + "metadata": { + "createdDate": "2026-03-04T22:39:54.772364584Z" + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7 + }, + "isInternal": true, + "isRequired": false + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + }, + "isDraft": { + "isInternal": true, + "isRequired": false + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3 + }, + "isInternal": true, + "isRequired": false + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6 + }, + "isRequired": false, + "text": { + "defaultValue": "low" + } + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5 + }, + "isInternal": true, + "isRequired": false + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + } + }, + "type": "system" + }, + "properties": { + "blob": { + "type": "object" + }, + "context": { + "type": "object" + }, + "endDate": { + "type": "text" + }, + "expiryDate": { + "type": "text" + }, + "externalRequestId": { + "type": "text" + }, + "isDraft": { + "type": "boolean" + }, + "justification": { + "type": "text" + }, + "priority": { + "type": "text" + }, + "requestIdPrefix": { + "type": "text" + }, + "startDate": { + "type": "text" + }, + "workflowId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "workflow": {} + }, + "e9dcd66e-1388-4872-9790-66df2f44deef": { + "custom": true, + "displayName": "test_workflow_request_type_1", + "id": "e9dcd66e-1388-4872-9790-66df2f44deef", + "metadata": { + "createdDate": "2026-03-04T22:40:20.099572476Z" + }, + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7 + }, + "isInternal": true, + "isRequired": false + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + }, + "isDraft": { + "isInternal": true, + "isRequired": false + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3 + }, + "isInternal": true, + "isRequired": false + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6 + }, + "isRequired": false, + "text": { + "defaultValue": "low" + } + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5 + }, + "isInternal": true, + "isRequired": false + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + } + }, + "type": "system" + }, + "properties": { + "blob": { + "type": "object" + }, + "context": { + "type": "object" + }, + "endDate": { + "type": "text" + }, + "expiryDate": { + "type": "text" + }, + "externalRequestId": { + "type": "text" + }, + "isDraft": { + "type": "boolean" + }, + "justification": { + "type": "text" + }, + "priority": { + "type": "text" + }, + "requestIdPrefix": { + "type": "text" + }, + "startDate": { + "type": "text" + }, + "workflowId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "validation": null, + "workflow": { + "id": "testWorkflow1" + } + }, + "fdf9e9a1-b5cf-496a-821b-e7b3d5841252": { + "custom": true, + "displayName": "phh-delegate-user-disable-type", + "id": "fdf9e9a1-b5cf-496a-821b-e7b3d5841252", + "metadata": { + "createdDate": "2026-02-23T23:40:17.173973796Z" + }, + "notModifiableProperties": [], + "schemas": { + "common": [ + { + "_meta": { + "displayName": "commonRequest", + "properties": { + "blob": { + "isInternal": true, + "isRequired": false + }, + "context": { + "display": { + "description": "The context of the request", + "isVisible": true, + "name": "Context", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": false + }, + "endDate": { + "display": { + "description": "End date of the grant", + "isVisible": true, + "name": "End date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "expiryDate": { + "display": { + "description": "User provided date on which the request will cancel", + "isVisible": true, + "name": "Request expiration date", + "order": 7 + }, + "isInternal": true, + "isRequired": false + }, + "externalRequestId": { + "display": { + "description": "The external ID for the request", + "isVisible": true, + "name": "External Request ID", + "order": 4 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + }, + "isDraft": { + "isInternal": true, + "isRequired": false + }, + "justification": { + "display": { + "description": "The reason for the request", + "isVisible": true, + "name": "Justification", + "order": 3 + }, + "isInternal": true, + "isRequired": false + }, + "priority": { + "display": { + "description": "The priority of the reqeust", + "isVisible": true, + "name": "Priority", + "order": 6 + }, + "isRequired": false, + "text": { + "defaultValue": "low" + } + }, + "requestIdPrefix": { + "display": { + "description": "Prefix for the request ID", + "isVisible": true, + "name": "Request ID prefix", + "order": 5 + }, + "isInternal": true, + "isRequired": false + }, + "startDate": { + "display": { + "description": "Start date of the grant", + "isVisible": true, + "name": "Start date", + "order": 8 + }, + "isInternal": true, + "isRequired": false + }, + "workflowId": { + "display": { + "description": "The ID key of the BPMN workflow", + "isVisible": true, + "name": "BPMN workflow ID", + "order": 7 + }, + "isChangable": false, + "isInternal": true, + "isRequired": false + } + }, + "type": "system" + }, + "properties": { + "blob": { + "type": "object" + }, + "context": { + "type": "object" + }, + "endDate": { + "type": "text" + }, + "expiryDate": { + "type": "text" + }, + "externalRequestId": { + "type": "text" + }, + "isDraft": { + "type": "boolean" + }, + "justification": { + "type": "text" + }, + "priority": { + "type": "text" + }, + "requestIdPrefix": { + "type": "text" + }, + "startDate": { + "type": "text" + }, + "workflowId": { + "type": "text" + } + } + } + ] + }, + "validation": null, + "workflow": { + "id": "phhDelegatedUserDisableWorkflow" + } + } + }, + "variable": {}, + "workflow": { + "createNonEmployee": { + "draft": { + "childType": false, + "description": "CreateNonEmployee", + "displayName": "CreateNonEmployee", + "id": "createNonEmployee", + "mutable": true, + "name": "CreateNonEmployee", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1694, + "y": 154 + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8" + }, + "id": "startNode", + "x": 12, + "y": 110 + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});\n return systemSettings.defaultApprover;\n})()" + }, + "events": { + "escalationType": "script", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 732, + "y": 172 + }, + "exclusiveGateway-abbb089758c8": { + "x": 433, + "y": 89.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 928, + "y": 53.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 963, + "y": 223.015625 + }, + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 112.015625 + }, + "scriptTask-e8842de66fbb": { + "x": 718, + "y": 43.015625 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});\n return systemSettings.defaultApprover;\n})()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(1*24*60*60*1000))).toISOString()" + }, + "frequency": 1, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45" + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask" + }, + { + "displayName": "Create User", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Creating User\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n}\ncatch (e) {\n failureReason = \"Creating User: Error reading request with id \" + requestId;\n}\n\nif(!failureReason) {\n try {\n var payload = requestObj.request.user.object;\n\n /** Create new user **/\n var result = openidm.create('managed/alpha_user', null, payload, queryParams);\n logger.info(\"User created with userName \" + result.userName + \" and _id \" + result._id + \".\")\n \n /** Send new user email **/\n var body = { \n subject: \"Welcome \" + payload.givenName + \" \" + payload.sn + \"!\",\n to: payload.mail,\n body: \"Your new user has been created.\\n\\nUsername: \" + payload.userName,\n object: {}\n };\n \n if(payload.manager && payload.manager._ref){\n logger.info(\"Getting manager information for \" + payload.userName + \" create user welcome email.\")\n try {\n var managerResult = openidm.read(payload.manager._ref);\n body.cc = managerResult.mail;\n } catch (e) {\n logger.info(\"Unable to read manager information for \" + payload.userName + \" create user welcome email. \" + e.message)\n }\n }\n openidm.action(\"external/email\", \"send\", body);\n }\n catch (e) {\n failureReason = \"Creating user failed: Error during creation of user \" + payload.userName + \". Error message: \" + e.message;\n }\n \n var decision = {'status': 'complete', 'decision': 'approved'};\n if (failureReason) {\n decision.outcome = 'not provisioned';\n decision.comment = failureReason;\n decision.failure = true;\n }\n else {\n decision.outcome = 'provisioned';\n }\n \n var queryParams = { '_action': 'update'};\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n logger.info(\"Request \" + requestId + \" completed.\");\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Create User - rejecting request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\n\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8" + } + ], + "script": "// This permission check script will check that the requester has proper privileges to\n// create a user. If so, it will skip any approval process and directly move to create the new user.\n\nlogger.info(\"Create User - Permission check\");\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar skipApproval = false;\n\ntry {\n // Read the request object\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n var requester = requestObj.requester\n \n if(requester.id.startsWith('managed/user/')){\n // If requester is a normal managed user, check that the user has permissions to create a user\n var userId = requester.id.split('/');\n var user = openidm.action('iga/governance/user', 'GET', {}, {'endUserId': userId[2], 'scopePermission': 'createUser', '_queryFilter': `id+eq+'` + userId[2] + `'`})\n if(user.result.length > 0){\n skipApproval = true;\n }\n }\n else{\n // Tenant admins and system requests\n skipApproval = true;\n }\n}\ncatch (e) {\n logger.info(\"Request permission check failed: \" + e.message);\n}\n\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-0359a9d77ee2" + } + ], + "script": "logger.info(\"Create User - marking request as auto approved.\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar queryParams = {\n \"_action\": \"update\"\n}\ntry {\n var decision = {\n \"decision\": \"approved\",\n \"comment\": \"Request auto-approved due to requester having create user privileges.\"\n }\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n}\ncatch (e) {\n var failureReason = \"Failure updating decision on request. Error message: \" + e.message;\n var update = {'comment': failureReason, 'failure': true};\n openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-abbb089758c8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApprove", + "step": "scriptTask-e8842de66fbb" + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + } + ], + "type": "provisioning" + }, + "published": null + }, + "phhBasicApplicationGrant": { + "draft": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2822, + "y": 352 + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1038.7499923706055, + "y": 469.76562881469727 + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1039.2499923706055, + "y": 334.76562881469727 + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1037.2499923706055, + "y": 601.7656288146973 + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 682, + "y": 155 + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1039.9999923706055, + "y": 736.7656288146973 + }, + "exclusiveGateway-5167870154a9": { + "x": 1855, + "y": 84 + }, + "exclusiveGateway-621c9996676a": { + "x": 433, + "y": 117.015625 + }, + "inclusiveGateway-2fbd3e7aa50c": { + "x": 803.3999938964844, + "y": 472.6125030517578 + }, + "inclusiveGateway-7d248125a9bd": { + "x": 2417, + "y": 43.015625 + }, + "inclusiveGateway-a71e67faaad1": { + "x": 1124, + "y": 93.015625 + }, + "scriptTask-0e5b6187ea62": { + "x": 889, + "y": 116.015625 + }, + "scriptTask-14acc58c28dd": { + "x": 2650, + "y": 85.015625 + }, + "scriptTask-3a74557440fb": { + "x": 2144, + "y": 62 + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625 + }, + "scriptTask-626899b6e99a": { + "x": 1549, + "y": 108 + }, + "scriptTask-744ef6a8b9a2": { + "x": 2151, + "y": 207.015625 + }, + "scriptTask-c444d08a6099": { + "x": 818.3999938964844, + "y": 348.6125030517578 + }, + "scriptTask-c58309b8c470": { + "x": 1554, + "y": 242 + }, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate" + }, + "x": 1339, + "y": 85.015625 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()" + }, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask" + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-5167870154a9" + } + ], + "script": "logger.info(\"Running application grant request validation\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\nvar applicationId = null;\nvar app = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = \"Validation failed: Error reading request with id \" + requestId;\n}\n\n// Validation 1 - Check application exists\nif (!failureReason) {\n try {\n app = openidm.read('managed/alpha_application/' + applicationId);\n if (!app) {\n failureReason = \"Validation failed: Cannot find application with id \" + applicationId;\n }\n }\n catch (e) {\n failureReason = \"Validation failed: Error reading application with id \" + applicationId + \". Error message: \" + e.message;\n }\n}\n\n// Validation 2 - Check the user does not already have application granted\n// Note: this is done at request submission time as well, the following is an example of how to check user's accounts\nif (!failureReason) {\n try {\n var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);\n user.effectiveApplications.forEach(effectiveApp => {\n if (effectiveApp._id === applicationId) {\n failureReason = \"Validation failed: User with id \" + requestObj.user.id + \" already has effective application \" + applicationId;\n }\n })\n }\n catch (e) {\n failureReason = \"Validation failed: Unable to check effective applications of user with id \" + requestObj.user.id + \". Error message: \" + e.message;\n }\n}\n\nif (failureReason) {\n logger.info(\"Validation failed: \" + failureReason);\n}\nexecution.setVariable(\"failureReason\", failureReason); " + }, + "type": "scriptTask" + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Rejecting request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\n\n// Complete request as rejected\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb" + }, + { + "condition": "failureReason != null", + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd" + } + ], + "script": "logger.info(\"Provisioning\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n logger.info(\"requestObj: \" + requestObj);\n}\ncatch (e) {\n failureReason = \"Provisioning failed: Error reading request with id \" + requestId;\n}\n\nif(!failureReason) {\n try {\n var request = requestObj.request;\n var payload = {\n \"applicationId\": request.common.applicationId,\n \"auditContext\": {},\n \"grantType\": \"request\",\n \"requestId\": requestObj.id,\n };\n var queryParams = {\n \"_action\": \"add\"\n }\n\n logger.info(\"Creating account: \" + payload);\n var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);\n }\n catch (e) {\n var err = e.javaException; \n err = JSON.parse(err.detail);\n var message = err && err.body ? err.body.response : e.message;\n failureReason = \"Provisioning failed: Error provisioning account to user \" + request.common.userId + \" for application \" + request.common.applicationId + \". Error message: \" + message;\n }\n \n var decision = {'status': 'complete'};\n if (failureReason) {\n decision.outcome = 'not provisioned';\n decision.comment = failureReason;\n decision.failure = true;\n execution.setVariable('enableEndWait', false);\n }\n else {\n decision.outcome = 'provisioned';\n }\n\n var queryParams = { '_action': 'update'};\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n logger.info(\"Request \" + requestId + \" completed.\");\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = content.get('failureReason');\n\nvar decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = null;\nvar enableWait = false;\nvar enableEndWait = false;\nvar skipApproval = false;\ntry {\n // Read request object\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n if (requestObj.request.common.context) {\n context = requestObj.request.common.context.type;\n if (context == 'admin') {\n skipApproval = true;\n }\n }\n if (requestObj.request.common.startDate){\n enableWait = true;\n }\n if (requestObj.request.common.endDate){\n enableEndWait = true;\n }\n}\ncatch (e) {\n logger.info(\"Request Context Check failed \" + e.message);\n}\nlogger.info(\"Context: \" + context);\nexecution.setVariable(\"context\", context);\nexecution.setVariable(\"enableWait\", enableWait);\nexecution.setVariable(\"enableEndWait\", enableEndWait);\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = content.get('context');\nvar skipApproval = content.get('skipApproval');\nvar queryParams = {\n \"_action\": \"update\"\n}\ntry {\n var decision = {\n \"decision\": \"approved\",\n }\n if (skipApproval) {\n decision.comment = \"Request auto-approved due to request context: \" + context;\n }\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n\n}\ncatch (e) {\n var failureReason = \"Failure updating decision on request. Error message: \" + e.message;\n var update = { 'comment': failureReason, 'failure': true };\n openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.startDate" + } + } + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37" + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd" + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Create Removal Request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n logger.info(\"requestObj: \" + requestObj);\n}\ncatch (e) {\n failureReason = \"Create Removal Request failed: Error reading request with id \" + requestId;\n}\n\nif(!failureReason){\n try{\n var request = requestObj.request;\n var newRequestPayload = {\n \"common\":{\n \"context\": {\n \"type\": \"admin\"\n },\n \"applicationId\": request.common.applicationId,\n \"userId\": request.common.userId,\n \"endDate\": request.common.endDate,\n \"justification\": \"Request submitted automatically to remove access granted by request: \" + requestId\n }\n };\n var queryParam = {\n '_action': \"publish\"\n }\n openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)\n }catch(e){\n logger.info(\"Create Removal Request failed to create request\")\n }\n }" + }, + "type": "scriptTask" + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar requestObj = null;\nvar appId = null;\nvar appGlossary = null;\nvar lob = null;\ntry {\nrequestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nappId = requestObj.application.id;\n}\ncatch (e) {\nlogger.info(\"Validation failed: Error reading application grant request with id \" + requestId);\n}\ntry {\nappGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {});\nlob = appGlossary.lineOfBusiness || \"default\"\nexecution.setVariable(\"lob\", lob);\n}\ncatch (e) {\nlogger.info(\"Could not retrieve glossary with appId \" + appId + \" from application grant request ID \" + requestId);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "lob == \"sales\"", + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384" + }, + { + "condition": "lob == \"finance\"", + "outcome": "finance", + "step": "approvalTask-440960b2744d" + }, + { + "condition": "lob == \"hr\"", + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998" + }, + { + "condition": "lob == \"default\"", + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask" + } + ], + "type": "provisioning" + }, + "published": { + "childType": false, + "description": "phh-BasicApplicationGrant", + "displayName": "phh-BasicApplicationGrant", + "id": "phhBasicApplicationGrant", + "mutable": true, + "name": "phh-BasicApplicationGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2822, + "y": 352 + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "uiConfig": { + "approvalTask-440960b2744d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1038.7499923706055, + "y": 469.76562881469727 + }, + "approvalTask-5d1d9c5d8384": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1039.2499923706055, + "y": 334.76562881469727 + }, + "approvalTask-6ad92fcbe998": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1037.2499923706055, + "y": 601.7656288146973 + }, + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 1, + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 682, + "y": 155 + }, + "approvalTask-ffa3a83b9dfd": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1039.9999923706055, + "y": 736.7656288146973 + }, + "exclusiveGateway-5167870154a9": { + "x": 1855, + "y": 84 + }, + "exclusiveGateway-621c9996676a": { + "x": 433, + "y": 117.015625 + }, + "inclusiveGateway-2fbd3e7aa50c": { + "x": 803.3999938964844, + "y": 472.6125030517578 + }, + "inclusiveGateway-7d248125a9bd": { + "x": 2417, + "y": 43.015625 + }, + "inclusiveGateway-a71e67faaad1": { + "x": 1124, + "y": 93.015625 + }, + "scriptTask-0e5b6187ea62": { + "x": 889, + "y": 116.015625 + }, + "scriptTask-14acc58c28dd": { + "x": 2650, + "y": 85.015625 + }, + "scriptTask-3a74557440fb": { + "x": 2144, + "y": 62 + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625 + }, + "scriptTask-626899b6e99a": { + "x": 1549, + "y": 108 + }, + "scriptTask-744ef6a8b9a2": { + "x": 2151, + "y": 207.015625 + }, + "scriptTask-c444d08a6099": { + "x": 818.3999938964844, + "y": 348.6125030517578 + }, + "scriptTask-c58309b8c470": { + "x": 1554, + "y": 242 + }, + "waitTask-13cf96ebeb37": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + "resumeDateVariable": "startDate" + }, + "x": 1339, + "y": 85.015625 + } + } + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()" + }, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c444d08a6099" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask" + }, + { + "displayName": "Application Grant Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-5167870154a9" + } + ], + "script": "logger.info(\"Running application grant request validation\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\nvar applicationId = null;\nvar app = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = \"Validation failed: Error reading request with id \" + requestId;\n}\n\n// Validation 1 - Check application exists\nif (!failureReason) {\n try {\n app = openidm.read('managed/alpha_application/' + applicationId);\n if (!app) {\n failureReason = \"Validation failed: Cannot find application with id \" + applicationId;\n }\n }\n catch (e) {\n failureReason = \"Validation failed: Error reading application with id \" + applicationId + \". Error message: \" + e.message;\n }\n}\n\n// Validation 2 - Check the user does not already have application granted\n// Note: this is done at request submission time as well, the following is an example of how to check user's accounts\nif (!failureReason) {\n try {\n var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);\n user.effectiveApplications.forEach(effectiveApp => {\n if (effectiveApp._id === applicationId) {\n failureReason = \"Validation failed: User with id \" + requestObj.user.id + \" already has effective application \" + applicationId;\n }\n })\n }\n catch (e) {\n failureReason = \"Validation failed: Unable to check effective applications of user with id \" + requestObj.user.id + \". Error message: \" + e.message;\n }\n}\n\nif (failureReason) {\n logger.info(\"Validation failed: \" + failureReason);\n}\nexecution.setVariable(\"failureReason\", failureReason); " + }, + "type": "scriptTask" + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Rejecting request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\n\n// Complete request as rejected\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-5167870154a9", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationSuccess", + "step": "scriptTask-3a74557440fb" + }, + { + "condition": "failureReason != null", + "outcome": "validationFailure", + "step": "scriptTask-744ef6a8b9a2" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Provisioning", + "name": "scriptTask-3a74557440fb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-7d248125a9bd" + } + ], + "script": "logger.info(\"Provisioning\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n logger.info(\"requestObj: \" + requestObj);\n}\ncatch (e) {\n failureReason = \"Provisioning failed: Error reading request with id \" + requestId;\n}\n\nif(!failureReason) {\n try {\n var request = requestObj.request;\n var payload = {\n \"applicationId\": request.common.applicationId,\n \"auditContext\": {},\n \"grantType\": \"request\",\n \"requestId\": requestObj.id,\n };\n var queryParams = {\n \"_action\": \"add\"\n }\n\n logger.info(\"Creating account: \" + payload);\n var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);\n }\n catch (e) {\n var err = e.javaException; \n err = JSON.parse(err.detail);\n var message = err && err.body ? err.body.response : e.message;\n failureReason = \"Provisioning failed: Error provisioning account to user \" + request.common.userId + \" for application \" + request.common.applicationId + \". Error message: \" + message;\n }\n \n var decision = {'status': 'complete'};\n if (failureReason) {\n decision.outcome = 'not provisioned';\n decision.comment = failureReason;\n decision.failure = true;\n execution.setVariable('enableEndWait', false);\n }\n else {\n decision.outcome = 'provisioned';\n }\n\n var queryParams = { '_action': 'update'};\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n logger.info(\"Request \" + requestId + \" completed.\");\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Application Grant Validation Failure", + "name": "scriptTask-744ef6a8b9a2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = content.get('failureReason');\n\nvar decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = null;\nvar enableWait = false;\nvar enableEndWait = false;\nvar skipApproval = false;\ntry {\n // Read request object\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n if (requestObj.request.common.context) {\n context = requestObj.request.common.context.type;\n if (context == 'admin') {\n skipApproval = true;\n }\n }\n if (requestObj.request.common.startDate){\n enableWait = true;\n }\n if (requestObj.request.common.endDate){\n enableEndWait = true;\n }\n}\ncatch (e) {\n logger.info(\"Request Context Check failed \" + e.message);\n}\nlogger.info(\"Context: \" + context);\nexecution.setVariable(\"context\", context);\nexecution.setVariable(\"enableWait\", enableWait);\nexecution.setVariable(\"enableEndWait\", enableEndWait);\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-a71e67faaad1" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = content.get('context');\nvar skipApproval = content.get('skipApproval');\nvar queryParams = {\n \"_action\": \"update\"\n}\ntry {\n var decision = {\n \"decision\": \"approved\",\n }\n if (skipApproval) {\n decision.comment = \"Request auto-approved due to request context: \" + context;\n }\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n\n}\ncatch (e) {\n var failureReason = \"Failure updating decision on request. Error message: \" + e.message;\n var update = { 'comment': failureReason, 'failure': true };\n openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Wait Task", + "name": "waitTask-13cf96ebeb37", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-626899b6e99a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.startDate" + } + } + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-a71e67faaad1", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-13cf96ebeb37" + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-626899b6e99a" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-7d248125a9bd", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-14acc58c28dd" + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-14acc58c28dd", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Create Removal Request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n logger.info(\"requestObj: \" + requestObj);\n}\ncatch (e) {\n failureReason = \"Create Removal Request failed: Error reading request with id \" + requestId;\n}\n\nif(!failureReason){\n try{\n var request = requestObj.request;\n var newRequestPayload = {\n \"common\":{\n \"context\": {\n \"type\": \"admin\"\n },\n \"applicationId\": request.common.applicationId,\n \"userId\": request.common.userId,\n \"endDate\": request.common.endDate,\n \"justification\": \"Request submitted automatically to remove access granted by request: \" + requestId\n }\n };\n var queryParam = {\n '_action': \"publish\"\n }\n openidm.action('iga/governance/requests/applicationRemove', 'POST', newRequestPayload, queryParam)\n }catch(e){\n logger.info(\"Create Removal Request failed to create request\")\n }\n }" + }, + "type": "scriptTask" + }, + { + "displayName": "Check LOB", + "name": "scriptTask-c444d08a6099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-2fbd3e7aa50c" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar requestObj = null;\nvar appId = null;\nvar appGlossary = null;\nvar lob = null;\ntry {\nrequestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nappId = requestObj.application.id;\n}\ncatch (e) {\nlogger.info(\"Validation failed: Error reading application grant request with id \" + requestId);\n}\ntry {\nappGlossary = openidm.action('iga/governance/application/' + appId + '/glossary', 'GET', {}, {});\nlob = appGlossary.lineOfBusiness || \"default\"\nexecution.setVariable(\"lob\", lob);\n}\ncatch (e) {\nlogger.info(\"Could not retrieve glossary with appId \" + appId + \" from application grant request ID \" + requestId);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "LOB", + "name": "inclusiveGateway-2fbd3e7aa50c", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "lob == \"sales\"", + "outcome": "sales", + "step": "approvalTask-5d1d9c5d8384" + }, + { + "condition": "lob == \"finance\"", + "outcome": "finance", + "step": "approvalTask-440960b2744d" + }, + { + "condition": "lob == \"hr\"", + "outcome": "humanResources", + "step": "approvalTask-6ad92fcbe998" + }, + { + "condition": "lob == \"default\"", + "outcome": "null", + "step": "approvalTask-ffa3a83b9dfd" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-440960b2744d", + "type": "approvalTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-6ad92fcbe998", + "type": "approvalTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-ffa3a83b9dfd", + "type": "approvalTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Sales Approver Role", + "name": "approvalTask-5d1d9c5d8384", + "type": "approvalTask" + } + ], + "type": "provisioning" + } + }, + "phhBirthrightRolesRequiringApproval": { + "draft": null, + "published": { + "childType": false, + "description": "phh-birthright-roles-requiring-approval", + "displayName": "phh-birthright-roles-requiring-approval", + "id": "phhBirthrightRolesRequiringApproval", + "mutable": true, + "name": "phh-birthright-roles-requiring-approval", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 1303, + "y": 236 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "scriptTask-0e64ff0c1695" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 70, + "y": 151 + }, + "uiConfig": { + "approvalTask-f4e7324654b5": { + "actors": { + "isExpression": true, + "value": "(function() {\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar approverId = '';\nif (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id }\nreturn [{\n\"id\": \"managed/user/\" + approverId,\n\"permissions\": {\n\"approve\": true,\n\"reject\": true,\n\"reassign\": true,\n\"modify\": true,\n\"comment\": true\n}\n}];\n})()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 440, + "y": 126.5 + }, + "scriptTask-0e64ff0c1695": { + "x": 210, + "y": 153 + }, + "scriptTask-792e240778b1": { + "x": 712, + "y": 226 + }, + "scriptTask-ad05a46c2e74": { + "x": 712, + "y": 80 + }, + "scriptTask-aecf833994d2": { + "x": 1032, + "y": 153 + } + } + }, + "status": "published", + "steps": [ + { + "displayName": "Debug Task", + "name": "scriptTask-0e64ff0c1695", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "approvalTask-f4e7324654b5" + } + ], + "script": "logger.info(\"Running user update event\");\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\nvar context = null;\nvar skipApproval = false;\nvar userObj = null;\nvar userId = null;\n// Read event user information from request object\ntry {\nvar requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nlogger.error(\"requestObj \"+JSON.stringify(requestObj));\nif (requestObj.request.common.context) {\ncontext = requestObj.request.common.context.type;\nif (context == 'admin') {\nskipApproval = true;\n}\n}\nuserObj = requestObj.request.common.blob.after;\nuserId = userObj.userId;\n}\ncatch (e) {\nfailureReason = \"Validation failed: Error reading request with id \" + requestId;\n}\nlogger.info(\"Context: \" + context);\nexecution.setVariable(\"context\", context);\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "(function() {\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar approverId = '';\nif (requestIndex.request.common.blob.after.manager) { approverId = requestIndex.request.common.blob.after.manager.id }\nreturn [{\n\"id\": \"managed/user/\" + approverId,\n\"permissions\": {\n\"approve\": true,\n\"reject\": true,\n\"reassign\": true,\n\"modify\": true,\n\"comment\": true\n}\n}];\n})()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-792e240778b1" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-ad05a46c2e74" + } + ] + }, + "displayName": "Manager Approval", + "name": "approvalTask-f4e7324654b5", + "type": "approvalTask" + }, + { + "displayName": "Look Up Roles and Request", + "name": "scriptTask-792e240778b1", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Running user update event\");\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\nvar userObj = null;\nvar userId = null;\n//\n// Read event user information from request object\ntry {\nvar requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nuserObj = requestObj.request.common.blob.after;\nuserId = userObj.userId;\n}\ncatch (e) {\nfailureReason = \"Validation failed: Error reading request with id \" + requestId;\n}\n///Get Roles from Role Variable\nvar roleNames = requestObj.request.common.blob.parameters.roleNames.split(',');\nlogger.error(\"UpdateRequest with roleNames: \" + roleNames);\n// Look up roles in catalog\nvar operand = [];\nfor (var index in roleNames) {\nvar role = roleNames[index];\nvar roleClean = role.trim();\noperand.push({operator: \"EQUALS\", operand: { targetName: \"role.name\", targetValue: roleClean }})\n}\nvar body = { targetFilter: {operator: \"OR\", operand: operand}};\nvar catalog = openidm.action(\"iga/governance/catalog/search\", \"POST\", body);\nvar catalogResults = catalog.result;\n// Define request catalogs key\nvar catalogBody = [];\nfor (var idx in catalogResults) {\nvar catalog = catalogResults[idx];\ncatalogBody.push({type: \"role\", id: catalog.id})\n}\n// Define request payload\nvar requestBody = {\npriority: \"low\",\naccessModifier: \"add\",\njustification: \"Request submitted on user update.\",\nusers: [ userId ],\ncatalogs: catalogBody,\ncontext: {\ntype: \"NoAdmin\"\n}\n};\n// Create requests\ntry {\nlogger.error(\"DRLCREATING REQUST for \"+JSON.stringify(body));\nopenidm.action(\"iga/governance/requests\", \"POST\", requestBody, {_action: \"create\"})\n}\ncatch (e) {\nfailureReason = \"Unable to generate requests for roles\";\n}\n// Update event request as final\nvar decision = failureReason ?\n{'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true} :\n{'status': 'complete', 'outcome': 'fulfilled', 'decision': 'approved'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\nlogger.info(\"Request \" + requestId + \" completed.\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Finalize Request on Reject", + "name": "scriptTask-ad05a46c2e74", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-aecf833994d2" + } + ], + "script": "logger.info(\"Finalize Request:BirthRight Roles that need Approval\");\nvar content = execution.getVariables();\nvar requestId = content.get('requestId');\nvar failureState = content.get('failureState');\nif (!failureState) {\ntry {\n// Update event request as final\nvar decision = {'status': 'complete', 'outcome': 'fulfilled', 'decision': 'rejected'}\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\nlogger.info(\"Request \" + requestId + \" completed.\");\n}\ncatch (e) {\nexecution.setVariable(\"failureState\", \"Unable to finalize request.\");\n}\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Failure Handler", + "name": "scriptTask-aecf833994d2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Failure Handler: BirthRight Roles that need Approval \");\nvar content = execution.getVariables();\nvar requestId = content.get('requestId');\nvar failureReason = content.get('failureReason');\n// Update event request as final\nif (failureReason) {\nvar decision = {'status': 'complete', 'outcome': 'cancelled', 'decision': 'rejected', 'comment': failureReason, 'failure': true}\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\nlogger.info(\"Request \" + requestId + \" completed.\");\n}" + }, + "type": "scriptTask" + } + ] + } + }, + "phhDelegatedUserDisableWorkflow": { + "draft": null, + "published": { + "childType": false, + "description": "phh-delegated-user-disable-workflow", + "displayName": "phh-delegated-user-disable-workflow", + "id": "phhDelegatedUserDisableWorkflow", + "mutable": true, + "name": "phh-delegated-user-disable-workflow", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 1563, + "y": 352 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "scriptTask-3d854e98930e" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 50, + "y": 250 + }, + "uiConfig": { + "approvalTask-bebe49db4dac": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1177, + "y": 60.61250305175781 + }, + "exclusiveGateway-26e0a9262468": { + "x": 438.3999938964844, + "y": 232.6125030517578 + }, + "exclusiveGateway-d5b7b2e2a80a": { + "x": 931.7999877929688, + "y": 111.61250305175781 + }, + "scriptTask-38eb13f4deca": { + "x": 648.3999938964844, + "y": 343.6125030517578 + }, + "scriptTask-3d854e98930e": { + "x": 175.39999389648438, + "y": 251.6125030517578 + }, + "scriptTask-449aac6b18b8": { + "x": 1149.3999938964844, + "y": 236.6125030517578 + }, + "scriptTask-4f4b87291099": { + "x": 1442.9999694824219, + "y": 101.61250305175781 + }, + "scriptTask-8e24794e9be4": { + "x": 649.3999938964844, + "y": 132.6125030517578 + } + } + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegation Info", + "name": "scriptTask-3d854e98930e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-26e0a9262468" + } + ], + "script": "/*\n * Load Delegation Information\n * Populates available direct reports for the requester\n */\n\nvar content = execution.getVariables();\nvar requestId = content.get('_id');\n\nconsole.log(\"=== Load Delegation Info Start ===\");\nconsole.log(\"Request ID: \" + requestId);\n\ntry {\n // Get the request object\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n var requesterId = requestObj.requester.id;\n var requesterIdOnly = requesterId.replace(\"managed/user/\", \"\");\n \n console.log(\"Requester ID: \" + requesterIdOnly);\n \n // Query users where current user is the manager\n var queryParams = {\n \"_queryFilter\": 'manager._id eq \"' + requesterIdOnly + '\"',\n \"_fields\": \"userName,givenName,sn,_id\"\n };\n \n var results = openidm.query(\"managed/alpha_user\", queryParams);\n \n // Build a formatted list for display\n var directReportsList = \"\";\n var directReportsCount = 0;\n \n if (results.resultCount > 0) {\n directReportsList = \"You can act on behalf of the following users:\\n\\n\";\n results.result.forEach(function(user) {\n directReportsList += \"• \" + user.userName + \" (\" + user.givenName + \" \" + user.sn + \")\\n\";\n });\n directReportsCount = results.resultCount;\n logger.info(\"Found \" + directReportsCount + \" direct reports\");\n } else {\n directReportsList = \"You do not have any direct reports in the system.\\n\\nYou cannot submit delegation requests without direct reports.\";\n logger.warn(\"No direct reports found\");\n }\n \n // Store variables for later use\n execution.setVariable(\"directReportsList\", directReportsList);\n execution.setVariable(\"directReportsCount\", directReportsCount);\n execution.setVariable(\"hasDelegationAuthority\", directReportsCount > 0);\n \n // Update the request to populate the helper field\n // This updates the form display for the user\n var updatePayload = {\n \"request\": {\n \"common\": {\n \"blob\": {\n \"form\": {\n \"availableDirectReports\": directReportsList\n }\n }\n }\n }\n };\n \n openidm.patch('iga/governance/requests/' + requestId, null, [\n {\n \"operation\": \"add\",\n \"field\": \"/request/common/blob/form/availableDirectReports\",\n \"value\": directReportsList\n }\n ]);\n \n console.log(\"Direct reports list populated in form\");\n \n} catch (e) {\n logger.error(\"Error loading delegation info: \" + e.message);\n execution.setVariable(\"hasDelegationAuthority\", false);\n execution.setVariable(\"directReportsCount\", 0);\n execution.setVariable(\"directReportsList\", \"Error loading your direct reports. Please contact your administrator.\");\n}\n\nconsole.log(\"=== Load Delegation Info Complete ===\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Auth Check", + "name": "exclusiveGateway-26e0a9262468", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "hasDelegationAuthority == true", + "outcome": "validationSuccess", + "step": "scriptTask-8e24794e9be4" + }, + { + "condition": "hasDelegationAuthority == false", + "outcome": "validationFailure", + "step": "scriptTask-38eb13f4deca" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Auto-Reject - No Authority", + "name": "scriptTask-38eb13f4deca", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "/*\n * Auto-Reject - No Delegation Authority\n * Rejects request if user has no direct reports\n */\n\nvar content = execution.getVariables();\nvar requestId = content.get('_id');\n\nconsole.log(\"Auto-rejecting request \" + requestId + \" - no delegation authority\");\n\ntry {\n var decision = {\n 'decision': 'rejected',\n 'status': 'complete',\n 'comment': 'Request automatically rejected: You do not have any direct reports in the system. You cannot submit delegation requests without having direct reports assigned to you.\\n\\nPlease contact your administrator if you believe this is an error.'\n };\n \n var updateParams = {\n '_action': 'update'\n };\n \n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams);\n \n console.log(\"Request \" + requestId + \" rejected successfully\");\n \n} catch (e) {\n console.log(\"Error rejecting request: \" + e.message);\n throw e;\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Validate Delegation Request", + "name": "scriptTask-8e24794e9be4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-d5b7b2e2a80a" + } + ], + "script": "/*\n * Validate Delegation Request\n * Validates all user inputs and delegation authority\n */\n\nvar content = execution.getVariables();\nvar requestId = content.get('_id');\n\nconsole.log(\"=== Validation Start ===\");\n\nvar validationPassed = false;\nvar validationErrors = [];\nvar actingPrincipalObject = null;\nvar targetUserObject = null;\n\ntry {\n // Get request object with form data\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n \n var requesterId = requestObj.requester.id;\n var requesterIdOnly = requesterId.replace(\"managed/user/\", \"\");\n \n // Extract form values\n var actingPrincipalUsername = requestObj.request.common.blob.form.actingPrincipalId;\n var targetUserUsername = requestObj.request.common.blob.form.targetUserId;\n var justification = requestObj.request.common.blob.form.justification;\n \n console.log(\"Acting Principal Username: \" + actingPrincipalUsername);\n console.log(\"Target User Username: \" + targetUserUsername);\n \n // Validate acting principal\n if (!actingPrincipalUsername || actingPrincipalUsername.trim() === \"\") {\n validationErrors.push(\"Acting Principal username is required\");\n } else {\n try {\n var actingPrincipalQuery = {\n \"_queryFilter\": 'userName eq \"' + actingPrincipalUsername.trim() + '\"'\n };\n var actingPrincipalResults = openidm.query(\"managed/alpha_user\", actingPrincipalQuery);\n \n if (actingPrincipalResults.resultCount === 0) {\n validationErrors.push(\"Acting Principal user not found: \" + actingPrincipalUsername);\n } else if (actingPrincipalResults.resultCount > 1) {\n validationErrors.push(\"Multiple users found with username: \" + actingPrincipalUsername);\n } else {\n actingPrincipalObject = actingPrincipalResults.result[0];\n \n // Verify requester is manager of acting principal\n if (!actingPrincipalObject.manager || !actingPrincipalObject.manager._id) {\n validationErrors.push(\"Acting Principal does not have a manager assigned\");\n } else if (actingPrincipalObject.manager._id !== requesterIdOnly) {\n validationErrors.push(\"You are not the manager of \" + actingPrincipalUsername + \". You can only act on behalf of your direct reports.\");\n } else {\n console.log(\"Acting Principal validated: \" + actingPrincipalObject.userName);\n }\n }\n } catch (e) {\n validationErrors.push(\"Error validating Acting Principal: \" + e.message);\n }\n }\n \n // Validate target user\n if (!targetUserUsername || targetUserUsername.trim() === \"\") {\n validationErrors.push(\"Target User username is required\");\n } else {\n try {\n var targetUserQuery = {\n \"_queryFilter\": 'userName eq \"' + targetUserUsername.trim() + '\"'\n };\n var targetUserResults = openidm.query(\"managed/alpha_user\", targetUserQuery);\n \n if (targetUserResults.resultCount === 0) {\n validationErrors.push(\"Target User not found: \" + targetUserUsername);\n } else if (targetUserResults.resultCount > 1) {\n validationErrors.push(\"Multiple users found with username: \" + targetUserUsername);\n } else {\n targetUserObject = targetUserResults.result[0];\n \n // Verify user type is External\n if (targetUserObject.userType !== \"External\") {\n validationErrors.push(\"Target User must be of type 'External'. User \" + targetUserUsername + \" is type: \" + (targetUserObject.userType || \"Unknown\"));\n } else {\n console.log(\"Target User validated: \" + targetUserObject.userName);\n }\n }\n } catch (e) {\n validationErrors.push(\"Error validating Target User: \" + e.message);\n }\n }\n \n // Validate justification\n if (!justification || justification.trim() === \"\") {\n validationErrors.push(\"Justification is required\");\n } else if (justification.trim().length < 10) {\n validationErrors.push(\"Justification must be at least 10 characters\");\n }\n \n // Prevent self-disable via delegation\n if (actingPrincipalObject && targetUserObject && actingPrincipalObject._id === targetUserObject._id) {\n validationErrors.push(\"Cannot disable the same user you are acting on behalf of\");\n }\n \n // Check if all validations passed\n if (validationErrors.length === 0) {\n validationPassed = true;\n \n // Store user details for display in approval\n execution.setVariable(\"actingPrincipalUserName\", actingPrincipalObject.userName);\n execution.setVariable(\"actingPrincipalFullName\", actingPrincipalObject.givenName + \" \" + actingPrincipalObject.sn);\n execution.setVariable(\"actingPrincipalId\", actingPrincipalObject._id);\n \n execution.setVariable(\"targetUserUserName\", targetUserObject.userName);\n execution.setVariable(\"targetUserFullName\", targetUserObject.givenName + \" \" + targetUserObject.sn);\n execution.setVariable(\"targetUserId\", targetUserObject._id);\n \n execution.setVariable(\"justification\", justification);\n \n console.log(\"All validations passed\");\n } else {\n console.log(\"Validation failed: \" + validationErrors.join(\"; \"));\n }\n \n} catch (e) {\n validationPassed = false;\n validationErrors.push(\"System error during validation: \" + e.message);\n console.log(\"Validation exception: \" + e.message);\n}\n\n// Set workflow variables\nexecution.setVariable(\"validationPassed\", validationPassed);\nexecution.setVariable(\"validationErrors\", validationErrors.join(\"\\n\"));\n\nconsole.log(\"=== Validation Complete: \" + (validationPassed ? \"PASSED\" : \"FAILED\") + \" ===\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Validation Passed?", + "name": "exclusiveGateway-d5b7b2e2a80a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "validationPassed == true", + "outcome": "validationSuccess", + "step": "approvalTask-bebe49db4dac" + }, + { + "condition": "validationPassed == false", + "outcome": "validationFailure", + "step": "scriptTask-449aac6b18b8" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Auto-Reject - Validation Failed", + "name": "scriptTask-449aac6b18b8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "/*\n * Auto-Reject - Validation Failed\n * Rejects request with detailed error messages\n */\n\nvar content = execution.getVariables();\nvar requestId = content.get('_id');\nvar validationErrors = content.get('validationErrors') || \"Validation failed\";\n\nconsole.log(\"Auto-rejecting request due to validation errors\");\n\ntry {\n var decision = {\n 'decision': 'rejected',\n 'status': 'complete',\n 'comment': 'Request automatically rejected due to validation errors:\\n\\n' + validationErrors + '\\n\\nPlease correct the errors and submit a new request.'\n };\n \n var updateParams = {\n '_action': 'update'\n };\n \n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, updateParams);\n \n console.log(\"Request \" + requestId + \" rejected - validation failed\");\n \n} catch (e) {\n console.log(\"Error rejecting request: \" + e.message);\n throw e;\n}" + }, + "type": "scriptTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "doNothing", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-4f4b87291099" + }, + { + "condition": null, + "outcome": "REJECT", + "step": null + } + ] + }, + "displayName": "Manager Approval", + "name": "approvalTask-bebe49db4dac", + "type": "approvalTask" + }, + { + "displayName": "Disable User Account", + "name": "scriptTask-4f4b87291099", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "/*\n * Fulfillment - Disable User Account\n * Disables the target user's account\n */\n\nvar content = execution.getVariables();\nvar requestId = content.get('_id');\nvar targetUserId = content.get('targetUserId');\nvar justification = content.get('justification');\nvar actingPrincipalUserName = content.get('actingPrincipalUserName');\n\nconsole.log(\"=== Fulfillment Start ===\");\nconsole.log(\"Disabling user ID: \" + targetUserId);\n\ntry {\n // Read current user state\n var targetUser = openidm.read(\"managed/alpha_user/\" + targetUserId);\n \n if (!targetUser) {\n throw new Error(\"Target user not found: \" + targetUserId);\n }\n \n console.log(\"Current user status: \" + (targetUser.accountStatus || \"active\"));\n \n // Prepare patch operations to disable the account\n var patchOperations = [\n {\n \"operation\": \"replace\",\n \"field\": \"/accountStatus\",\n \"value\": \"inactive\"\n }\n ];\n \n // Add a description/note about the disable action\n if (targetUser.description) {\n patchOperations.push({\n \"operation\": \"replace\",\n \"field\": \"/description\",\n \"value\": targetUser.description + \"\\n[\" + new Date().toISOString() + \"] Disabled via delegation by \" + actingPrincipalUserName + \". Reason: \" + justification\n });\n } else {\n patchOperations.push({\n \"operation\": \"add\",\n \"field\": \"/description\",\n \"value\": \"[\" + new Date().toISOString() + \"] Disabled via delegation by \" + actingPrincipalUserName + \". Reason: \" + justification\n });\n }\n \n // Execute the patch\n var updateResult = openidm.patch(\"managed/alpha_user/\" + targetUserId, null, patchOperations);\n \n console.log(\"User \" + targetUser.userName + \" successfully disabled\");\n console.log(\"Account status set to: inactive\");\n \n // Set success variables\n execution.setVariable(\"fulfillmentStatus\", \"completed\");\n execution.setVariable(\"fulfillmentMessage\", \"User account \" + targetUser.userName + \" has been successfully disabled\");\n \n // Update request with completion details\n try {\n var requestUpdate = {\n 'status': 'complete',\n 'decision': 'approved'\n };\n \n openidm.action('iga/governance/requests/' + requestId, 'POST', requestUpdate, {'_action': 'update'});\n } catch (updateError) {\n console.log(\"Could not update request status: \" + updateError.message);\n }\n \n} catch (e) {\n logger.error(\"Fulfillment error: \" + e.message);\n execution.setVariable(\"fulfillmentStatus\", \"failed\");\n execution.setVariable(\"fulfillmentMessage\", \"Error disabling user: \" + e.message);\n \n // Don't throw - let workflow complete but mark as failed\n // You might want to send a notification here\n}\n\nconsole.log(\"=== Fulfillment Complete ===\");" + }, + "type": "scriptTask" + } + ] + } + }, + "phhInternalRoleEntitlementGrant": { + "draft": { + "childType": false, + "description": "phh-InternalRoleEntitlementGrant", + "displayName": "phh-InternalRoleEntitlementGrant", + "id": "phhInternalRoleEntitlementGrant", + "mutable": true, + "name": "phh-InternalRoleEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2597, + "y": 322 + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + } + ], + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 722, + "y": 156 + }, + "exclusiveGateway-48e748c42994": { + "x": 1731, + "y": 88.015625 + }, + "exclusiveGateway-67a954f33919": { + "x": 467, + "y": 121.015625 + }, + "inclusiveGateway-3f85f36eeeef": { + "x": 948, + "y": 57.015625 + }, + "inclusiveGateway-f105ed2b352d": { + "x": 2255, + "y": 48.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 1972, + "y": 119.015625 + }, + "scriptTask-0b56191887de": { + "x": 1979, + "y": 212.015625 + }, + "scriptTask-3eab1948f1ec": { + "x": 1434, + "y": 95.015625 + }, + "scriptTask-91769554db51": { + "x": 2561, + "y": 74.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 1441, + "y": 268.015625 + }, + "scriptTask-e04f42607ba5": { + "x": 186, + "y": 143.015625 + }, + "scriptTask-e21178ab80f7": { + "x": 716, + "y": 74.015625 + }, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 1208, + "y": 30.015625 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*1*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-e21178ab80f7" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask" + }, + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-48e748c42994" + } + ], + "script": "logger.info(\"Running entitlement grant request validation\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\nvar applicationId = null;\nvar assignmentId = null;\nvar app = null;\nvar assignment = null;\nvar existingAccount = false;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n assignmentId = requestObj.assignment.id;\n}\ncatch (e) {\n failureReason = \"Validation failed: Error reading request with id \" + requestId;\n}\n\n// Validation 1 - Check application exists\nif (!failureReason) {\n try {\n app = openidm.read('managed/alpha_application/' + applicationId);\n if (!app) {\n failureReason = \"Validation failed: Cannot find application with id \" + applicationId;\n }\n }\n catch (e) {\n failureReason = \"Validation failed: Error reading application with id \" + applicationId + \". Error message: \" + e.message;\n }\n}\n\n// Validation 2 - Check entitlement exists\nif (!failureReason) {\n try {\n assignment = openidm.read('managed/alpha_assignment/' + assignmentId);\n if (!assignment) {\n failureReason = \"Validation failed: Cannot find assignment with id \" + assignmentId;\n }\n }\n catch (e) {\n failureReason = \"Validation failed: Error reading assignment with id \" + assignmentId + \". Error message: \" + e.message;\n }\n}\n\n// Validation 3 - Check the user has application granted\nif (!failureReason) {\n try {\n var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);\n user.effectiveApplications.forEach(effectiveApp => {\n if (effectiveApp._id === applicationId) {\n existingAccount = true;\n }\n })\n }\n catch (e) {\n failureReason = \"Validation failed: Unable to check existing applications of user with id \" + requestObj.user.id + \". Error message: \" + e.message;\n }\n}\n\n// Validation 4 - If account does not exist, provision it\nif (!failureReason) {\n if (!existingAccount) {\n try {\n var request = requestObj.request;\n var payload = {\n \"applicationId\": applicationId,\n \"startDate\": request.common.startDate,\n \"endDate\": request.common.endDate,\n \"auditContext\": {},\n \"grantType\": \"request\"\n };\n var queryParams = {\n \"_action\": \"add\"\n }\n\n logger.info(\"Creating account: \" + payload);\n var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);\n }\n catch (e) {\n var err = e.javaException; \n err = JSON.parse(err.detail);\n var message = err && err.body ? err.body.response : e.message;\n failureReason = \"Validation failed: Error provisioning new account to user \" + request.common.userId + \" for application \" + applicationId + \". Error message: \" + message;\n }\n }\n}\n\nif (failureReason) {\n logger.info(\"Validation failed: \" + failureReason);\n}\nexecution.setVariable(\"failureReason\", failureReason); " + }, + "type": "scriptTask" + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2" + }, + { + "condition": "failureReason != null", + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = content.get('failureReason');\n\nvar decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d" + } + ], + "script": "logger.info(\"Provisioning\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n logger.info(\"requestObj: \" + requestObj);\n}\ncatch (e) {\n failureReason = \"Provisioning failed: Error reading request with id \" + requestId;\n}\n\nif(!failureReason) {\n try {\n var request = requestObj.request;\n var payload = {\n \"entitlementId\": request.common.entitlementId,\n \"auditContext\": {},\n \"grantType\": \"request\",\n \"requestId\": requestObj.id,\n };\n var queryParams = {\n \"_action\": \"add\",\n \"initiatingUser\": requestObj.requester.id\n }\n\n var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);\n }\n catch (e) {\n var err = e.javaException; \n err = JSON.parse(err.detail);\n var message = err && err.body ? err.body.response : e.message;\n failureReason = \"Provisioning failed: Error provisioning entitlement to user \" + request.common.userId + \" for entitlement \" + request.common.entitlementId + \". Error message: \" + message;\n }\n \n var decision = {'status': 'complete', 'decision': 'approved'};\n if (failureReason) {\n decision.outcome = 'not provisioned';\n decision.comment = failureReason;\n decision.failure = true;\n execution.setVariable('enableEndWait', false);\n }\n else {\n decision.outcome = 'provisioned';\n }\n\n var queryParams = { '_action': 'update'};\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n logger.info(\"Request \" + requestId + \" completed.\");\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Rejecting request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\n\n// Complete request as rejected\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = null;\nvar enableWait = false;\nvar enableEndWait = false;\nvar skipApproval = false;\ntry {\n // Read request object\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n if (requestObj.request.common.context) {\n context = requestObj.request.common.context.type;\n if (context == 'admin') {\n skipApproval = true;\n }\n }\n if (requestObj.request.common.startDate){\n enableWait = true;\n }\n if (requestObj.request.common.endDate){\n enableEndWait = true;\n }\n}\ncatch (e) {\n logger.info(\"Request Context Check failed \" + e.message);\n}\n\nlogger.info(\"Context: \" + context);\nexecution.setVariable(\"context\", context);\nexecution.setVariable(\"enableWait\", enableWait);\nexecution.setVariable(\"enableEndWait\", enableEndWait);\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-3f85f36eeeef" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = content.get('context');\nvar skipApproval = content.get('skipApproval');\nvar queryParams = {\n \"_action\": \"update\"\n}\ntry {\n var decision = {\n \"decision\": \"approved\",\n }\n if(skipApproval){\n decision.comment = \"Request auto-approved due to request context: \" + context;\n }\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n\n}\ncatch (e) {\n var failureReason = \"Failure updating decision on request. Error message: \" + e.message;\n var update = { 'comment': failureReason, 'failure': true };\n openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7" + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Has Start Date", + "name": "inclusiveGateway-3f85f36eeeef", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableWait == true", + "outcome": "hasStartDate", + "step": "waitTask-0d53639996da" + }, + { + "condition": "enableWait == false", + "outcome": "noStartDate", + "step": "scriptTask-3eab1948f1ec" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Wait Task", + "name": "waitTask-0d53639996da", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "scriptTask-3eab1948f1ec" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Has End Date", + "name": "inclusiveGateway-f105ed2b352d", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "enableEndWait == true", + "outcome": "hasEndDate", + "step": "scriptTask-91769554db51" + }, + { + "condition": "enableEndWait == false", + "outcome": "noEndDate", + "step": null + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Create Removal Request", + "name": "scriptTask-91769554db51", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Create Removal Request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n logger.info(\"requestObj: \" + requestObj);\n}\ncatch (e) {\n failureReason = \"Create Removal Request failed: Error reading request with id \" + requestId;\n}\n\nif(!failureReason){\n try{\n var request = requestObj.request;\n var newRequestPayload = {\n \"common\":{\n \"context\": {\n \"type\": \"admin\"\n },\n \"entitlementId\": request.common.entitlementId,\n \"userId\": request.common.userId,\n \"endDate\": request.common.endDate,\n \"justification\": \"Request submitted automatically to remove access granted by request: \" + requestId\n }\n };\n var queryParam = {\n '_action': \"publish\"\n }\n openidm.action('iga/governance/requests/entitlementRemove', 'POST', newRequestPayload, queryParam)\n }catch(e){\n logger.warn('Create Removal Request failed to create')\n }\n }" + }, + "type": "scriptTask" + } + ], + "type": "provisioning" + }, + "published": null + }, + "phhNeDisable": { + "draft": null, + "published": { + "childType": false, + "description": "phh-ne-disable", + "displayName": "phh-ne-disable", + "id": "phhNeDisable", + "mutable": true, + "name": "phh-ne-disable", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 601, + "y": 255 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "scriptTask-99fdf317c49b" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 50, + "y": 250 + }, + "uiConfig": { + "scriptTask-99fdf317c49b": { + "x": 270.3999938964844, + "y": 250.6125030517578 + } + } + }, + "status": "published", + "steps": [ + { + "displayName": "Load Delegate Sources", + "name": "scriptTask-99fdf317c49b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "/*\n * Load Delegate Sources\n * Queries users the current requester can act on behalf of\n */\n\nvar content = execution.getVariables();\nvar requestId = content.get('_id');\n\ntry {\n // Get the request to find requester\n var requestObj = openidm.read('iga/governance/requests/' + requestId);\n var requesterId = requestObj.requester.id;\n var requesterIdOnly = requesterId.replace(\"managed/user/\", \"\");\n \n console.log(\"=== Loading Delegation Options ===\");\n console.log(\"Requester ID: \" + requesterIdOnly);\n \n // Query users where current user is the manager\n var queryParams = {\n \"_queryFilter\": 'manager._id eq \"' + requesterIdOnly + '\"',\n \"_fields\": \"userName,givenName,sn,mail,_id\"\n };\n \n var results = openidm.query(\"managed/alpha_user\", queryParams);\n console.log(\"Results: \" + results);\n \n // Build options array\n var options = [];\n \n if (results.resultCount > 0) {\n results.result.forEach(function(user) {\n options.push({\n \"value\": user._id,\n \"label\": user.givenName + \" \" + user.sn + \" (\" + user.userName + \")\"\n });\n });\n \n logger.info(\"Found \" + options.length + \" delegation options\");\n } else {\n logger.warn(\"No direct reports found for requester\");\n options.push({\n \"value\": \"\",\n \"label\": \"No direct reports found\"\n });\n }\n \n // Store options as JSON string\n execution.setVariable(\"delegationOptions\", JSON.stringify(options));\n execution.setVariable(\"hasDelegationOptions\", results.resultCount > 0);\n execution.setVariable(\"delegationOptionsCount\", results.resultCount);\n \n} catch (e) {\n logger.error(\"Error loading delegation options: \" + e.message);\n execution.setVariable(\"delegationOptions\", \"[]\");\n execution.setVariable(\"hasDelegationOptions\", false);\n execution.setVariable(\"delegationOptionsCount\", 0);\n}\n\nlogger.info(\"=== Delegation Options Loaded ===\");" + }, + "type": "scriptTask" + } + ] + } + }, + "phhNewUserCreate": { + "draft": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1348, + "y": 177.5 + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a" + }, + "id": "startNode", + "x": 70, + "y": 177.5 + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 777, + "y": 226 + }, + "exclusiveGateway-621c9996676a": { + "x": 514, + "y": 153 + }, + "scriptTask-0e5b6187ea62": { + "x": 777, + "y": 80 + }, + "scriptTask-4e9121fe850a": { + "x": 210, + "y": 179.5 + }, + "scriptTask-626899b6e99a": { + "x": 1049, + "y": 97.66666666666667 + }, + "scriptTask-c58309b8c470": { + "x": 1049, + "y": 234.83333333333334 + } + } + }, + "status": "draft", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"[phh] Creating User\");\nfunction generateUsername(givenName, surname) {\nconst usernamePrefix = (givenName[0] + surname[0]).toLowerCase();\nconst data = openidm.query(\"managed/alpha_user\", {'_queryFilter': `userName sw \"${usernamePrefix}\"`}, [\"userName\"]);\nconst usernames = data.result.map(user => user.userName);\nlet i = 1;\nwhile (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) {\ni++;\n}\nreturn usernamePrefix + String(i).padStart(5, '0');\n}\nfunction createUser(custom) {\nvar startDate = new Date(custom.startDate).toISOString();\nvar endDate = new Date(custom.endDate).toISOString();\nvar payload = {\n\"userName\": custom.userName,\n\"givenName\": custom.givenName,\n\"sn\": custom.sn,\n\"mail\": custom.mail,\n\"password\": custom.password,\n\"frIndexedDate5\":startDate,\n\"frIndexedDate4\":endDate\n};\nreturn openidm.create('managed/alpha_user', null, payload);\n}\nfunction process(requestObj) {\nvar custom = requestObj.request.custom\ncustom.userName = generateUsername(custom.givenName, custom.sn);\ncustom.password = 'Password!234';\nconst result = createUser(custom);\nreturn { outcome: \"provisioned\" };\n}\ntry {\nconst requestId = execution.getVariables().get(\"id\");\nconst requestObj = openidm.action(`iga/governance/requests/${requestId}`, \"GET\", {}, {});\nlet decision = { status: \"complete\", \"decision\": \"approved\" };\ntry {\nconst result = process(requestObj);\nObject.assign(decision, result);\n} catch (error) {\nObject.assign(decision, { outcome: \"unknown\", comment: `Error processing request ${requestId}: ${e.message}`, failure: true });\n}\nopenidm.action(`iga/governance/requests/${requestId}`, 'POST', decision, { _action: \"update\"});\n} catch (e) {\nlogger.error(`Error reading request ${requestId}: ${e}`);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Rejecting request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\n\n// Complete request as rejected\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = null;\nvar enableWait = false;\nvar enableEndWait = false;\nvar skipApproval = false;\ntry {\n // Read request object\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n if (requestObj.request.common.context) {\n context = requestObj.request.common.context.type;\n if (context == 'admin') {\n skipApproval = true;\n }\n }\n if (requestObj.request.common.startDate){\n enableWait = true;\n }\n if (requestObj.request.common.endDate){\n enableEndWait = true;\n }\n}\ncatch (e) {\n logger.info(\"Request Context Check failed \" + e.message);\n}\nlogger.info(\"Context: \" + context);\nexecution.setVariable(\"context\", context);\nexecution.setVariable(\"enableWait\", enableWait);\nexecution.setVariable(\"enableEndWait\", enableEndWait);\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-626899b6e99a" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = content.get('context');\nvar skipApproval = content.get('skipApproval');\nvar queryParams = {\n \"_action\": \"update\"\n}\ntry {\n var decision = {\n \"decision\": \"approved\",\n }\n if (skipApproval) {\n decision.comment = \"Request auto-approved due to request context: \" + context;\n }\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n\n}\ncatch (e) {\n var failureReason = \"Failure updating decision on request. Error message: \" + e.message;\n var update = { 'comment': failureReason, 'failure': true };\n openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);\n}" + }, + "type": "scriptTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask" + } + ], + "type": "provisioning" + }, + "published": { + "childType": false, + "description": "phh-new-user-create", + "displayName": "phh-new-user-create", + "id": "phhNewUserCreate", + "mutable": true, + "name": "phh-new-user-create", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1348, + "y": 177.5 + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a" + }, + "id": "startNode", + "x": 70, + "y": 177.5 + }, + "uiConfig": { + "approvalTask-75cf4247ba1d": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 777, + "y": 226 + }, + "exclusiveGateway-621c9996676a": { + "x": 514, + "y": 153 + }, + "scriptTask-0e5b6187ea62": { + "x": 777, + "y": 80 + }, + "scriptTask-4e9121fe850a": { + "x": 210, + "y": 179.5 + }, + "scriptTask-626899b6e99a": { + "x": 1049, + "y": 97.66666666666667 + }, + "scriptTask-c58309b8c470": { + "x": 1049, + "y": 234.83333333333334 + } + } + }, + "status": "published", + "steps": [ + { + "displayName": "User Create Validation", + "name": "scriptTask-626899b6e99a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"[phh] Creating User\");\nfunction generateUsername(givenName, surname) {\nconst usernamePrefix = (givenName[0] + surname[0]).toLowerCase();\nconst data = openidm.query(\"managed/alpha_user\", {'_queryFilter': `userName sw \"${usernamePrefix}\"`}, [\"userName\"]);\nconst usernames = data.result.map(user => user.userName);\nlet i = 1;\nwhile (i<100000 && usernames.includes(usernamePrefix + String(i).padStart(5, '0'))) {\ni++;\n}\nreturn usernamePrefix + String(i).padStart(5, '0');\n}\nfunction createUser(custom) {\nvar startDate = new Date(custom.startDate).toISOString();\nvar endDate = new Date(custom.endDate).toISOString();\nvar payload = {\n\"userName\": custom.userName,\n\"givenName\": custom.givenName,\n\"sn\": custom.sn,\n\"mail\": custom.mail,\n\"password\": custom.password,\n\"frIndexedDate5\":startDate,\n\"frIndexedDate4\":endDate\n};\nreturn openidm.create('managed/alpha_user', null, payload);\n}\nfunction process(requestObj) {\nvar custom = requestObj.request.custom\ncustom.userName = generateUsername(custom.givenName, custom.sn);\ncustom.password = 'Password!234';\nconst result = createUser(custom);\nreturn { outcome: \"provisioned\" };\n}\ntry {\nconst requestId = execution.getVariables().get(\"id\");\nconst requestObj = openidm.action(`iga/governance/requests/${requestId}`, \"GET\", {}, {});\nlet decision = { status: \"complete\", \"decision\": \"approved\" };\ntry {\nconst result = process(requestObj);\nObject.assign(decision, result);\n} catch (error) {\nObject.assign(decision, { outcome: \"unknown\", comment: `Error processing request ${requestId}: ${e.message}`, failure: true });\n}\nopenidm.action(`iga/governance/requests/${requestId}`, 'POST', decision, { _action: \"update\"});\n} catch (e) {\nlogger.error(`Error reading request ${requestId}: ${e}`);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Reject Request", + "name": "scriptTask-c58309b8c470", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Rejecting request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\n\n// Complete request as rejected\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = null;\nvar enableWait = false;\nvar enableEndWait = false;\nvar skipApproval = false;\ntry {\n // Read request object\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n if (requestObj.request.common.context) {\n context = requestObj.request.common.context.type;\n if (context == 'admin') {\n skipApproval = true;\n }\n }\n if (requestObj.request.common.startDate){\n enableWait = true;\n }\n if (requestObj.request.common.endDate){\n enableEndWait = true;\n }\n}\ncatch (e) {\n logger.info(\"Request Context Check failed \" + e.message);\n}\nlogger.info(\"Context: \" + context);\nexecution.setVariable(\"context\", context);\nexecution.setVariable(\"enableWait\", enableWait);\nexecution.setVariable(\"enableEndWait\", enableEndWait);\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-0e5b6187ea62" + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-75cf4247ba1d" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Approved", + "name": "scriptTask-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-626899b6e99a" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = content.get('context');\nvar skipApproval = content.get('skipApproval');\nvar queryParams = {\n \"_action\": \"update\"\n}\ntry {\n var decision = {\n \"decision\": \"approved\",\n }\n if (skipApproval) {\n decision.comment = \"Request auto-approved due to request context: \" + context;\n }\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n\n}\ncatch (e) {\n var failureReason = \"Failure updating decision on request. Error message: \" + e.message;\n var update = { 'comment': failureReason, 'failure': true };\n openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);\n}" + }, + "type": "scriptTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/9de92b26-e91e-44b7-ac81-7ae1c6adf9ad" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-626899b6e99a" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-75cf4247ba1d", + "type": "approvalTask" + } + ], + "type": "provisioning" + } + }, + "testWorkflow1": { + "draft": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + }, + "published": { + "childType": false, + "description": "test_workflow_1", + "displayName": "test_workflow_1", + "id": "testWorkflow1", + "mutable": true, + "name": "test_workflow_1", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + } + }, + "testWorkflow4": { + "draft": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + }, + "published": { + "childType": false, + "description": "test_workflow_4", + "displayName": "test_workflow_4", + "id": "testWorkflow4", + "mutable": true, + "name": "test_workflow_4", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + } + }, + "testWorkflow5": { + "draft": { + "childType": false, + "description": "test_workflow_5", + "displayName": "test_workflow_5", + "id": "testWorkflow5", + "mutable": true, + "name": "test_workflow_5", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + }, + "published": null + }, + "testWorkflow6": { + "draft": null, + "published": { + "childType": false, + "description": "test_workflow_6", + "displayName": "test_workflow_6", + "id": "testWorkflow6", + "mutable": true, + "name": "test_workflow_6", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + } + }, + "testWorkflow7": { + "draft": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + }, + "published": { + "childType": false, + "description": "test_workflow_7", + "displayName": "test_workflow_7", + "id": "testWorkflow7", + "mutable": true, + "name": "test_workflow_7", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + } + }, + "testWorkflow8": { + "draft": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "draft", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + }, + "published": { + "childType": false, + "description": "test_workflow_8", + "displayName": "test_workflow_8", + "id": "testWorkflow8", + "mutable": true, + "name": "test_workflow_8", + "staticNodes": { + "endNode": { + "_outcomes": [], + "connections": {}, + "displayDetails": { + "icon": "checkmark", + "value": "Success", + "variant": "success" + }, + "displayType": "SingleInput", + "hasError": false, + "id": "endNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "End", + "nodeType": "SingleInput", + "schema": null, + "template": null, + "x": 826, + "y": 50 + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start" + } + ], + "connections": { + "start": "approvalTask-7e33e73d6763" + }, + "displayDetails": { + "icon": "play_arrow", + "value": "Start", + "variant": "info" + }, + "displayType": "IconOutcomeNode", + "hasError": false, + "id": "startNode", + "isDeleteable": false, + "isDroppable": false, + "isEditable": false, + "isHovered": false, + "name": "Start", + "nodeType": "IconOutcomeNode", + "schema": null, + "template": null, + "x": 20, + "y": 42 + }, + "uiConfig": { + "approvalTask-363e32acf981": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + }, + { + "id": { + "isExpression": false, + "value": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + }, + "type": "role" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "applicationOwner" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "type": "manager" + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "type": "entitlementOwner" + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "type": "roleOwner" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 478.3999938964844, + "y": 195.6125030517578 + }, + "approvalTask-7e33e73d6763": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDuration", + "expirationTimeSpan": "hour(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "reminderDate": 4, + "reminderTimeSpan": "month(s)" + }, + "x": 146.39999389648438, + "y": 15.61250305175781 + }, + "emailTask-2068f5d711c8": { + "x": 150.39999389648438, + "y": 648.812502861023 + }, + "emailTask-881f2975e240": { + "x": 478.3999938964844, + "y": 474.41250228881836 + }, + "exclusiveGateway-94bc3d35f3b4": { + "x": 145.39999389648438, + "y": 274.6125030517578 + }, + "fulfillmentTask-29a71d4ab8ed": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "variable", + "expirationDateVariable": "customExpirationDate", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1 + }, + "x": 479.3999938964844, + "y": 334.41250228881836 + }, + "fulfillmentTask-7fce35a32915": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "hour(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "reminderDate": 2, + "reminderTimeSpan": "month(s)" + }, + "x": 145.39999389648438, + "y": 146.6125030517578 + }, + "inclusiveGateway-a6cf9605ce55": { + "x": 147.39999389648438, + "y": 405.6125030517578 + }, + "scriptTask-493f5ea87636": { + "x": 148.39999389648438, + "y": 570.6125030517578 + }, + "violationTask-50261d9bc712": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "week(s)", + "escalationType": "applicationOwner", + "expirationDate": 8, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "month(s)", + "reassignedActors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "reminderDate": 3, + "reminderTimeSpan": "hour(s)" + }, + "x": 480.3999938964844, + "y": 13.61250305175781 + }, + "violationTask-f8066518b46a": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + }, + "type": "user" + } + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "variable", + "expirationDateVariable": "taskExpirationDate", + "reassignedActors": [] + }, + "x": 788.3999938964844, + "y": 613.4125022888184 + }, + "waitTask-72d593301121": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 476.3999938964844, + "y": 612.4125022888184 + }, + "waitTask-b343cc7df7c9": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "variable", + "resumeDateVariable": "resumeDate" + }, + "x": 476.3999938964844, + "y": 694.4125022888184 + }, + "waitTask-b7fc169ca4eb": { + "events": { + "resumeDateNumber": 5, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration" + }, + "x": 148.39999389648438, + "y": 779.812502861023 + } + } + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate1" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate1" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "date": { + "isExpression": true, + "value": "content.customExpirationDuration" + }, + "notification": "FrodoTestEmailTemplate1" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate1" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()" + }, + "frequency": 4, + "notification": "FrodoTestEmailTemplate1" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-7fce35a32915" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task", + "name": "approvalTask-7e33e73d6763", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task", + "fulfillmentTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate2" + }, + "escalation": { + "actors": [ + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate2" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate2" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate2" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()" + }, + "frequency": 2, + "notification": "FrodoTestEmailTemplate2" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "exclusiveGateway-94bc3d35f3b4" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-7fce35a32915", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Validation Gateway", + "name": "exclusiveGateway-94bc3d35f3b4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "// This is a validation success\noutcome == true", + "outcome": "validationSuccess", + "step": "inclusiveGateway-a6cf9605ce55" + }, + { + "condition": "// This is a validation failure\noutcome == false", + "outcome": "validationFailure", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Inclusive Gateway", + "name": "inclusiveGateway-a6cf9605ce55", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "// This is outcome 1\noutcome === 1", + "outcome": "outcomeOne", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 2\noutcome === 2", + "outcome": "outcomeTwo", + "step": "scriptTask-493f5ea87636" + }, + { + "condition": "// This is outcome 3\noutcome === 3", + "outcome": "outcomeThree", + "step": "violationTask-50261d9bc712" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Script Task", + "name": "scriptTask-493f5ea87636", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-2068f5d711c8" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/" + }, + "type": "scriptTask" + }, + { + "displayName": "Custom Violation Task", + "name": "violationTask-50261d9bc712", + "type": "violationTask", + "violationTask": { + "actors": { + "isExpression": true, + "value": "/**\nDefine custom script which returns an array of actors in the following format\n(function() {\n var content = execution.getVariables();\n var requestId = content.get('id');\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n return [{\n id: \"managed/user/\" + requestIndex.applicationOwner[0].id,\n permissions: {\n approve: true,\n reject: true,\n reassign: true,\n modify: true,\n comment: true\n }\n }];\n})()\n**/\n(\nfunction(){\n return [];\n}\n)()" + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "FrodoTestEmailTemplate3" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()" + }, + "frequency": 5, + "notification": "FrodoTestEmailTemplate3" + }, + "expiration": { + "action": "reassign", + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()" + }, + "notification": "FrodoTestEmailTemplate3" + }, + "reassign": { + "notification": "FrodoTestEmailTemplate3" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "FrodoTestEmailTemplate3" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + }, + { + "displayName": "Custom Email Task", + "emailTask": { + "bcc": { + "isExpression": true, + "value": "// This is the bcc script\n\"bcc@email.com\";" + }, + "cc": { + "isExpression": true, + "value": "// This is the cc script\n\"cc@email.com\";" + }, + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-b7fc169ca4eb" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": { + "hello": "goodbye", + "hi": "hola" + }, + "templateName": "frodoTestEmailTemplateFour", + "to": { + "isExpression": true, + "value": "// This is the to script\n\"to@email.com\";" + } + }, + "name": "emailTask-2068f5d711c8", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task", + "name": "waitTask-b7fc169ca4eb", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "approvalTask-363e32acf981" + } + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()" + } + } + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": "managed/role/be68f831-a8f3-42da-93df-84bbc66427f6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.manager.id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + }, + { + "id": { + "isExpression": true, + "value": "(function() {\n var systemSettings = openidm.action(\"iga/commons/config/iga_access_request\", \"GET\", {}, {});\n var approver = null;\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\n approver = \"managed/user/\" + requestIndex.roleOwner[0].id;\n } else if (systemSettings && systemSettings.defaultApprover) {\n approver = systemSettings.defaultApprover;\n }\n return approver;\n})()" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "fulfillmentTask-29a71d4ab8ed" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "violationTask-50261d9bc712" + } + ] + }, + "displayName": "Custom Approval Task 2", + "name": "approvalTask-363e32acf981", + "type": "approvalTask" + }, + { + "displayName": "Custom Fulfillment Task 2", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true + } + } + ], + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "content.customExpirationDate" + } + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "emailTask-881f2975e240" + }, + { + "condition": null, + "outcome": "DENY", + "step": "violationTask-50261d9bc712" + } + ] + }, + "name": "fulfillmentTask-29a71d4ab8ed", + "type": "fulfillmentTask" + }, + { + "displayName": "Custom Email Task 2", + "emailTask": { + "bcc": "bcc@email.com", + "cc": "cc@email.com", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": "waitTask-72d593301121" + }, + { + "condition": null, + "outcome": "FAILED", + "step": "violationTask-50261d9bc712" + } + ], + "object": {}, + "templateName": "frodoTestEmailTemplateFour", + "to": "to@email.com" + }, + "name": "emailTask-881f2975e240", + "type": "emailTask" + }, + { + "displayName": "Custom Wait Task 2", + "name": "waitTask-72d593301121", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "waitTask-b343cc7df7c9" + } + ], + "resumeDate": { + "isExpression": true, + "value": "requestIndex.request.common.startDate" + } + } + }, + { + "displayName": "Custom Wait Task 3", + "name": "waitTask-b343cc7df7c9", + "type": "waitTask", + "waitTask": { + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": "violationTask-f8066518b46a" + } + ], + "resumeDate": { + "isExpression": true, + "value": "content.get('resumeDate')" + } + } + }, + { + "displayName": "Custom Violation Task 2", + "name": "violationTask-f8066518b46a", + "type": "violationTask", + "violationTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "allow": true, + "comment": true, + "exception": true, + "reassign": true, + "remediate": true + } + } + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "REMEDIATE", + "step": null + }, + { + "condition": null, + "outcome": "ALLOW", + "step": null + }, + { + "condition": null, + "outcome": "EXPIRATION", + "step": "approvalTask-7e33e73d6763" + } + ] + } + } + ] + } + }, + "wfEntitlementExampleIsPrivileged": { + "draft": { + "childType": false, + "description": "wfEntitlementExampleIsPrivileged", + "displayName": "wfEntitlementExampleIsPrivileged", + "id": "wfEntitlementExampleIsPrivileged", + "mutable": true, + "name": "wfEntitlementExampleIsPrivileged", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2262, + "y": 220 + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5" + }, + "id": "startNode", + "x": 70, + "y": 176 + }, + "uiConfig": { + "approvalTask-63163dc11c1f": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.entitlementOwner[0].id ? \"managed/user/\" + requestIndex.entitlementOwner[0].id : \"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "type": "entitlementOwner" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 722, + "y": 265 + }, + "approvalTask-77691047b28d": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.user.manager._refResourceId" + }, + "type": "manager" + } + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 1219, + "y": 273 + }, + "exclusiveGateway-48e748c42994": { + "x": 1917, + "y": 104 + }, + "exclusiveGateway-67a954f33919": { + "x": 462, + "y": 155 + }, + "inclusiveGateway-bcb05a148971": { + "x": 1216, + "y": 99 + }, + "scriptTask-0359a9d77ee2": { + "x": 1924, + "y": 258.6666666666667 + }, + "scriptTask-0b56191887de": { + "x": 1907, + "y": 367.33333333333337 + }, + "scriptTask-3eab1948f1ec": { + "x": 1532, + "y": 151.66666666666669 + }, + "scriptTask-5106f7a29d86": { + "x": 940, + "y": 210 + }, + "scriptTask-aec6c36b3a45": { + "x": 1567, + "y": 274.33333333333337 + }, + "scriptTask-e04f42607ba5": { + "x": 181, + "y": 178 + }, + "scriptTask-e21178ab80f7": { + "x": 724, + "y": 101 + } + } + }, + "status": "draft", + "steps": [ + { + "displayName": "Entitlement Grant Validation", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-48e748c42994" + } + ], + "script": "logger.info(\"Running entitlement grant request validation\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\nvar applicationId = null;\nvar assignmentId = null;\nvar app = null;\nvar assignment = null;\nvar existingAccount = false;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n assignmentId = requestObj.assignment.id;\n}\ncatch (e) {\n failureReason = \"Validation failed: Error reading request with id \" + requestId;\n}\n\n// Validation 1 - Check application exists\nif (!failureReason) {\n try {\n app = openidm.read('managed/alpha_application/' + applicationId);\n if (!app) {\n failureReason = \"Validation failed: Cannot find application with id \" + applicationId;\n }\n }\n catch (e) {\n failureReason = \"Validation failed: Error reading application with id \" + applicationId + \". Error message: \" + e.message;\n }\n}\n\n// Validation 2 - Check entitlement exists\nif (!failureReason) {\n try {\n assignment = openidm.read('managed/alpha_assignment/' + assignmentId);\n if (!assignment) {\n failureReason = \"Validation failed: Cannot find assignment with id \" + assignmentId;\n }\n }\n catch (e) {\n failureReason = \"Validation failed: Error reading assignment with id \" + assignmentId + \". Error message: \" + e.message;\n }\n}\n\n// Validation 3 - Check the user has application granted\nif (!failureReason) {\n try {\n var user = openidm.read('managed/alpha_user/' + requestObj.user.id, null, [ 'effectiveApplications' ]);\n user.effectiveApplications.forEach(effectiveApp => {\n if (effectiveApp._id === applicationId) {\n existingAccount = true;\n }\n })\n }\n catch (e) {\n failureReason = \"Validation failed: Unable to check existing applications of user with id \" + requestObj.user.id + \". Error message: \" + e.message;\n }\n}\n\n// Validation 4 - If account does not exist, provision it\nif (!failureReason) {\n if (!existingAccount) {\n try {\n var request = requestObj.request;\n var payload = {\n \"applicationId\": applicationId,\n \"startDate\": request.common.startDate,\n \"endDate\": request.common.endDate,\n \"auditContext\": {},\n \"grantType\": \"request\"\n };\n var queryParams = {\n \"_action\": \"add\"\n }\n\n logger.info(\"Creating account: \" + payload);\n var result = openidm.action('iga/governance/user/' + request.common.userId + '/applications' , 'POST', payload,queryParams);\n }\n catch (e) {\n failureReason = \"Validation failed: Error provisioning new account to user \" + request.common.userId + \" for application \" + applicationId + \". Error message: \" + e.message;\n }\n }\n}\n\nif (failureReason) {\n logger.info(\"Validation failed: \" + failureReason);\n}\nexecution.setVariable(\"failureReason\", failureReason); " + }, + "type": "scriptTask" + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "failureReason == null", + "outcome": "validationFlowSuccess", + "step": "scriptTask-0359a9d77ee2" + }, + { + "condition": "failureReason != null", + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Entitlement Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = content.get('failureReason');\n\nvar decision = {'outcome': 'not provisioned', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'approved'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Auto Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Auto-Provisioning\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar failureReason = null;\n\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n logger.info(\"requestObj: \" + requestObj);\n}\ncatch (e) {\n failureReason = \"Provisioning failed: Error reading request with id \" + requestId;\n}\n\nif(!failureReason) {\n try {\n var request = requestObj.request;\n var payload = {\n \"entitlementId\": request.common.entitlementId,\n \"startDate\": request.common.startDate,\n \"endDate\": request.common.endDate,\n \"auditContext\": {},\n \"grantType\": \"request\"\n };\n var queryParams = {\n \"_action\": \"add\"\n }\n\n var result = openidm.action('iga/governance/user/' + request.common.userId + '/entitlements' , 'POST', payload,queryParams);\n }\n catch (e) {\n failureReason = \"Provisioning failed: Error provisioning entitlement to user \" + request.common.userId + \" for entitlement \" + request.common.entitlementId + \". Error message: \" + e.message;\n }\n \n var decision = {'status': 'complete', 'decision': 'approved'};\n if (failureReason) {\n decision.outcome = 'not provisioned';\n decision.comment = failureReason;\n decision.failure = true;\n }\n else {\n decision.outcome = 'provisioned';\n }\n\n var queryParams = { '_action': 'update'};\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n logger.info(\"Request \" + requestId + \" completed.\");\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null + } + ], + "script": "logger.info(\"Rejecting request\");\n\nvar content = execution.getVariables();\nvar requestId = content.get('id');\n\nlogger.info(\"Execution Content: \" + content);\nvar requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\nvar decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};\nvar queryParams = { '_action': 'update'};\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);" + }, + "type": "scriptTask" + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = null;\nvar skipApproval = false;\nvar lineItemId = false;\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n if (requestObj.request.common.context) {\n context = requestObj.request.common.context.type;\n lineItemId = requestObj.request.common.context.lineItemId;\n if (context == 'admin') {\n skipApproval = true;\n }\n }\n}\ncatch (e) {\n logger.info(\"Request Context Check failed \"+e.message);\n}\n\nlogger.info(\"Context: \" + context);\nexecution.setVariable(\"context\", context);\nexecution.setVariable(\"lineItemId\", lineItemId);\nexecution.setVariable(\"skipApproval\", skipApproval);" + }, + "type": "scriptTask" + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "scriptTask-3eab1948f1ec" + } + ], + "script": "/*\nScript nodes are used to invoke APIs or execute business logic.\nYou can invoke governance APIs or IDM APIs.\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\n\nScript nodes should return a single value and should have the\nlogic enclosed in a try-catch block.\n\nExample:\ntry {\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n applicationId = requestObj.application.id;\n}\ncatch (e) {\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\n}\n*/\nvar content = execution.getVariables();\nvar requestId = content.get('id');\nvar context = content.get('context');\nvar lineItemId = content.get('lineItemId');\nvar queryParams = {\n \"_action\": \"update\"\n}\nvar lineItemParams = {\n \"_action\": \"updateRemediationStatus\"\n}\ntry {\n var decision = {\n \"decision\": \"approved\",\n \"comment\": \"Request auto-approved due to request context: \" + context\n }\n openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\n}\ncatch (e) {\n var failureReason = \"Failure updating decision on request. Error message: \" + e.message;\n var update = {'comment': failureReason, 'failure': true};\n openidm.action('iga/governance/requests/' + requestId, 'POST', update, queryParams);\n \n\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-67a954f33919", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-e21178ab80f7" + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-63163dc11c1f" + } + ], + "script": "logger.info(\"This is exclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "displayName": "Entitlement Privileged", + "name": "scriptTask-5106f7a29d86", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "inclusiveGateway-bcb05a148971" + } + ], + "script": "var content = execution.getVariables();\nvar requestId = content.get('id');\nvar requestObj = null;\nvar entId = null;\nvar entGlossary = null;\nvar entPriv = null;\n\n//Check entitlement exists and grab entitlement info\ntry {\n requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\n entId = requestObj.assignment.id;\n}\ncatch (e) {\n logger.info(\"Validation failed: Error reading entitlement grant request with id \" + requestId);\n}\n//Check glossary for entitlement exists and grab glossary info\ntry {\n entGlossary = openidm.action('iga/governance/resource/' + entId + '/glossary', 'GET', {}, {});\n // Sets entPriv based on the glossary contents, if present, otherwise defaults to true\n entPriv = (entGlossary.hasOwnProperty(\"isPrivileged\")) ? entGlossary.isPrivileged : true;\n //Sets entPriv based on glossary contents, if present, otherwise defaults to false\n //entPriv = !!entGlossary.isPrivileged;\n execution.setVariable(\"entPriv\", entPriv);\n}\ncatch (e) {\n logger.info(\"Could not retrieve glossary with entId \" + entId + \" from entitlement grant request ID \" + requestId);\n}" + }, + "type": "scriptTask" + }, + { + "displayName": "Inclusive Gateway", + "name": "inclusiveGateway-bcb05a148971", + "scriptTask": { + "gatewayType": "inclusive", + "language": "javascript", + "nextStep": [ + { + "condition": "entPriv == true", + "outcome": "Privileged", + "step": "approvalTask-77691047b28d" + }, + { + "condition": "entPriv == false", + "outcome": "NotPrivileged", + "step": "scriptTask-3eab1948f1ec" + } + ], + "script": "logger.info(\"This is inclusive gateway\");" + }, + "type": "scriptTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.user.manager._refResourceId" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "frequency": 7, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-3eab1948f1ec" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45" + } + ] + }, + "displayName": "Manager Approval", + "name": "approvalTask-77691047b28d", + "type": "approvalTask" + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": { + "isExpression": true, + "value": "\"managed/user/\" + requestIndex.entitlementOwner[0].id ? \"managed/user/\" + requestIndex.entitlementOwner[0].id : \"managed/user/\" + requestIndex.applicationOwner[0].id" + }, + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true + } + } + ], + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned" + }, + "escalation": { + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()" + }, + "notification": "requestEscalated" + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/034484bf-1448-40b8-bdfa-56990ef0cc30" + } + ], + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()" + }, + "frequency": 7, + "notification": "requestExpired" + }, + "reassign": { + "notification": "requestReassigned" + }, + "reminder": { + "date": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(3*24*60*60*1000))).toISOString()" + }, + "frequency": 3, + "notification": "requestReminder" + } + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-5106f7a29d86" + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45" + } + ] + }, + "displayName": "Approval Task", + "name": "approvalTask-63163dc11c1f", + "type": "approvalTask" + } + ], + "type": "provisioning" + }, + "published": null + } + } +} diff --git a/test/e2e/iga-workflow-describe.e2e.test.js b/test/e2e/iga-workflow-describe.e2e.test.js new file mode 100644 index 000000000..d8c187cba --- /dev/null +++ b/test/e2e/iga-workflow-describe.e2e.test.js @@ -0,0 +1,84 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow describe -i testWorkflow1 -f test/e2e/exports/all/allWorkflows.workflow.json +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow describe --workflow-id testWorkflow1 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow describe --file test/e2e/exports/all/allWorkflows.workflow.json + */ +import cp from 'child_process'; +import { promisify } from 'util'; +import { getEnv, removeAnsiEscapeCodes } from './utils/TestUtils'; +import { iga_connection as ic } from './utils/TestConfig'; + +const exec = promisify(cp.exec); + +process.env['FRODO_MOCK'] = '1'; +const igaEnv = getEnv(ic); + +const allWorkflowsFile = "test/e2e/exports/all/allWorkflows.workflow.json"; + +describe(`frodo iga workflow describe`, () => { + test(`"frodo iga workflow describe -i testWorkflow1 -f ${allWorkflowsFile}": should describe workflow 'testWorkflow1' from file ${allWorkflowsFile}`, async () => { + const CMD = `frodo iga workflow describe -i testWorkflow1 -f ${allWorkflowsFile}`; + const { stdout } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow describe --workflow-id testWorkflow1": should describe workflow 'testWorkflow1'`, async () => { + const CMD = `frodo iga workflow describe --workflow-id testWorkflow1`; + const { stdout } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow describe --file ${allWorkflowsFile}": should describe first workflow from file ${allWorkflowsFile}`, async () => { + const CMD = `frodo iga workflow describe --file ${allWorkflowsFile}`; + const { stdout } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); +}); diff --git a/test/e2e/iga-workflow-export.e2e.test.js b/test/e2e/iga-workflow-export.e2e.test.js new file mode 100644 index 000000000..7ea17cf14 --- /dev/null +++ b/test/e2e/iga-workflow-export.e2e.test.js @@ -0,0 +1,102 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow export -Nxi testWorkflow1 -D testWorkflowExportDir1 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow export --workflow-id testWorkflow1 --no-coords --no-deps -f testWorkflowExportFile1.json +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow export --no-metadata -a --directory testWorkflowExportDir2 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow export --all -R --no-coords --no-deps --use-string-arrays --file testWorkflowExportFile2.json +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow export -xNAD testWorkflowExportDir3 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4 + */ +import { getEnv, testExport } from './utils/TestUtils'; +import { iga_connection as ic } from './utils/TestConfig'; + +process.env['FRODO_MOCK'] = '1'; +const igaEnv = getEnv(ic); + +const type = 'workflow'; + +describe(`frodo iga workflow export`, () => { + test(`"frodo iga workflow export -i testWorkflow1": should export workflow 'testWorkflow1' with extracted scripts and no metadata`, async () => { + const exportDirectory = "testWorkflowExportDir1"; + const CMD = `frodo iga workflow export -Nxi testWorkflow1 -D ${exportDirectory}`; + await testExport(CMD, igaEnv, type, undefined, exportDirectory, false, true); + }); + + test(`"frodo iga workflow export --workflow-id testWorkflow1 --no-coords --no-deps -f testWorkflowExportFile1.json": should export workflow 'testWorkflow1' with no coordinates and no dependencies`, async () => { + const exportFile = 'testWorkflowExportFile1.json'; + const CMD = `frodo iga workflow export --workflow-id testWorkflow1 --no-coords --no-deps -f ${exportFile}`; + await testExport(CMD, igaEnv, type, exportFile, undefined, true, true); + }); + + test(`"frodo iga workflow export --no-metadata -a --directory testWorkflowExportDir2": should export all workflows with no metadata`, async () => { + const exportFile = 'allWorkflows.workflow.json'; + const exportDirectory = "testWorkflowExportDir2"; + const CMD = `frodo iga workflow export --no-metadata -a --directory ${exportDirectory}`; + await testExport(CMD, igaEnv, type, exportFile, exportDirectory, false, true); + }); + + test(`"frodo iga workflow export --all -R --no-coords --no-deps --use-string-arrays --file testWorkflowExportFile2.json": should export all workflows including non-mutable ones with no coordinates and no dependencies`, async () => { + const exportFile = 'testWorkflowExportFile2.json'; + const CMD = `frodo iga workflow export --all -R --no-coords --no-deps --use-string-arrays --file ${exportFile}`; + await testExport(CMD, igaEnv, type, exportFile, undefined, true, true); + }); + + test(`"frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata`, async () => { + const exportDirectory = "testWorkflowExportDir3"; + const CMD = `frodo iga workflow export -xNAD ${exportDirectory}`; + await testExport(CMD, igaEnv, type, undefined, exportDirectory, false, true); + }); + + test(`"frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D testWorkflowExportDir4": should export all workflows separately including non-mutable ones with no coordinates, no dependencies, and using string arrays`, async () => { + const exportDirectory = "testWorkflowExportDir4"; + const CMD = `frodo iga workflow export --all-separate --use-string-arrays --read-only --no-coords --no-deps -D ${exportDirectory}`; + await testExport(CMD, igaEnv, type, undefined, exportDirectory, true, true); + }); +}); diff --git a/test/e2e/iga-workflow-list.e2e.test.js b/test/e2e/iga-workflow-list.e2e.test.js new file mode 100644 index 000000000..d8d09aeda --- /dev/null +++ b/test/e2e/iga-workflow-list.e2e.test.js @@ -0,0 +1,82 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow list +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow list -l +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow list --long + */ +import cp from 'child_process'; +import { promisify } from 'util'; +import { getEnv, removeAnsiEscapeCodes } from './utils/TestUtils'; +import { iga_connection as ic } from './utils/TestConfig'; + +const exec = promisify(cp.exec); + +process.env['FRODO_MOCK'] = '1'; +const igaEnv = getEnv(ic); + +describe('frodo iga workflow list', () => { + test('"frodo iga workflow list": should list the ids of the workflows', async () => { + const CMD = `frodo iga workflow list`; + const { stdout } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); + + test('"frodo iga workflow list -l": should list the ids, names, mutability, and statuses of the workflows.', async () => { + const CMD = `frodo iga workflow list -l`; + const { stdout } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); + + test('"frodo iga workflow list --long": should list the ids, names, mutability, and statuses of the workflows.', async () => { + const CMD = `frodo iga workflow list --long`; + const { stdout } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); +}); diff --git a/test/e2e/iga-workflow-publish.e2e.test.js b/test/e2e/iga-workflow-publish.e2e.test.js new file mode 100644 index 000000000..2c825ae70 --- /dev/null +++ b/test/e2e/iga-workflow-publish.e2e.test.js @@ -0,0 +1,80 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow publish -i testWorkflow5 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow publish --workflow-id testWorkflow5 + */ +import cp from 'child_process'; +import { promisify } from 'util'; +import { getEnv, removeAnsiEscapeCodes } from './utils/TestUtils'; +import { iga_connection as ic } from './utils/TestConfig'; + +const exec = promisify(cp.exec); + +process.env['FRODO_MOCK'] = '1'; +const igaEnv = getEnv(ic); + +describe(`frodo iga workflow publish`, () => { + test(`"frodo iga workflow publish -i testWorkflow5": should publish workflow 'testWorkflow5'`, async () => { + const CMD = `frodo iga workflow publish -i testWorkflow5`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow publish --workflow-id testWorkflow5": should failed to publish already published workflow 'testWorkflow5'`, async () => { + const CMD = `frodo iga workflow publish --workflow-id testWorkflow5`; + try { + await exec(CMD, igaEnv); + } catch (e) { + expect(removeAnsiEscapeCodes(e.stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(e.stderr)).toMatchSnapshot(); + } + }); +}); diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/am_1076162899/recording.har new file mode 100644 index 000000000..acab94b68 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_file/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:50:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:50:33.765Z", + "time": 129, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 129 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:50:34 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:50:34.032Z", + "time": 141, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 141 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/environment_1072573434/recording.har new file mode 100644 index 000000000..757f58fbd --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_file/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:50:34 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5d556c1d-64d7-4aaa-815c-e0b506458bb1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:50:34.180Z", + "time": 68, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 68 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/oauth2_393036114/recording.har new file mode 100644 index 000000000..0cbb78abe --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_file/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:50:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:50:33.915Z", + "time": 97, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 97 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/openidm_3290118515/recording.har new file mode 100644 index 000000000..ab7935bcb --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_file_174088422/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_file/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:50:34 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:50:34.028Z", + "time": 69, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 69 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:50:34 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-61e29211-446e-404b-b2ef-4d90b9e0d329" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:50:34.255Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/am_1076162899/recording.har new file mode 100644 index 000000000..5f636dbf4 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_i_f/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:47:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:47:15.439Z", + "time": 236, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 236 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:47:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:47:15.804Z", + "time": 131, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 131 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/environment_1072573434/recording.har new file mode 100644 index 000000000..bb070fbe2 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_i_f/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:47:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f9a7ff35-e8d3-4ad2-b761-53297a48a043" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:47:15.954Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/oauth2_393036114/recording.har new file mode 100644 index 000000000..fc8f381d9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_i_f/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:47:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:47:15.693Z", + "time": 99, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 99 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/openidm_3290118515/recording.har new file mode 100644 index 000000000..51929fe7f --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_i_f_3126144190/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_i_f/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:47:15 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:47:15.802Z", + "time": 63, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 63 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:47:16 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-517b434c-3bcc-4761-b096-0487aa25bcc0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:47:16.029Z", + "time": 60, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 60 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/am_1076162899/recording.har new file mode 100644 index 000000000..88dbb66e8 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_workflow-id/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:36.668Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:36.918Z", + "time": 122, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 122 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/environment_1072573434/recording.har new file mode 100644 index 000000000..64a42ef88 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_workflow-id/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d73b7190-e807-4b72-9be6-084b4f075a47" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:37.052Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/iga_2664973160/recording.har new file mode 100644 index 000000000..801cb3de3 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/iga_2664973160/recording.har @@ -0,0 +1,1254 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_workflow-id/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "b74ab2fa7c61f94d8bbb9a49203978d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-J5idz6dFGoETw6pxxTHAwhsl8TI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3058735e-1b83-42fa-b10d-36969b798c50" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:37.192Z", + "time": 497, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 497 + } + }, + { + "_id": "e2dde589f8c1fe9b33ab2bdde047c5d1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"G3FXAOQ00+r1JWpm1sfIuqi75wpip9d9OYjdt4KAIks22xJpkJTtwNBPa/2Q1oiERhTRbBbKzrwJZ4h/9YTZm7ezcwb3zRIiHkU1FfdOiovfBxKJ7qFESI1F5gp8ubWe7nRkVtCzuYEUUIFD675qc2w7fYnAA8V6dBr8ctkWfInAgyMVTtsnP3Bb+50+OakV3Pz4ue5eTwhVyzqLHrwYPEMVemAdnixUP285wPdW8Jk+s27H7HGRI6WYU5HlGc3LZPeDdbond4EmJjtmj+CBS0uOKw/wdm2uuoHCq9s6PCWPZkZsHio1dJ0HenBcJzTJ3ePj0+bLCnK7B6igHbpWdl2PymXzAW850pTRuIxSGL0Il/O0ere6310nPkvdMSe1erqTNIyzSJQNz6MYxud8R3zUolSHrV7BA8adNhaqG0i7up4MWpveWM4M6MH5yu4RKgjm81otsZUKCYcVqyZf8ggMyIeOyGHJ3ecf1bBXolsSuy85eVg4UN5VS7UnrTY9c7VqmOurFSGEnJk5/lwp8jc5yMAd+Xt0X5iRrOnQTmdvAgwxePP0yWtB/g68qf4e3XQixcTv8pTAK/mbPBQDiaL3WR7mm8g9C85tNYspjkGI+WwwIX8msy+PTN6udhOP3EaP3MassOIPJj+LcQWEECJFRWo4S9b1i2CwaIIaoltACbz6k2muaHNRaH6Gz74UXkyoc5a0FUkhkRBCqjMCK1JVhPtqMfgLubuuMrNW7tUzHBAg+OsKc3/YhlJ0jok/ifH5Ta3G2XRWq/k8qNW0VtXLMg+AMnzvplaz6QxGD/CMyrU/lrWEHpXrUEnayRY+pwEVPBgt9A6tW/VMdjvsTx1zGMWSZDnr/Hpu7dn1c1CSa+GyhC2NU16Wi6zM0kXSJumiiTBZtKVoopYlgrdZV5kjwRz2CYF3gk7HwTP+c5rO42SehfMsnEdhGM5mM9/p9XazdUaqPQQcbcNc2xR/hSr1yt3R9SQNCwX1i/u1l2CR04MWaICXNTr4xxsFgIY1HwCUyI3YF/ULuf+yxtGroP/1je4waDAr2oJGC1a0dJHEgi1KKtpFkTQNz7IkzjNmYSD0Rrf+usGYeebl02QynHs6HT5XApWTrjvXkaqzT/73P+IJ6M818A8JZ+Rf/2wsLjSpqreCz0BGY9KUMzPkUDmbsEU=\",\"56TaW6R3/DXIPQu47nutbMC1auU+kHv2cqgh1wtAr0UNHqnh7WpXA+aLPjODhiYy5G+ihq5zK0O2pLYWbXSHm2oSrlE/w+fc+5F4rbVbKZIIX4o8iGPXzky2ZAqGvP73P8C4/cm/rrtkTfNhIRRLdWitMJwPc3SNWM6efV8HrgK6iNFtnhX2GLQc/i4yGLEPGkdDdwtZXS+VQON1/DoXkzkNX+tRkv840spDR4+pUCfaVb59HsJR31SMeYO3VxeD0b2Hzx8e1h8+CC7upfSWObyw10WZNJwKmra0SbafsZarT9+f6lGsiYS1yRpe2UvFjBeK/o0RqAhKPhqCszL5FBYjgKc3xy6ampFepBl28VJv4xDFBc05jvjRAs5Rec/4wjopmqiLoCqEIhky4NgR71CVusVAEAiiSzByTmCgHQjcwbWSyEWQv/8ed/wA8aEwzu0VIVQ4xGIN15plvC2zMOWYiuvUctLjlsluMGgIMlXenQ9hEF63goxBKFsSKrhlIAHAkaCCTu/ZvTFUq6c15FPU3iCyJxcWqGH2BurXAghUVvc6oL3eAIR+UZ2W/ptEoOR1m3OjYIiSu7EXSUnbFFmRZzSrRHivRVzbuP3vLroWtPa05MFg6WzYOkTdy+tgD/YwUTxqIXK7UYK3SotxbFsCRSXj5qGnrdBdO5fQzcCB+P6RwOxxEYdZ0aYijyJeACopmNcqr9tQWqAlzCA5IC++n/BbPesjkrvHtSXaEJpDkGhJ7pJ0ei+5X6vveiD8dH6MMIhEFMEj1suP/38F/FptEcnBuZOtgqBh/Ggd26PfarNHo/nxUYc5JqG5DaTgnR5E0DGH1gXaIJ9FEgECjY070Kw4F2KAMgaDp462DdJqQ3ptkJyBxsysX6uSo8MBA/c7EbFS7TskqBbfUXbuCT3CLxnugLUqfymC6n6xbUsQqQgjzrwujrQ7Emk6zY9Jwe2AjV3VyplXItbgtPO3s2l+0dlYtmMoElBSktiHyRgix1plePAUOQs+oF+LJ2RWK/I3mXwZ7PeNoiIrY7QhBpmQal+UDZOLdAciBeEEWDq550E/Uu3ZKgOv+wu7RvUmeYzIC7x9uhRZ63lafVwt13e75zlRQ9cprJba3YcPm6+BrmD17XH9dLdbbz71XmA1A+80eu8ZKbk+YXQJYc5WaPmsoHRJ7jp9gQWl6RAWEwArggU1+LYIFPLTPjxpCAr+TRN49bKlYUeXUFEJbohoEQmGNHhP6alwK0a5KfJTxJITvP/rQpbL236+v19ttzgs8sIk+3FTNXnLo6zkLMHG1KOvebhbf1gtC+c0wkMsx2jugMTpt5FrVYPT/xX31ulz3dfwBkYPOI+0Qc4bzXlom82/2YI12yDdqEjO/wYH7DoNFey1Fs0rggcHCRUcdMdg9OA2TjndFLwdf2d80IPhZhQqT4XzLfMrk5wMxJEDvP/q42KWe7/5+PhhRXYR9NBmaUaRxoy3ZREt675BO/S4HO6tipCkzqeYORVJAdOq\",\"cbMrg7XmVKsUm20Nr/5p4pLlkUhYU6BYbIPBwumkqRcZ0yTlfrPZOnxAwUgDqSEJ7RroqkQrsUIwT2+OgfWaLshoT0WCT14k9GznT0G/31RFEbVxmacYJ+ElPJZWC3b5oPCH15ScWhqVmuVPBHPIKJlvMrRVWoVndZHag6gxm/FKf215LNKS0jCK4miRWR4nsDsy1+ICjoXgO3yB5/AyWyGX09Iq9UO7fYqM3TIbmlDOc9HmvGQqCEzAUL/TNzh0+yey41q2RTN4yElbW8OXLgSvfctsizDL0qhokowBRRbeIljmMZnxTqppqgzShLRfah5yfG9X8n7b8Fa2kgyKgdwxjuvoQR3L5J+0wME9QolP3GLUDV5gOqaF6uezBweq4dSKZ2wVzqWazmiHDt7V0eM1FtEzo+fhhDuyaIDTURpNOajA7kfxcYWuY6vQ29xanQYHHhyY1WOJCVfGhC/I7B14IO0SO3TImg79rZRdGn067Z/ZSkj3Pfb/9RkNigR4f7jOKyXAA6UF5msMyw/YM6EbjMEghNvNFaoizjx4hSoNRzjnaxxoA90GXMOzC0rJdgQewc99qjdS1Rq6ilPHXl+YMfqy8cTRxyykavVL5pprtRFH8BpQqCFUajt+Qqbxp0n+rNXUwDi8TpTEoweDvGd1ECluKkUyUYSQwy/PKyAkzcOAZxxIF2uwaED8oJKWJokJWv9sozsEMQfXBJPMsi0SZ14CmAS5w+cISBc4WMl0v/iBdIB3GVHgQMCFCQthRgX6RUbD07LrbpKdLQsaMN/NB3u3mKRBBnN9MRUoDRVE+QR2ssftiSmoQLDXqZ0BSRKN4s6C2edZn8fz7hhx5u6TvPBpWZYlLcosKZIEg955VKZ+FsVpSMM0ytO8EDUE3mE+rKS2MJ6812BwQfbPmlOzzhIu2Hvd505KBsMXtSlZKr169g56MBvDrkQj8Qa/w9oCdNkPPumRCILNJ7HGwjTfyL1W7jC1iHCFV6iiJCPnBtFio9ac0WjYRJhJDaxucTU2De86Swq/iOI0jIssCmN6lfUIbFWgLqsleeInE8dxURRRQbNJaNQsG3nKKouy3ChJS1h2nCfUKqWUIiw9XjdhwmvDQ+inRPJgjnLxLl9RuzI/SmufrC75lpDer+EtEMmuvVvXSeE1sYBAE+admCLYNY1yNG1EUeheU3gTw0oIYuxX+zTvJMMPYs6a+YxGQDe1zfNJQsEImptGTHYDvFXbotVpHqra975fI2L5DrsgHodCe00nIQbE2lMQFHECrHFFWHZEfUaAGHZkU4c3BKGspe1wv5YFcTN3zB4JYDMM6XxGMPnmBS/TchbRHMloj0MY9+Ssbt0IGYKM9GnoGzQ8ALIOcT5RdOt5NPqExr3a1ZiY0khBMRmCaXbhg4HRx8QPzSX/PCtdHcayqY621Xo2sRgVhcZdHEVpoRRNWibSXA4r9VOA1LvIlJXww0AtKDYgT2pblJHnJUPtHE0WluMGCxXcm4fRBHjQD9r5dGcGHAE=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-moU6e5rau5hrulM9d0Bk/14tTIA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b8142db6-2f59-4535-bdf0-f5052e805940" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:37.703Z", + "time": 336, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 336 + } + }, + { + "_id": "57a5cad82f09fe2fb978b6ffd0967f8f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow1%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 483, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 483, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "483" + }, + { + "name": "etag", + "value": "W/\"1e3-hziUWgY4Z3A/KBAjDXlh2nti4sA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c5a3e1f7-1750-4ebf-aae7-4e3d6b291814" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.050Z", + "time": 124, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 124 + } + }, + { + "_id": "01ec95a729c1c9ca93f442c66fc8462b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1913, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "action.name co \"\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_queryFilter=action.name%20co%20%22%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 1374, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1374, + "text": "[\"GyIPAMS+peKfrp69BhyaGqckv5Tq8SDxsDRRC2ClaPj/j73+o5Si9ZtGpFeu+t33K3CZOOAOHO7MBlxJa9wZUZFMZTgvIiEtkInxV50oJmsM9r8TYyT/CNgTq1sIFplS/muLb8O8vZdgMH6fsCcOFyUsDjdLMBwuqitJkfTeNApD/rgTLLY4jJRydGGJFGa7v1+f5k4HrfkuwTCcwpqwJ8I0Z4qwJ7ZIueawrdlNK5+tp/WecpzWByyeieJ1/P7trsOUP4JheneKj1WdKCfpo59h4VBKYSfWLd9RO/1o/FRX5D5E755uJjiOmULmJp+6XFeI7IETBkxXMtCB7OVjnr+XdH8/5RH2xB4pTB8+HiMUhpLNgr6T+KYbrR5HfHoG9qGzt0oo5iBiSnbEAMosiMetPqX355GJysOH+M3q6QP5b9ZMD4rSx1qZZvp+ZMRNGoBIqpIzH70+Z2y+hCml3MqtMEwDchFYHAqFwU85Q7vnwhr4nVK+ZNCcy5utGWjNU/74ez6f45kogmF55q3sHfm0DEYQGH7ZpjQywtNB648qEPo5UsqA0yYPi2LKMvzLI30pglbV0HW87uqKm2Aq3ksyPHS+l8EZP4QaDIubZj1Z/FWmlK/DtoAh0beARRUi0D1/89Xr3ynlPxJFlBtDyi4/E6we2g/idKLKGSNdENyLquGmdpJ3Xd1zGXQIqlGVVAoM90gHrGJYKDvvsoM9odaH/9xlgoUSquZCc2F+V9oKZUV7bXX7L5ijwA8fQFkjrNTXVrZNJZQ0/6ZrhWrDKluQibmATAoLtrprkiqBiXgKKl0CE3l9UZp0oHLukdLVSXUwpLo4pkYFiohDMGw9ksQfdgFETD7pUxk+IO1ZRcSB6C2sYgYHqKiZD/80NzN/zP++lVtR7czoM4bcf9vFsZg++J6ahjedcdxQr3hbUeBaCadV440JYcYfKRXjq1xdu0Zr2QpRabfsK5NZt1Uzb7GP45sp5jGNPfFft5nSr/TuOcVpfbze97gdbq41bx23mX50CyWMBjxuM/ECRc/gcUpvldy7jyOfGpGPIu/Dkn4ry4WRBmGXZ9F0abEsfGyN75J2Jdkl0/DSXI04wDlIwjDr4h3ChfmSat3PQJ+7z0tfYt0rOahWc286yU3wHW+1Urzt2kE2cmiEbGfTXKQ1H+5hH7fZ\",\"U1wppRf7VsCb2Q==\",\"XuU4HVPMW4iy4CBqh0L7OPIdMMS3+ODfxq4h+gxD2/SiFhUXOtTc6Ebxrnc1JxGMJtHrfshePOnnXHGpuOx+V9oaZU177Uy+6vzZPWhtRXet2q7SnWnqf1Fq3yRp7Tp4HTLF7+gj7H9ku90Y/lSO0Gfbc82cpU3F8tfUBQ==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"f23-tRUZL+mJXq4toBxAM+DDZnCw/p0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a29fedae-0cb1-49fc-afcd-3a3dae13fbf1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.052Z", + "time": 196, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 196 + } + }, + { + "_id": "516e61348e4ecc0a207a3b71069517dd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9e3fc668-4e96-4b03-9605-38b830bea26c" + }, + "response": { + "bodySize": 342, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 342, + "text": "{\"id\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"name\":\"test_workflow_request_form_2\",\"type\":\"request\",\"description\":\"This is a test request form\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:01:59.586Z\",\"createdDate\":\"2026-03-04T22:40:08.831569376Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "342" + }, + { + "name": "etag", + "value": "W/\"156-PTn0fEjhoJV4wTk1YEIuqCEabqQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3aba36b4-da0c-4cb7-97f4-0bf291d5d7de" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.182Z", + "time": 107, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 107 + } + }, + { + "_id": "7b593beb236d37516c21f5157e23dce3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/fa1a5e72-d803-4879-bc2a-07a5da3d8ee9" + }, + "response": { + "bodySize": 368, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 368, + "text": "{\"id\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"name\":\"test_workflow_request_form_1\",\"type\":\"applicationRequest\",\"description\":\"This is a test application request form\",\"categories\":{\"applicationType\":null,\"objectType\":\"Group\",\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:03.612Z\",\"createdDate\":\"2026-03-04T22:40:00.809825423Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "368" + }, + { + "name": "etag", + "value": "W/\"170-cldJIsXRvS9vjLEF1rYdm1FcxJs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "60592265-643a-451d-803c-1525251c0175" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.184Z", + "time": 170, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 170 + } + }, + { + "_id": "56aba0f2a42a3781f54be2fa237ef6b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"9e3fc668-4e96-4b03-9605-38b830bea26c\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%229e3fc668-4e96-4b03-9605-38b830bea26c%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 699, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 699, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:00.48Z\",\"createdDate\":\"2026-03-04T22:40:09.860613713Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:02.474Z\",\"createdDate\":\"2026-03-04T22:40:11.933983845Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "699" + }, + { + "name": "etag", + "value": "W/\"2bb-EY4HvrUG+IjSSm6/NURQBKKe7+U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0d8653de-1522-4043-94c1-452fbf7ab10c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.295Z", + "time": 125, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 125 + } + }, + { + "_id": "926b2d2ee4a0ba572a2da531c963783c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22fa1a5e72-d803-4879-bc2a-07a5da3d8ee9%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 918, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 918, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:04.471Z\",\"createdDate\":\"2026-03-04T22:40:03.856752543Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:06.466Z\",\"createdDate\":\"2026-03-04T22:40:02.84761136Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:07.535Z\",\"createdDate\":\"2026-03-04T22:40:04.870872677Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "918" + }, + { + "name": "etag", + "value": "W/\"396-oAO8ZAFe/dWMjXKjlmparcAFkzo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fe084f17-6bd0-4d97-b18c-6d0aa0d4f0c3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.360Z", + "time": 121, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 121 + } + }, + { + "_id": "838cf6577b94f0ce14deaf2a1478ae99", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/af4a6f84-f9a9-4f8d-82ae-649639debabc" + }, + "response": { + "bodySize": 908, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 908, + "text": "[\"G/YIAMSvqflVy7waXVSkdEg/x5VY2SjAGTgnDT9/v9f9PcX7zvmVVvap89avoOjRKKnbEqfDCU54ZNMhzrsCDdKZ/fEFRkOB+pzKvs6zvqEmy/taZ/WOOCvzptw3mltqO0iMp/Czb2lmKEQO8d+j82M/ucd/ngc3fs+/+HzgfwUk/v0ZqCVJ/PP8ALWVCN0dzxSgFnRunp2F+rXg38yRoBbE5wNDYYjx/GQ1LvPH5KYhMQZFl2GZOLj/7+5NR9E4C7XAhI98fzSeNVRPU2AJE65tZG9pgor+yIqFoBbYlFpvZN0nYcJXE0w7MRsOUz8Dai+hxy1gPiQ6jM8zqXgoBWdF7/wcRIJpIkhJwvSgw2iuNc4iE07vyN4SDqAUYLecp2ER+0XF9ZkGqjnCnC+uz9SA7+fmWr/33Junm8DQFE63OMiThKtYaAi4KD3i+uy8P0w489RHgP4kUUST4RJEifX9RdLEqiUm1iwmkfcFz/d8DBFJIvITauyz6aavNB0ZCpN7NP5vzE8H45/PKDLsTgSSnLJVoSlyoChWkS+BvehDy6QlbBTOioV5wLgDxyrBzH4l0YFadAR9efJLuYQJb45TNKaQC3vLqWhJLTpufQGI6IsuyrGg9r9yaOTk/Zu3opBZw0O1il6fiZGjh5VIrIwjmmhkkGzrUyQf40KxpjgRYeDWky3ujdPqwF3tudWokE9w24x2cu1puZRSWQZKWSQOpYryPDqr/58qjPKo6GIY/Hus1rmJyaJ4BRQUAqY4wSOgMyEIDrp24O5/LJGLMbOxxdvSHubd0NagBKYXSemPxJhR94L6taQ/6Sct0FJmjqSpggArdLR0voTdZldmm322yT/v9mqzVUW52pXVT0iMK0VM/Lqd2jeqyFdVtduXeVHnP5ES\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"8f7-yaYJ9F3vkwvW5whdhseefDySMt0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a75593f7-f40e-4b48-b3cb-f4d341159f9b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.428Z", + "time": 185, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 185 + } + }, + { + "_id": "23d0af5233b3219e2f055d4c305b4e25", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow1\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow1%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 964, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 964, + "text": "[\"G0gJAMT/puq0cm9GUemMKa1j85XgAg6gdH66X7n/rzh/3lZT2VJa9NRWUAUtVdw1deDpiR7pkZ0Oce6uQKBMtNLwhxz1/2LDjiZA5BypZmVu/j7Ewx+0ggD1aqqahpK87Lqk6toi6ds+S5pGDcVQVYpoAEeMhl89lkuCQCAfXr6smw8L+/XiaMHkV7yEnxW95OD41QEhKBDIh5sfEnNEjhdHnxDv99N3WkoP8YepXS6tQffsy5KChPhD+FkRBJY3z4aiUOnPIXSCI/5FmyaeEFlAwqCnMmhr4PyAP6ePUTtSEINceOLQfs8EckYuIIIbSVk/xB+MpOJ9XldxaH+tvZ4siAyWyB8GUXKomAn0K6GNuMzi4qHSW8MG6/Ific0VRIwcAYd1aM6ewpmg/ca7NG8SB/4nB7thS4aB7fple5sayFYAszfb21QDfz43e+rU0aC/rxxDEzjtbMVP0NiStYKAaWgn29s87Yf2m04OAaAncjQPRag4ChhPz4IOItuAsEKWwN57HH3Q6AMiR6Bv1DBf1GXXcjESBBb2y3/OxUq7n00ZSDUudPANxBDVKdMyJQO5uWQbvPLk2PxdOsVhnFnDigKBCg6Ik4LKvCXSgSh4gpp8h0sqh/ZH4yJoU4i5vWGDtaAWkrn38p0YIjIoVF4OjbP/VYcG10+PjlnDMou7bBva22Rz8h6aI7IyRFORTyfZyUWQLjC/kOwISkDofXPSNPdaaRSu4W4ZtQc6znUSk4WdHAeLMbZlcCsL+aFQU571P6P73XTaGGX9i2yG4V+PNbF2QdKgecWiZTQnWIzJmhCL9NnJjKa/M/yehYj2LRZaMoRZeoCtsXogLxjjE0e8qssgHv7iU/xKcTSYjRM1Ny8042LBsaQglexEgA4nRfK3UGRFk2RlklWXRSmyXNTdWpn19+CIe4X/57cWospEka1lfV+3RdU294jxKQI=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"949-Y+4Pe5tX/Yx/KcUizfbsThLfNbw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a6794083-29c6-4157-bc8b-b4cb1298dfd9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.620Z", + "time": 231, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 231 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/oauth2_393036114/recording.har new file mode 100644 index 000000000..5fb784600 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_workflow-id/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:36.808Z", + "time": 93, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 93 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/openidm_3290118515/recording.har new file mode 100644 index 000000000..d567ab062 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/openidm_3290118515/recording.har @@ -0,0 +1,882 @@ +{ + "log": { + "_recordingName": "iga/workflow-describe/0_workflow-id/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:36 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:36.916Z", + "time": 73, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 73 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:37 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:37.122Z", + "time": 63, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 63 + } + }, + { + "_id": "ac10ed5d7768dafd2dd1b9f0ff34b8cb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate1" + }, + "response": { + "bodySize": 511, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 511, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate1\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template One\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

Click to reset your password

Password reset link

\",\"fr\":\"

Cliquez pour réinitialiser votre mot de passe

Mot de passe lien de réinitialisation

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Reset your password\",\"fr\":\"Réinitialisez votre mot de passe\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "511" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.054Z", + "time": 141, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 141 + } + }, + { + "_id": "5f5820c9bb25d896efc0d7ea5e29638a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate2" + }, + "response": { + "bodySize": 304, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 304, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate2\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Two\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

This is your one-time password:

{{object.description}}

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"One-Time Password for login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "304" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.057Z", + "time": 137, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 137 + } + }, + { + "_id": "203d396202ec59f80cf2ceeaf7211ee9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate3" + }, + "response": { + "bodySize": 401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 401, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate3\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Three\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

You started a login or profile update that requires MFA.

Click to Proceed

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Multi-Factor Email for Identity Cloud login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.061Z", + "time": 131, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 131 + } + }, + { + "_id": "533fc1b70b1f2a683584ca8b128a468a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/frodoTestEmailTemplateFour" + }, + "response": { + "bodySize": 1379, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1379, + "text": "{\"_id\":\"emailTemplate/frodoTestEmailTemplateFour\",\"defaultLocale\":\"en\",\"description\":\"Frodo email template four\",\"displayName\":\"Frodo Test Email Template Four\",\"enabled\":true,\"from\":\"\\\"From\\\" \",\"html\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"message\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n background-color: #324054;\\n color: #455469;\\n padding: 60px;\\n text-align: center \\n}\\n a {\\n text-decoration: none;\\n color: #109cf1;\\n}\\n .content {\\n background-color: #fff;\\n border-radius: 4px;\\n margin: 0 auto;\\n padding: 48px;\\n width: 235px \\n}\\n\",\"subject\":{\"en\":\"Subject\"},\"templateId\":\"frodoTestEmailTemplateFour\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:49:38 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1379" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4065ce86-b126-48bb-b084-a874dfe2edb6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:49:38.065Z", + "time": 125, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 125 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/am_1076162899/recording.har new file mode 100644 index 000000000..06f1f8da9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_Nxi_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:30.713Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:30.947Z", + "time": 131, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 131 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/environment_1072573434/recording.har new file mode 100644 index 000000000..8f0c047f9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_Nxi_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "07515998-55e9-4ce2-b567-e75609b6cc25" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:31.086Z", + "time": 71, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 71 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/iga_2664973160/recording.har new file mode 100644 index 000000000..f180df195 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/iga_2664973160/recording.har @@ -0,0 +1,1254 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_Nxi_D/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "b74ab2fa7c61f94d8bbb9a49203978d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4225, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4225, + "text": "[\"G21XAOQ00+r1JWpm1sfIuqi75wpip9d9OYjdt4KAIks22xJpkJTtwNBPa/2Q1oiERhTRbBbKzrwJZ4h/9YTZm7ezcwb3zRIiHkU1FfdOiovfBxKJ7qFESI1F5gp8ubWe7nRkVtCzuYEUUIFD675qc2w7fYnAA8V6dBr8ctkWfInAgyMVTtsnP3Bb+50+OakV3Pz4ue5eTwhVyzqLHrwYPEMVemAdnixUP285wPdW8Jk+s27H7HGRI6WYU5HlGc3LZPeDdbond4EmJjtmj+CBS0uOKw/wdm2uuoHCq9s6PCWPZkZsHio1dJ0HenBcJzTJ3ePj0+bLCnK7B6igHbpWdl2PymXzAW850pTRuIxSGL0Il/O0ere6310nPkvdMSe1erqTNIyzSJQNz6MYxud8R3zUolSHrV7BA8adNhaqG0i7up4MWpveWM4M6MH5yu4RKgjm81otsZUKCYcVqyZf8ggMyIeOyGHJ3ecf1bBXolsSuy85eVg4UN5VS7UnrTY9c7VqmOurFSGEnJk5/lwp8jc5yMAd+Xt0X5iRrOnQTmdvAgwxePP0yWtB/g68qf4e3XQixcTv8pTAK/mbPBQDiaL3WR7mm8g9C85tNYspjkGI+WwwIX8msy+PTN6udhOP3EaP3MassOIPJj+LcQWEECJFRWo4S9b1i2CwaIIaoltACbz6k2muaHNRaH6Gz74UXkyoc5a0FUkhkRBCqjMCK1JVhPtqMfgLubuuMrNW7tUzHBAg+OsKc3/YhlJ0jok/ifH5Ta3G2XRWq/k8qNW0VtXLMg+AMnzvplaz6QxGD/CMyrU/lrWEHpXrUEnayRY+pwEVPBgt9A6tW/VMdjvsTx1zGMWSZDnr/Hpu7dn1c1CSa+GyhC2NU16Wi6zM0kXSJumiiTBZtKVoopYlgrdZV5kjwRz2CYF3gk7HwTP+c5rO42SehfMsnEdhGM5mM9/p9XazdUaqPQQcbcNc2xR/hSr1yt3R9SQNCwX1i/u1l2CR04MWaICXNTr4xxsFgIY1HwCUyI3YF/ULuf+yxtGroP/1je4waDAr2oJGC1a0dJHEgi1KKtpFkTQNz7IkzjNmYSD0Rrf+usGYeebl02QynHs6HT5XApWTrjvXkaqzT/73P+IJ6M818A8JZ+Rf/2wsLjSpqreCz0BGY9KUMzPkUDmbsEU=\",\"56TaW6R3/DU=\",\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-J5idz6dFGoETw6pxxTHAwhsl8TI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bd87635a-c078-46e8-8099-34f2aae4e40c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:31.233Z", + "time": 539, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 539 + } + }, + { + "_id": "e2dde589f8c1fe9b33ab2bdde047c5d1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4226, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4226, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-moU6e5rau5hrulM9d0Bk/14tTIA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d7541f0d-cff9-4b80-9688-14e96f383983" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:31.784Z", + "time": 350, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 350 + } + }, + { + "_id": "57a5cad82f09fe2fb978b6ffd0967f8f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow1%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 483, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 483, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "483" + }, + { + "name": "etag", + "value": "W/\"1e3-hziUWgY4Z3A/KBAjDXlh2nti4sA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8acce098-ca2e-4757-b8ac-ad4671b7797e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.147Z", + "time": 125, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 125 + } + }, + { + "_id": "01ec95a729c1c9ca93f442c66fc8462b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1913, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "action.name co \"\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_queryFilter=action.name%20co%20%22%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 1367, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1367, + "text": "[\"GyIPAMS+peKfrp69BhyaGqckv5Tq8SDxsDRRC2ClaPj/j73+o5Si9ZtGpFeu+t33K3CZOOAOHO7MBlxJa9wZUZFMZTgvIiEtkInxV50oJmsM9r8TYyT/CNgTq1sIFplS/muLb8O8vZdgMH6fsCcOFyUsDjdLMBwuqitJkfTeNApD/rgTLLY4jJRydGGJFGa7v1+f5k4HrfkuwTCcwpqwJ8I0Z4qwJ7ZIueawrdlNK5+tp/WecpzWByyeieJ1/P7trsOUP4JheneKj1WdKCfpo59h4VBKYSfWLd9RO/1o/FRX5D5E755uJjiOmULmJp+6XFeI7IETBkxXMtCB7OVjnr+XdH8/5RH2xB4pTB8+HiMUhpLNgr6T+KYbrR5HfHoG9qGzt0oo5iBiSnbEAMosiMetPqX355GJysOH+M3q6QP5b9ZMD4rSx1qZZvp+ZMRNGoBIqpIzH70+Z2y+hCml3MqtMEwDchFYHAqFwU85Q7vnwhr4nVK+ZNCcy5utGWjNU/74ez6f45kogmF55q3sHfm0DEYQGH7ZpjQywtNB648qEPo5UsqA0yYPi2LKMvzLI30pglbV0HW87uqKm2Aq3ksyPHS+l8EZP4QaDIubZj1Z/FWmlK/DtoAh0beARRUi0D1/89Xr3ynlPxJFlBtDyi4/E6we2g/idKLKGSNdENyLquGmdpJ3Xd1zGXQIqlGVVAoM90gHrGJYKDvvsoM9odaH/9xlgoUSquZCc2F+V9oKZUV7bXX7L5ijwA8fQFkjrNTXVrZNJZQ0/6ZrhWrDKluQibmATAoLtrprkiqBiXgKKl0CE3l9UZp0oHLukdLVSXUwpLo4pkYFiohDMGw9ksQfdgFETD7pUxk+IO1ZRcSB6C2sYgYHqKiZD/80NzN/zP++lVtR7czoM4bcf9vFsZg++J6ahjedcdxQr3hbUeBaCadV440JYcYfKRXjq1xdu0Zr2QpRabfsK5NZt1Uzb7GP45sp5jGNPfFft5nSr/TuOcVpfbze97gdbq41bx23mX50CyWMBjxuM/ECRc/gcUpvldy7jyOfGpGPIu/Dkn4ry4WRBmGXZ9F0abEsfGyN75J2Jdkl0/DSXI04wDlIwjDr4h3ChfmSat3PQJ+7z0tfYt0rOahWc286yU3wHW+1Urzt2kE2cmiEbGfTXKQ1H+5hH7fZ\",\"U1wppRf7VsCb2V7lOB1TzFuIsuAgaodC+zjyHTDEt/jg38auIfoMQ9v0ohYVFzrU3OhG8a53NScRjCbR637IXjzp51xxqbjsflfaGmVNe+1Mvur82T1obUV3rdqu0p1p6n9Rat8kae06eB0yxe/oI+x/ZLvdGP5UjtBn23PNnKVNxfLX1AU=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"f23-tRUZL+mJXq4toBxAM+DDZnCw/p0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "252c34c8-f991-4e3a-b29b-b5ccbc5bdc9d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.149Z", + "time": 172, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 172 + } + }, + { + "_id": "516e61348e4ecc0a207a3b71069517dd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9e3fc668-4e96-4b03-9605-38b830bea26c" + }, + "response": { + "bodySize": 342, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 342, + "text": "{\"id\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"name\":\"test_workflow_request_form_2\",\"type\":\"request\",\"description\":\"This is a test request form\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:01:59.586Z\",\"createdDate\":\"2026-03-04T22:40:08.831569376Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "342" + }, + { + "name": "etag", + "value": "W/\"156-PTn0fEjhoJV4wTk1YEIuqCEabqQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "babe2946-d1d5-4891-a6ea-ca7438f7df65" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.282Z", + "time": 97, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 97 + } + }, + { + "_id": "7b593beb236d37516c21f5157e23dce3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/fa1a5e72-d803-4879-bc2a-07a5da3d8ee9" + }, + "response": { + "bodySize": 368, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 368, + "text": "{\"id\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"name\":\"test_workflow_request_form_1\",\"type\":\"applicationRequest\",\"description\":\"This is a test application request form\",\"categories\":{\"applicationType\":null,\"objectType\":\"Group\",\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:03.612Z\",\"createdDate\":\"2026-03-04T22:40:00.809825423Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "368" + }, + { + "name": "etag", + "value": "W/\"170-cldJIsXRvS9vjLEF1rYdm1FcxJs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3b0f69b2-0216-468b-970b-b55724b95d4e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.283Z", + "time": 162, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 162 + } + }, + { + "_id": "56aba0f2a42a3781f54be2fa237ef6b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"9e3fc668-4e96-4b03-9605-38b830bea26c\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%229e3fc668-4e96-4b03-9605-38b830bea26c%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 699, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 699, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:00.48Z\",\"createdDate\":\"2026-03-04T22:40:09.860613713Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:02.474Z\",\"createdDate\":\"2026-03-04T22:40:11.933983845Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "699" + }, + { + "name": "etag", + "value": "W/\"2bb-EY4HvrUG+IjSSm6/NURQBKKe7+U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4778e3c9-3742-4f37-8e7d-55e84d644b5b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.386Z", + "time": 115, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 115 + } + }, + { + "_id": "926b2d2ee4a0ba572a2da531c963783c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22fa1a5e72-d803-4879-bc2a-07a5da3d8ee9%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 918, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 918, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:04.471Z\",\"createdDate\":\"2026-03-04T22:40:03.856752543Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:06.466Z\",\"createdDate\":\"2026-03-04T22:40:02.84761136Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:07.535Z\",\"createdDate\":\"2026-03-04T22:40:04.870872677Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "918" + }, + { + "name": "etag", + "value": "W/\"396-oAO8ZAFe/dWMjXKjlmparcAFkzo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "73859c80-8853-4c9b-ae6e-0c8f8734a05c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.452Z", + "time": 134, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 134 + } + }, + { + "_id": "838cf6577b94f0ce14deaf2a1478ae99", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/af4a6f84-f9a9-4f8d-82ae-649639debabc" + }, + "response": { + "bodySize": 908, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 908, + "text": "[\"G/YIAMSvqflVy7waXVSkdEg/x5VY2SjAGTgnDT9/v9f9PcX7zvmVVvap89avoOjRKKnbEqfDCU54ZNMhzrsCDdKZ/fEFRkOB+pzKvs6zvqEmy/taZ/WOOCvzptw3mltqO0iMp/Czb2lmKEQO8d+j82M/ucd/ngc3fs+/+HzgfwUk/v0ZqCVJ/PP8ALWVCN0dzxSgFnRunp2F+rXg38yRoBbE5wNDYYjx/GQ1LvPH5KYhMQZFl2GZOLj/7+5NR9E4C7XAhI98fzSeNVRPU2AJE65tZG9pgor+yIqFoBbYlFpvZN0nYcJXE0w7MRsOUz8Dai+hxy1gPiQ6jM8zqXgoBWdF7/wcRIJpIkhJwvSgw2iuNc4iE07vyN4SDqAUYLecp2ER+0XF9ZkGqjnCnC+uz9SA7+fmWr/33Junm8DQFE63OMiThKtYaAi4KD3i+uy8P0w489RHgP4kUUST4RJEifX9RdLEqiUm1iwmkfcFz/d8DBFJIvITauyz6aavNB0ZCpN7NP5vzE8H45/PKDLsTgSSnLJVoSlyoChWkS+BvehDy6QlbBTOioV5wLgDxyrBzH4l0YFadAR9efJLuYQJb45TNKaQC3vLqWhJLTpufQGI6IsuyrGg9r9yaOTk/Zu3opBZw0O1il6fiZGjh5VIrIwjmmhkkGzrUyQf40KxpjgRYeDWky3ujdPqwF3tudWokE9w24x2cu1puZRSWQZKWSQOpYryPDqr/58qjPKo6GIY/Hus1rmJyaJ4BRQUAqY4wSOgMyEIDrp24O5/LJGLMbOxxdvSHubd0NagBKYXSemPxJhR94L6taQ/6Sct0FJmjqSpggArdLR0voTdZldmm322yT/v9mqzVUW52pXVT0iMK0VM/Lqd2jeqyFdVtduXeVHnP5ES\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"8f7-yaYJ9F3vkwvW5whdhseefDySMt0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b6de7996-7ca0-49c9-9ce1-06783dbd6d6d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.507Z", + "time": 161, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 161 + } + }, + { + "_id": "23d0af5233b3219e2f055d4c305b4e25", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow1\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow1%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 964, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 964, + "text": "[\"G0gJAMT/puq0cm9GUemMKa1j85XgAg6gdH66X7n/rzh/3lZT2VJa9NRWUAUtVdw1deDpiR7pkZ0Oce6uQKBMtNLwhxz1/2LDjiZA5BypZmVu/j7Ewx+0ggD1aqqahpK87Lqk6toi6ds+S5pGDcVQVYpoAEeMhl89lkuCQCAfXr6smw8L+/XiaMHkV7yEnxW95OD41QEhKBDIh5sfEnNEjhdHnxDv99N3WkoP8YepXS6tQffsy5KChPhD+FkRBJY3z4aiUOnPIXSCI/5FmyaeEFlAwqCnMmhr4PyAP6ePUTtSEINceOLQfs8EckYuIIIbSVk/xB+MpOJ9XldxaH+tvZ4siAyWyB8GUXKomAn0K6GNuMzi4qHSW8MG6/Ific0VRIwcAYd1aM6ewpmg/ca7NG8SB/4nB7thS4aB7fple5sayFYAszfb21QDfz43e+rU0aC/rxxDEzjtbMVP0NiStYKAaWgn29s87Yf2m04OAaAncjQPRag4ChhPz4IOItuAsEKWwN57HH3Q6AMiR6Bv1DBf1GXXcjESBBb2y3/OxUq7n00ZSDUudPANxBDVKdMyJQO5uWQbvPLk2PxdOsVhnFnDigKBCg6Ik4LKvCXSgSh4gpp8h0sqh/ZH4yJoU4i5vWGDtaAWkrn38p0YIjIoVF4OjbP/VYcG10+PjlnDMou7bBva22Rz8h6aI7IyRFORTyfZyUWQLjC/kOwISkDofXPSNPdaaRSu4W4ZtQc6znUSk4WdHAeLMbZlcCsL+aFQU571P6P73XTaGGX9i2yG4V+PNbF2QdKgecWiZTQnWIzJmhCL9NnJjKa/M/yehYj2LRZaMoRZeoCtsXogLxjjE0e8qssgHv7iU/xKcTSYjRM1Ny8042LBsaQglexEgA4nRfK3UGRFk2RlklWXRSmyXNTdWpn19+CIe4X/57cWospEka1lfV+3RdU294jxKQI=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"949-Y+4Pe5tX/Yx/KcUizfbsThLfNbw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ddf56480-fd77-4596-a959-09c82713a777" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.675Z", + "time": 389, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 389 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/oauth2_393036114/recording.har new file mode 100644 index 000000000..f4df86260 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_Nxi_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:30.841Z", + "time": 89, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 89 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/openidm_3290118515/recording.har new file mode 100644 index 000000000..60e2deeec --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/openidm_3290118515/recording.har @@ -0,0 +1,882 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_Nxi_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:30 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:30.944Z", + "time": 65, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 65 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:31 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:31.165Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + }, + { + "_id": "ac10ed5d7768dafd2dd1b9f0ff34b8cb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate1" + }, + "response": { + "bodySize": 511, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 511, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate1\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template One\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

Click to reset your password

Password reset link

\",\"fr\":\"

Cliquez pour réinitialiser votre mot de passe

Mot de passe lien de réinitialisation

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Reset your password\",\"fr\":\"Réinitialisez votre mot de passe\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "511" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.151Z", + "time": 138, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 138 + } + }, + { + "_id": "5f5820c9bb25d896efc0d7ea5e29638a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate2" + }, + "response": { + "bodySize": 304, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 304, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate2\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Two\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

This is your one-time password:

{{object.description}}

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"One-Time Password for login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "304" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.153Z", + "time": 135, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 135 + } + }, + { + "_id": "203d396202ec59f80cf2ceeaf7211ee9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate3" + }, + "response": { + "bodySize": 401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 401, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate3\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Three\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

You started a login or profile update that requires MFA.

Click to Proceed

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Multi-Factor Email for Identity Cloud login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.156Z", + "time": 131, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 131 + } + }, + { + "_id": "533fc1b70b1f2a683584ca8b128a468a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/frodoTestEmailTemplateFour" + }, + "response": { + "bodySize": 1379, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1379, + "text": "{\"_id\":\"emailTemplate/frodoTestEmailTemplateFour\",\"defaultLocale\":\"en\",\"description\":\"Frodo email template four\",\"displayName\":\"Frodo Test Email Template Four\",\"enabled\":true,\"from\":\"\\\"From\\\" \",\"html\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"message\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n background-color: #324054;\\n color: #455469;\\n padding: 60px;\\n text-align: center \\n}\\n a {\\n text-decoration: none;\\n color: #109cf1;\\n}\\n .content {\\n background-color: #fff;\\n border-radius: 4px;\\n margin: 0 auto;\\n padding: 48px;\\n width: 235px \\n}\\n\",\"subject\":{\"en\":\"Subject\"},\"templateId\":\"frodoTestEmailTemplateFour\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 00:19:32 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1379" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-5d58fd28-2fca-446b-aa85-297336fdccc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T00:19:32.159Z", + "time": 127, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 127 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/am_1076162899/recording.har new file mode 100644 index 000000000..f3c2b2992 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:58.936Z", + "time": 119, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 119 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:59.180Z", + "time": 127, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 127 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/environment_1072573434/recording.har new file mode 100644 index 000000000..6d164aa00 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a1860749-8786-4e3d-87a0-7b5d75314740" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:59.313Z", + "time": 66, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 66 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/iga_2664973160/recording.har new file mode 100644 index 000000000..9659083e9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/iga_2664973160/recording.har @@ -0,0 +1,6287 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "f64029142a38862fb58bc7ec0e44e61d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1891, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryString", + "value": "" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "1" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_queryString=&_pageSize=10000&_pagedResultsOffset=1" + }, + "response": { + "bodySize": 32108, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 32108, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"74d35-qWieTs7qnZS0N0TSir7knGB/7E0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cc89e346-5c12-4fcc-a98e-93c75609e607" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:59.452Z", + "time": 607, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 607 + } + }, + { + "_id": "df1df35782bd7bd15c58099c61b4fdf9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/draft" + }, + "response": { + "bodySize": 3062, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3062, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1e07-860ugBStKdGjb9IQldTjrF+R7+M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e16535c4-258d-4967-b558-64709dd73738" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:00.088Z", + "time": 343, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 343 + } + }, + { + "_id": "4d82ead8d2193d901867899e8d28c709", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/published" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: createNonEmployee was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-8uynBMjyUuxflpNVyORqRlXe/nU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ef4aa4c7-ff5b-48bc-a3d8-5dd3264fb9a0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:00.440Z", + "time": 365, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 365 + } + }, + { + "_id": "dd4666bbe759dfe89b2755bce7090364", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1870, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/draft" + }, + "response": { + "bodySize": 5369, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5369, + "text": "[\"G8FXRBTzAVCEDHP/+Tarr983b3bXkBbGx52ib/q4yDW3Ul2y9QxKjMRKMgnF+P73s1fIX3KtqzNEqivr6yrc3JkrkmwEFZJsOR+AZubeB4F/TpJSdj8g2N0iCvVr/EcWqkomJZZobIUQq3xtjNxeHwoi47RhZSJOm7tHSGsg4SmFw3RGJbHBw273VjjVvTkcBtUJr4z+aIX2yFCLPVHVtXiUyxcu6g9qOin+R3LwyuiCPx1Yv481R+WU0UpvkeGplyfudv78vRgcMfxp6YhNwdB5Ojhs/jlLzS/s4DV9FMOdcI+LMuv6Ku/SPEvLm9Sb+w3gTrhH/qKSFsg2DdacUdOzv/V04MuOUTE0NnocBoZm9J3hMO3V1c3m9zWK2YDNadqDaBd6l2WZjCpRRHWNE6trD9ysv6zf3T2cQV6lUd1WXVZGON3LW/hupDqG0CdkKDpvrJpmUhKbM56l2Q2wQY5nC/V95HJ0ZJcc4QVYOvX4nXzWkp7DY4980s2TJvtPdB8qiQyVWz8fLDnX+h15O9LE0DRfcNicdZckkgMwtPRAnd8yXjinthXkGZ60fe/plo64YgiGmKZ7hnQk7auGsoak6Yx2X8IGW5B4U/9KJHHi5lUidSMPfT7Ke6UlWaQqMOyrOV+6O2GTMpTCEzZnDaWZ3m34qzlzxy/4xSy9iC+S7KKILoroIo6iaD6fh958vt3ceqv0djbHaWJIrhODbF6yJtd0fwKSKN7dzbvC4t5gup8Y0vNBWUXYdRWga8Ha6mKqee75oOyTdY4fwL2SFrHsvRefJkd9bGIhjEeK41okRVXXbUF1LT7IPxMQaqeB38WgpF3YeMbiThOyDb6xbCfo7UgYhVaQRtObzTOf6KPw9CROizwuyqqM4jwTdSSiLNOODR7V0cpw5bHBwWy3ZEOlezPjeDNqrfQWIk4Gtq1CE3kMjq07Eo7zS665Pgq77GU/WMHaJu8absn/LqwS7UBuNr8kxqrKnyWsCi4YbsnPAiUDus/UCzWMlm5IOKNhBXochip4JIRqlJ3ZxiPl2tsTnLkG4LyDTfsAK7gmGYpyHxrqDmaB2orlWfMdL3RHS/p2twwc49qWDIKP67uAwXlicJ7ml1yDRIyVCNkLhkpecj1xvSrK8zCjuXBqUxs4Wg4QvD/JBtbWGguWhFR625aDw5M=\",\"8jtQEpwXOa3I9XJpg0cJMSzg3Y66x46lNWkO6rhWPcx+UTpKaHWYAu2S6mawJOQsyFjiQpnEfyYouJPKMfrKALAricOBySsBoIbYu+tkYWPolZbNkJ+SKz6UJq7/0LQf/nMI7KeDF8AxLE5HVk02tDkKt6UuZXN12IhkYb8jGB1ZAKYNYrjOImJwtT8IZYCTZkh2/hX5YTw14HfKgXIgjSYQDlxyYwsNdgBe7QnWp0kwjrQY786U3oJycElm3k/sDwOB6WFnnsCbtYtBsr7AAToPwY6KR2GbFMCYAABx5xt00z6EoyMbKsliwUQG/0CAuHnwLbsA7q0NSrkJDxb2xq5Ft5tR9MHqpW0YSxUEhxD+VBJWq1VXx+aFwjCoVfzmyNqOo5lgQLyvH3MgjbT+urjV48v6BJjm9r+D37RoB+p4tzDPOzB9zwZuXGiesbLqYaZabIGSsVyyg7cppU0AZrnpNq7/jGMHDsiRVbAEgBMqkKBfHYQlblB2Fm58r2NxwDrX4zAkexCS55XOy+gQluxkBkWionAwCmlBsqoVtaTnbBNpkh55FBZOfWA8rOAcqPFzBw0EkrQiGTAInBd+dEEDwSi9HDAIypaDBgKBc8EENz7F/0eypythxd7BCs4Q/AS9gwQNBONBCk/kkbRlpqvN7V3AxK9gPJvnlzYZAASqlsl9HctEaJ1a8DMITJorQ4y7fzt2HTk3DD+mqSizPC+zLOrbG43RXf8l+YHefXtKL7OM+kJUbS0SeMwX67Nqz8L2sRXHjuGMZevUQFHlanKlMz96cXk7YSmn9FImWRUnuahbqQ8hfVcNBboA3ittZowQz7GNmGKC4XuhtjoAZSInd0JNf0b4L1/1gIsqlCMT/Dd2SbrgQZwGIySsyq8MwBFe9HFsItRBw87s90aHNHFWtjxK5denPOCz59jAefoCpLrQ3elAHBtQayNHMtteznfCpn0IFaP4JL0WiBkzDMjmY5yQkuPuoMGWAP373DtLIhkiqEXEjsqJz7mySzMQ0NRUIEuqe250ZEcJTcESSDUEEPeRcyX78IRzn+goLJC1sAIKH8RRrJ87mt3NXkK7SwBANPHL7eZHeJb3J8zI2vDMMdDwjFqJcCwDq4Jv/L//AVkbtkae4NW/veFMeCtohjX1wLjO1/wrDjtjJxTBm+GC8DZdj7vBEXpjobG3ufpCUe0pDxBjCAwAiHDhBWOWXpg1DZk8FWK4HcEKAm1861dFMrgkx3nX/rCC4YVKimOPGWAF3o7dUJuwbrXgdI8HWWv5h1A+YDB9b0bnYF5rTIMjsXWR0aPCgkR/QIBnx9gAobc0CjIcAnpZGaLeuqb0LTFDaLN+MUAiXY78OzszS1o5Go4F2IB6rxogcdUZ/CA5esUDBE2eAdtM0DiCht5xv4+vnFtmF8dlkVEdJ3FPVR7NL5M9Y2o103mdixj1ccXwsEjirq7roigLgZaX6jQgZ31NXCv+IVS07D842hEDnvY93j2qw5u9EnlRjqBmXC7hhoQEPtOCaR+o82Gae0pHoU6TSBgDAmyU/VANNrm0A4BqgpUth/50yBPEEKvdBKxWEJwbvcqAw4AAoDKebMSMU+A20CLcG74XnuZsZDfyTBa81iUgLZ9Y7yvfDqzulT2kx+EEkzaTCwmkFdeA0igcZ32p2+q8nILCnl1qjqwEU1k7R6bAgOUw+7Nv3Oj9LdylP0fmPoHmImTcUDMoxbPoJyKEZFlYWZIcD5ffjN4QuWcHjnlEeVvEVUmiSKYgVBYQT5R3pGBRVBxUQTnoQ1fMPchmeaUVIzzsBdst8w/DQ1HGVJS9EELGiGPQ29SJS3RCC3eU7lfyk/AHi480MA==\",\"bGKPNig1SCPDceZA25NEQCWzixkbE4QytRCwscNnHoKlm4p4TtXEwgf9glG8CWL0ZlF0AeRo+0euQgOmkDWFVHekbO9BtZ2SaI6j+S8BY9ym9HZA80ZzyMC+OTMbUFKSNJpQ5E9roYhySEz9+g9FWSk+CbXbj1Ocdn1dUEstsgqYKwqIuM0pcwOy/4a3xffEu833q2/rO0CVhEqcrNM9Q0tu3NN7VActDkA8WYGhCScVLQBBUWndIJ+Eg1svrIc2RCc3M+7r5jMjd8LdNttK0x4TpXIZpXjHjxfTJnmPexRMxlqKZcoxPGJgf8yeXD9OjrQyO9OfY63lJyvte/xOrmVF9wCeMHEmui6vuqSS8sJrcP5WUxROuchnwqtv6hyA2XMswQ3t2RsKvh2rWEYxMB6N/RnMvQ4eM/0DAv8Dl1XavT1JLiTXUOG+vgj6Y/qjsKDpqbE1rrwT7K8sR81ycRybW9Ct0toZ4fHTeB7S3i+hPCJbchmoeZg/Q/kzEpeJUlaWo3XbVYS50i8vasKu73it33d6aDYEzDSjQAsFwELPeU9SPpx3L7zqxDCcZMOJe3MkeFg1hD/qg/Y0x8qafZHPsgVVpkbVmpYCMyt7rAHudW/g+LBd1MnTqgpFUOUzBrQHIAFohdZXqPDPx+ZNTUwuwcqZucPH++S1SdMQO0OD28SxFjMufhZsiWzXeQDAev683zZvbYm6XHBKSPpWplQKkUedsDJ2ecH1bevmBm0kORAWGQcj9B5KH80jwZurzw6M5QF5gqCKs4TBbFUXcv2XGaF79J+Qh0njNnvh8/vv//8ShFzfEsHO+4NrlstWdI/Oiy2FvbFbsqZ7fJHCPpc0nVsq2Q1mlMtBeHJ+GTwSXwj7QFKKynls9LWwfDL2sR/M06Izulfb0dIjTQZX1ri9sQR+uVW5kOues0cPJB9h4twCnNLbgQAPzV9XE7wRoAMLfkeWqY1UB6SfRvNQEpQGAd6eFq7qse1guseq6G5DfnIbzGytAGlX/5qxSUZsvv3xLpb4Bdy2BpmgYJjB1q0cPoSPg3FO2JOJu20wLfIBp0iW3RGTQw1jFQScEkViCTYbfIoNZFWfH4VxoJyDPVeGKcia5NVB700Pyy8gWMbT1QpQH2bAeWUzh4PStOkjwjL//muM2ZO9GAfP0eR6sg2m5chgMO186BLvdu7ra+PBkreKjgTtNOvWzA4Mj5ko4/teUmv2o9rq83su7LAgBCDPKsuIllnAAB/tCjg6MZDjaFOA44xziDCvY7/IZSzrLpdVWmUami2ZPTfBavQZr/H5eUJmWVQXUZuUWSbfWu1sweKJjVPEplfLT8hCyDrpu5bqunqz60laWBBF52z2sLLvRSqqtK1lL3V9z3FU5QyyjHdZUJ+3Sb+jkxLJ9/8MFG0Sd0mVLmRWx4usl/WiSpNkUdVVF5dxV0ZxhQF7wYK+uvJHuJ+UeNDDUUuqkzYpFlTHtMiytlyIrooXpaC4K4Tsa0ETeBTkz5I8LM+T2H7nAhGSYtl3LiSpJKtS0IRbMZBD+vxHv4UbMxApartn+Do6ju1+GEmMFaC9iR83Qy2EHX1/hs/YlBHDEzZxFjG8u3Di9QALVsQXiYcHtb1ZyxroGPx4LqmS5HNPaZ4A6mAsw1G987iwPY3UU56RynAImn2mLZLdGs669OdFhmfSEXSCnVeovrsGsXMPAQalqck5/BW4U3u6PQiNDUpxmrk5yigmSyw96PzBFq6pIRNPo54tqg8rxXk+2YCVk+QM0ZzxGZs4z+r5bxFVGSRZp3RjnhWSLDmnkAYqksHNmO3mKs9bVFkVMqY=\",\"2KRbkjhrUSS3l6HBlG7M40NLojKM4rxI+iuDNrAL+aJa6ixb/YSMNn0vZmm6R+qI65MAZTNcuaoa2oa4yOYBCsTxzaZprlyV1yN4EoPpIcwLBdaNrqw5IIrvYD/GfUsWm/gKj8VG2cg5QqQBMXKs2thNfSuQ9SdJrGoYOgA6tI41k4hiXE03xUlDnU5HAJCaWYa3JllcxrPMfOolrgqzDVDk0egqq0W64k1N71XFVZjWdV2nVV1k1dI8v2lWhUWc5FEa5XGZl1W7pacGS3ywKO05KxNJAaULBBfKe0VpFZZZXddJWkZFtL+u4ayow7LIi6Sq4qyoy6SUt1QNAUJuGEsKWSlMTwrzFo2OLJJHQ8uCkb7g9FSjeBXl4U66IJgyK8eL3gK+b2IoAT5F8o1GUnWaUul1sqnnMkweWkTxL03pB+nssxv0Yeuwrv/dKtPiItV0nhz789+mNM3IbXaa9J53HR02KK3oPTLcj35jj/F2pAk=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c2-6XxwOcup/p3s2d08P61h1X+8kcA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "35fb01be-15ba-46c1-b1dc-9c1829611ac8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:00.815Z", + "time": 380, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 380 + } + }, + { + "_id": "7464f928ce1a61e6481e05f5de3a3701", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1874, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/published" + }, + "response": { + "bodySize": 5369, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5369, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c6-RnSjWjBhrRiZFIr1kDdPqG4Z+Cc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "15bac086-dc44-459e-b749-8e644324966f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:01.204Z", + "time": 358, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 358 + } + }, + { + "_id": "c2722375c9c9b718b6f19547227327f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/draft" + }, + "response": { + "bodySize": 4421, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4421, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3a9e-n3X0PT2bNM3XH2IHDXx8oEGM5sM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "37bcebf3-36f8-4d67-b69e-a9fc5b42964d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:01.574Z", + "time": 370, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 370 + } + }, + { + "_id": "402830a399173e74438a37f7d1e98a5f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/published" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhInternalRoleEntitlementGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-26XmFz97QUwl4jKEa6hIqcUFAJ0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7cc6fdfb-1737-4d02-874b-309671801a2f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:01.966Z", + "time": 369, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 369 + } + }, + { + "_id": "f5be5a994a5fca0cf6e0702f8cf142e0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/draft" + }, + "response": { + "bodySize": 3053, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3053, + "text": "[\"G3wdAOQyVXt99/YKSBtiU4dO6Uqu2k7p0MQQsZKRUCADgCqjwf2v/a8TKpVDyn46oRMJbWbu/bb7vqnMnd39qvseKsmkingkBTFJpPghEWmRx1Dt7jcIiByxx3R3eUGjUWD38HBDx/ee3HNHKhBytGpPW483sHQc9J7coH4xFywc/A2cutj95euCaW1aOHdIzuPag/GmtcbukONllEe+23z9W9V44vjN0QHFhKMP1HkUXy88Ip2X/075H4NJNZnN55sJzeeKz/L3nhw0sC58UI3RijnNBsM1BnnBkcQFLZ3C20AdaXbWiTOhwOB6Qo5tH+qWULluLSGjx0Fh+6aJa46y9qPAM/zom6tEgU2725HLjN22icSv3cPDmtsLGLuD956cxHQhbV+yS4C/UnrvyVm1p2RnDmRv1J44+L54uxQu0l5bhAToIQ9252hrTrCEKpVfizVcV1v/a7FO9ScxXaDZmVZBwRL+CwL3o/fZz57cOZG4L6ljdH7dGOK+9cyWcbiwb0A/wUvTBHJMwH3vyd2oPYE/gsTfLlwdJ0q8jxy+SoT1SVzTV01I87DkpVe2W7dHzPaqS3pPDpaP4OyM0nOlC2kbCmBgCeVC2r2xPXFi/iyLoigK+OMPwGtntmcnbySpO7uGt8EZu0tMmnVKvw3KhWTMgRUsTQV8aHN9vZA2Srv0Znchwbq6S9GwKt97csmSgUCj8KAcLB2wgxcqECzhXPBCBYILZNsbpllo/357SzI+XVRfFbL6kba6eH+wTp2bVmlYwkXaXkkQgEJ1aBWXVqLycSCmkDuVVqK3m+O8LV93r0zzlLdXpnliax3yWqoYYNps3d9W04naUDSWKOTgAFIwkihaWyRtXHSV0mMU/AQJu+nEONi+abg8xC5jqy9kJo6WV8i63Xx/wKb6YAnbrezPqEwMCdKKQ9vFAEuTJolxy9YyBNsQxFMBS2B3oqr6pRqOmPmgtUwESy1jQkm4gAvzCZC+uB5piRBb7wvu7FGoSdv9rWEJK4k8Z7aj8EE5ozYN+eS6a5YnEo32XWZl/+3muzfRS2DsJLk3O5XvoG6FsjXlcivw+W8XER7pbx3vOUh8tXrnZyojh0u0dn0mv/PBEi7ggwq9FyAx7jWSyEEi4E4lCpB4RTgDh5ZKzyQ6p94+/0La2813qkOmvDc7m9A=\",\"t3hV0Bgblg==\",\"IKkLCTnXOg1xVdHsgeP19odtj1Yih3PsHUzA/cq51kHIV8LsA/JpJOC3C2VnT7yWeM9hq0zTOxIQXE8Q9bgnRH8Idnf79h3jwHrUNzxwcxidVoEkxvZD2ym8gTCspD2b7kjp57h4z/NGMUYe6h96PZ4Ni/lmVo+mxaHdG/pOdYA3WP80IR6Z5J2JAZ6cyF5tbSAb7It8tZZaIiwrguXlM6MZyqw8h4E8dW4ZKA+OhXFIo9qI1XQyzSViPgbXXOyKA3u1esfelz0oZzExnoUJYJqsIc04MGudzwSwQsaBGVUhE8AYTmAxRMHgos6dcmrvDd5iqjiPCWAA3iNtkXWd05xUutDJRzaieVmVW5qNC3UAEjYsnPSfPQV4/kD1D9UM4PD/y/5KBTqq82BSlfV8Pp9MphOFWjt71FHr9pxTge2bpkOlS0Or/KhMgMTH2LiyldUvZf6H6Z468NGqeSUnfjwAgDyHN6Q0b3HQul/czs3HORj1jNbvHADAbCFcsODfoN3vW5uJwU5Z9QOAaLzV3UkWzh0tXorMFhIUIZbA9uemL6MQEgBEFhRcjygqMj/k2AY93uqdkjG7kRPwjpWGaA7vrPeFr+AobYDZIACAgx3gp8VBQOxCGiTCNURKCosCDrLUKAGvus23kNYOFvAZicQewrDtrQYTmV8iF6DHeiQW9kWFrr8McwmWyM1H8mge/IYYZ5WEqUIPejTBqFGTzMBb+LQPLRDzdIzcGzEoaLyZlLMpqUmFkZMAfyK89dvht1QpTCw8vafjejuqRtONKjXGfL7MnhZzPOweJikxrJjNcnWDzP+7pCMKQytMsfzWscSEok0aVAoUJkZDKTRuaWyBXidB4ggD0wY11O0t8yIVV4wBD/PTLhOPAPdryvmaBmp4coXeytICHyzB11WqPrQD1NuD7gl2ewV1hAQmODTBSc/CwdIkpPXXmQflkpO8N6S8yNIlviyNhFQiy9hdqzOhtbExLYNVKkRZTn/Cn/da0MCEBAeIJLVxmKCcwYGV2SxHGvmFSDAZkt+FZMalgxFtXWsxZS5k6AaScZAXuTV2mNcwXN8+vbt7c/thZe2D57j2+M3qn9Xzd/dmsjYqrvlN+7/VrTmKPSNHVYfWTevCdLSalfmlek8un2yqsq5mw4EezcvBaKvng9mwqgaz+awup2U9LcoZcpwML/AoLnJpTyiC64lj3sNKMBNXH2oxTfsMQZaGRUeJcc2RDmQDasjgEWTMBWfaM1CggkQ+hVuPNEZqrmpYb/hRHyt4b6wmR1BpHLfFV2rrM4ohR60Cobig8atT50gcqln6iitkocAjXAZMjgD4mK6T4VU1upoUV5PiqiyKIk1nF4+BMXIkX6um3a5aFrWCg+jU48wt3diLJt2LuaZ5takmA5qXNBiNNtOBqmflYKqorCdKb+cqvnPBdh1HjnTqjGswOkroENCpQXER5J0640KzVu+/YN1LSzmdOEZTWyeuOf4PWg==\",\"yuqbVpNGw6A+8sYa6YggVno9HE8opgXHM4pyOs3GHC9sS5kZwAuew8yFQV/GWk1DlcH7ppXD0ewJ5leOwLE3z1u7NTuiblxUnLhgnFuM5uvNp9nk26pNI3dLUvWdVsNRNhve9jN6M3N9JJ1YlXKKn2dK4zr/RnbTx+Wo3jjjIX/mWBabljadTmmEmBXR2wtDU6FC6Kqa2IRohJBWM+XrZr8biAPPHfSeHDpL5igiX7iAPmPf8QHfmT297ZRFgVqdE58ihA50VmNcabdH6/SYQSLiPtNixxvlUrFKr6GPdebCpECcxOv+RoZRed06KBCjSibpp/Esam2NOCF9FhSondoG5LjvQ93S4HqK\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d7d-GMgwZu+SI6WuoBMw+yuS0DQl3DE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0a5ac2a6-907b-49dd-bbd8-61e3aa3e2ffe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:02.347Z", + "time": 349, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 349 + } + }, + { + "_id": "5d5ca9d0404897417efbe04304a84ead", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/published" + }, + "response": { + "bodySize": 3046, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3046, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d81-nVTpJgk3xoLfhymbDDptyXcORCM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "91b92849-7562-47d0-99a7-a992c7368692" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:02.708Z", + "time": 370, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 370 + } + }, + { + "_id": "b74ab2fa7c61f94d8bbb9a49203978d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-J5idz6dFGoETw6pxxTHAwhsl8TI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "35321861-0192-4c1c-908a-b1848057583d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:03.096Z", + "time": 389, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 389 + } + }, + { + "_id": "e2dde589f8c1fe9b33ab2bdde047c5d1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-moU6e5rau5hrulM9d0Bk/14tTIA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "27fc3694-7710-4159-af6b-352729727703" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:03.500Z", + "time": 354, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 354 + } + }, + { + "_id": "ca2db1d5d39fddcf12ae43089d0bdc84", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-ku5HVO0Uf9LiBn16p9FZpGZhVN0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "311a2f8c-7e26-40ed-9cc6-3717c8ea8207" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:03.874Z", + "time": 333, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 333 + } + }, + { + "_id": "d426bd32e5f14fb65961e4ec48cbafe5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/published" + }, + "response": { + "bodySize": 4157, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4157, + "text": "[\"G3FXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRVuW+tN6NiTIyL/RuG54mEme7qwO4PbiImiIqwuqanlyAEJBkVoPHMPkp2eJIXBSTvWNjz7k65W2RT+Md2E6RtKnH0RF5BSajAo/NfjX1uO3NJgILmPU4KPl2GBZ8SoLCnwvg+zQPb2q/8ySujYfPjJ7u/nhCqlncOKTxZPEMVUnAeTw6qn68pwGcr+Fifebfn7nmRI2OYM5nlGUvLcLeD86YnNwsNTfbcPQMFH5ccVhagozZXvYLGF7/zeIoerRmxeaj00HUUzOCFiWiYm/v7h+2XNaR2D1BBO3St6roetU/mXd4KZClncRmlMNIAl/Owfre+3d+GPivTca+Mvt9MGsZZJMtG5FEM42O67Y9GQnXY+goUuPDGOqheQbn1y8mic/EN5O2AFI5Xdo9QQTCf13qFrdJIRF6xYgonV2BA3nVEmiOnz9+v5VdiWhJ6ODl4WNhR3iUrfSCtsT33ta6Y66s1IYScud3/3ATkL7KTgZtaHtB/4VbxpkM3nb1ZoKXFzdN33Ujy18Kbujygn06UnMy7PC3xhfxFLsVAZ9kveRrmm6gDD45ttQ/XAoMl5nPBhPwRzb4ombxd7yeUvI6UvI5JYeAHyU8wLoIQQpSsSA1Hybp+GQwObVBDcAtoiS/LlWkuanvRaH+Gj0slaUiocY7vKhJDZ0IIKU4bK1JUxPTVYvF/FP62ytw5ddAP2CFA7GsP6/6wAcXoHyN/GOPjm1qPs+ms1vN5UOtprYuXJR4yypp7N7WeTWcwUsAzal//WNI69ah9g+pivGrz5yShgjtrpNmj8+ueq26P/anjHiMYKQCldcl6qldaorUptPXomtLiClVCQXKPDUcQp5hTZHmh/5gmcxbO42SehfMsnEdhGM5ms6U3m912563Sh+kMxpECOsG7ROpKdMg/E0tfEBYJ/CQFct0/J2HL4lSU5SIrs3SRtEm6aCJMFm0pm6jliRRthqBwFo+cjhTw5aQs3KytpkFV5kmieRHiNKZTaI9WmlgThEJnrQ6NgXrJPlnbgjl4c2KjJjaONGH/17emw6DBrGgLFi140bJFEku+KJlsF0XSNCLLkjjvXJCFUCC5TxuMiWfl8WGyCc6cTh8rgdor3x35iZXXs09+/50=\",\"zATc+Br4m4Qz8s/8rODGmFTF+57PBpqv6Hbmluw4aBN26L3SB8cCHH8N6sADYfreaBcIo1t1CNSBP+14KfAE/uWogZIa3q73NfABbc/cEuWhLPmL6KHr2JSJqJaU1qKt6XBbTGJqm5/hY+ojSLju6q0UiL1Ukk0Se/KdmWrJNBuy/f57xuQuV4UO3IDimA4XS7FYW9Wa3ofxiYGR5puJSZPwSPGAS2RcbOM1mQmuBnIz63EcR1651UiFCnWmXeU77G456psKMTvQsboEjBrdff5wt/nwQUhxz6S33OOFXxdl0ggmWdqyJhn+iLVaf/p+L/hxwY9ziD0Qdx6NO2/EXQqyF018sqG9B+OOEwAlJmkyJGphgqCReoiiq2JKMK9G6eNIH13QHJX3Xl94p2Q1DBBShUgkIwacOuIRqlq3dhAEiujxODlH0NwNLF2w1ho5m/z1F96JAMKHlvHvboigwi4W87ncPBNtmYWpwFRdp5aSmrdcdYNFS5Gp8u6/WwbRdTfEGJSy40MFWwYSGdgXVNCZg4AzgG7NtIZ0itJrQQ7swgI1zN5A+brIApU+d7OgWW+QhRFRmU74F4mykpdt+lbnIYru6l4kJWtT5EWesawQ4T2H2Gdc6fcXkwPzzcY/WoTOwNohyl7ugxTGMFU8qiFyvVHKb5Ua02hXEyguGVcPPXWFbtoZ0lSDRojN7wvcPS/iMCvaVOZRJIqM6hLMa53WbWgj0RFukeyQF58n/FbP5hnJzf3GEWMZzZZIrCS3SDpzUGJZ6+9mIOJwfqxlEIsoFrc3q4//PwfLWu8QydH7k6uCoOHi2Xl+wGVr7AGtEc9XHeaYpBEuUFJ0ZpBBxz06H1iDwhZRRAksNsHgYlnxLwTfiQwWDx1tG6Q1lvTGIjkCjZm5Za0hR7sDBnlvKOKUPnRIpC18oux8JnSFX3r5I9Ya/gkI6vNi25YkShNOvL0u9rTbF2k6I56jgu2A9VPV2tur7htz5D/Otvmfz8bcsmVIQFFJjDSTqluPtU5wcIpyOkfol+MBuTOa/EUmX5D9vlFWZG2tscQil0ofQNkwuSh/JEoSSYDFkzkP2pFqy1ZBvLlfxDWqNck4IhvQcboMWet5WH9crzY3+8ec6KHrDFZL7ebDh+3XhS5i/e1+83Cz32w/tV4QNaPvLXpvGBm5Cj4r+CwH5gHWJcLkB/0iqDdY51LCCbmcZ6iBy4us69p15pKjwlUEsjjD4vkmhnu1PqGspYxcJkijiRc6DeI7ds/pqUgrVj2j2E8RSjrQ/3URy+XtPt/ernc7Gtb6wpX4cU01eSuirBQ8wcbVo565u9l8WK/GyJsMxyJHf/6IxBt613eta/DmX3Cvn0th+hrewEhBiEALF6LoQiS3GSKbIVYztDCNHfbUX+GIXWeggoMxsrkiUDgqqOBoOg4jhW2ccr4pdtu8Zrwzg5VmFApPRfKd6FeuJBkIIw3ov/qkmOXebj/ef1izXQQ/tFmWMWQxF21ZRN26bdENPa6aX0FIkZVEMXEqmgJmeeJuV5ZozblWKTRjHa/+08QlzyOZ8KZA2RmDub8pdTq5JSAzJGF4AncFUUvc8L/uLTFaXRdksqeiwSefJPJs8qfg36+poojauMxTjJPwyRsrrwVTRCpTzHpaKhUoi2hfl8nkHiUlObdVakXj9ZNUH0SJGSYr/WvLY5mWjIVRFEedLPL4QdyRpZYASCyE3BEOMkeIxQoZTle91A5N+xQJu242LGFC5LLNRSlUEJSAkX7/0sUud3kgO4FVXXTKDzlqd713WUfI2tfNtgizLI2KJsl4psjKW5SXWSYz2Uk1ThUkTWj7peohh/dqpe9/aWnEBCJvNA==\",\"4nV0Ucd6i09GInK3tfwkLe7xFV6gKuKMwhWqNKRAwSxiBSt7raXKMCjRGNtoZ4w=\",\"m2+jT4OvOc7TL0K5lTWnE2+6dak2SrkVduhxwszWUvn7wP+ZM1qUS9tH7qxdIjheaf0rK6LVTBoJTIQuJ5ndc2uG2g63imsPFTiXC0Al4ITRZaTwVL3mc1D9fFTjgNJtACeO2HMVHOzRh7N1zccxn8ez/lPWNo/DW54kRvOIz4XsPLf+0XsjjN6mhc9P5LDDPC9kLl/iqePXJ26tuQwzKN2aFwtM6iP8NVdozMOmJHMsBb6oeqPua6QwqFtRB7HijivusUI8jCjJlqwsy5IVZZYUCSsK9eaidJlFcRqyMI3yNC8irOACSb/RYAFEpi7GMkSk1q9HuFc97k5cQwWSX6duBnMwBEOqOCLAksQCjsiNS7jvfDSDHcA/lS0TlozEH316o/0xIXIknI4EzpWVngdq8eRBBT72SI7+kzOUN0IPmn0cVYPEOlPA0vlOsyTZ8EZNj7gvPIue5/wpMJdGvBf8OEwyaGq90cybGau+WH5l6iuiqGOdssR5kjZS73bndR8gSJ952ZMwRV7shFs8pM1nUfY0D1U9gVh4ZSZF2CgBM0vEPt6skZN/KRfEZ8Tqm2HsLmPulwVeNcmV08KuwjIre1Vy9FXMNMybJcWyWE9cZFEYs9FeRfjTqSPBCfO8DEmiyMg45VACyHDV16ehb9CqX5A1y5FUSub06HsvNo5ei5kX0UodJG2UILEs1wuD/K655BuPRp/FGhxaUBOoxKVrZVphXPp7W9MhqCN4hHSj9tyoTuDQ8QmhiuflpQXgZUiG9dEPpHheviIrooHHiF5iGVr5IOqjxjl7RKl81ChkRT02V4476hRk/11A0b7KvIwly+SfLI6LoogKlg0GFI1+PfxPxT0WVxzoyQUF5UhHsyZ5LzENsrcMBOUrKzOL4ohEhMc8AMt7Th9mfW/NiW/In4jXTGmOsIfgpkPrrx4xjk4wEjsk+b6oQ1eyygRbbByedYGGKxcKyzLdxnl2XGFc3SjzoqwnmkUMlFeU9jjnnrvnO3PmXJ/z3A8OKjibh/4kUOgHH4Ge3g44Ag==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-Q/4wAdkfpsCvESzA9rPrW7K+MFA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "190af304-2a92-4fa0-b874-b972253dbdaf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:04.215Z", + "time": 327, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 327 + } + }, + { + "_id": "b06958c0cdb27bb3b80f440048fad0fd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/draft" + }, + "response": { + "bodySize": 4157, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4157, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-C1gIMwgWso5RMs/mDYxZ3Eg3qMs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "54d38b95-7027-405a-a33d-94ceac917639" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:04.552Z", + "time": 242, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 242 + } + }, + { + "_id": "f5fa4d5ce30724b18d7d2e8d4c52eb06", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-CLVYYs3RN761UmHxFEXkdG4hj8g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "40605471-b2c8-42ab-bb6e-5d23873d8348" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:04.801Z", + "time": 225, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 225 + } + }, + { + "_id": "6f657162bf5a8edafea4d88a39373467", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-WLmWTZaYEA7jvXMJoJw0qRcgctc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e4aba24c-fd0f-44ac-8f48-a7e4a06dcd89" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:05.035Z", + "time": 229, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 229 + } + }, + { + "_id": "da7b8f1aee9db97902eded34fb2e307f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-yXDtYIPYo2x8mSLCuW2pE050I2g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f6f76940-4935-44ce-8f3e-9b63405f9702" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:05.270Z", + "time": 334, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 334 + } + }, + { + "_id": "dac080469cc601d406e477766a738873", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/draft" + }, + "response": { + "bodySize": 4473, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4473, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"40e1-Q+rV0bnCwnVt71NZXImwcbhubjk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3c1ae6ef-e1eb-4ac1-9849-59f6f6de1d0f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:05.610Z", + "time": 330, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 330 + } + }, + { + "_id": "9df4e0417186278cfcdb33eb6f85aafe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1882, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/published" + }, + "response": { + "bodySize": 78, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 78, + "text": "{\"message\":\"Workflow with id: wfEntitlementExampleIsPrivileged was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "78" + }, + { + "name": "etag", + "value": "W/\"4e-gIij0YPtc13KQvXr1PGQiqJiRfc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "68789170-b2fc-4c55-a0f6-3f922ac11700" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:05.947Z", + "time": 375, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 375 + } + }, + { + "_id": "e4daad725312870cb4556b1eb64158eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationGrant/draft" + }, + "response": { + "bodySize": 67, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 67, + "text": "{\"message\":\"Workflow with id: BasicApplicationGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "67" + }, + { + "name": "etag", + "value": "W/\"43-F8qvq/zX6qiwF6tRyYDPCaulCvU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8eb2b664-5504-48cd-a5cf-d494116ec60a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:06.330Z", + "time": 275, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 275 + } + }, + { + "_id": "eb694d0c99612d07dd43775cfc370349", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1871, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationGrant/published" + }, + "response": { + "bodySize": 4242, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4242, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"34ef-x73AKiWo/KthayIK5Zk8Ek0P408\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6de33a37-917a-4c82-9540-96bda4f92e15" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:06.610Z", + "time": 254, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 254 + } + }, + { + "_id": "3c7fc4bb19e853876e6b385be8c5cdc7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1868, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationRemove/draft" + }, + "response": { + "bodySize": 68, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 68, + "text": "{\"message\":\"Workflow with id: BasicApplicationRemove was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "68" + }, + { + "name": "etag", + "value": "W/\"44-BYpTw5p7E/WXwfHffjkqNwJb2CQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "19858376-b5b5-4f63-8f2a-4e2186d7c4a5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:06.874Z", + "time": 217, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 217 + } + }, + { + "_id": "c18e19d77e0bc2cf312da68a0a71a036", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1872, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationRemove/published" + }, + "response": { + "bodySize": 3641, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3641, + "text": "[\"G84mAOTe11lfv3NzRZAotilNPLYl3B7bSPoVbRHWmCixJZ8kE3is73/tfx0IjRIo1SRSMqHdmbnI20W+uDXOzOzuk8X2P9QlNEp3D40UPiRCpERCqNgQl25fYgQ50lS2n+IjGo0C36lg8rd1XZpcRePsNVVuR8jRqopo5JELk7+QJsN9EtzTTvgH1dE4m+1pD+VPAEXpXqBwHv5IgosbuwUFTSDPAmyGkQoHbGS1uAhyjIeaUODu4i8SjLPGbpHjDs4n3y5++EKVgTh+97RDMeUYItUBxX/HpvG/h/Cr3qnyVoXns8kwL6ajfDAaDibPzlvqzeBWhefyRSZpkF90LnFES/t4E6kul210cX4UtilLjq6JuSuh8+Xl9fp+idWMoNjtvana+75RWTYbToeql/Ww5Xnt8/Xyw/L89u518tF0kM0203w4ybD9Wt+Cz0635jz2gBxVHp1nUw+jURzxrGc3Q4ESzxz1YjptAvlUIpx24W5XVtM+6Z57Xb9Y8v9lXxOjkaMJy33tKYTW7y76hlqO0lsVUBx5FyOSw3D09ER5vKRJhWC2GWRz3Pu9e7imbVuA4Dxt+5Uj7cjGrE1aIOl1RNUoQoEtmPw2/zVIY1uarxTOdX3ofTxXxmrySFXAscjmXdn8gGLAUatIKI4cmsL5bi3kTDsa+0hPO4OT/vBknJ2Ms5NelmXdbjeJbnWzvone2G2ni23Lkfa18S3JOeIxB0ybDJtnhdd9T8t9bTxpqfgDvn6M4GTebSuhOS3XXa4iT33cH09ns82YZjP1lu6CDAS+sjx6Ib/Ar9ruAaNvCBWuRjtLLzPYpizbrxwN6+IocOs+W9BbQ4Gl227JJ8YWriMr+TgSu3Nppd0pfyzHJWABB+y4brKleK+8UZuSQqc7J8Zeq15pWCScMdlS7DCjGd3nLZQpG0/XpIKzsADblOW8rLT7mAEusrkcQ2ksrSJVRbGlJsFDSRv9AY7SAgCkKVyT0vXsDG7zRHlczuu/m/XmCRbwT1Yo1FUip7vpMLNV6VnrNimbU5rP4iFl5udhNQf2fnnLOBxbDse2O5e2lfYQINXQoW5lVCao3DdEHUkLWHrvi1qUNnZb9yO+mPgIRoPpi+nyLiRtmsK5JxWpjbeE6KCptYoEhbGqZAF5aGCr3TbxprCAI7AQVWwCE8D8dTU=\",\"48DoqpgAZigrNIOW11uaAjq/NM42mXeDxu5sWNSoar15SioXMic/Uq0OpVMaFvnsFg==\",\"AECipW9eaYmieUdMcldVziY04TyHxkabeC50ey1RwLElu8nWKxtvDzVJFCBNb0QibVhb42f5f0P+cKm8qkKtY9/NHmW515XbkcSi2WknHzYau70L5BvHObU5+cToukSkbYCi2VOuoQwgmJgQHuRtWJfl7DylAyqBcb5cAYjvj9sE8isNp8DSLrhYYBzY5frmlvHCUzi/qCaxthd0rSHZuSZ5Dwug5Ent1HKfE4qLzKFPgKjlw836S3JSy80d8j45/K3aWtp+NgMWCS/9xx9A3icbpw/w+lc3wbpNIICSDy6kc7DQ5hBNQJAyIzqQKZVa52mGRGDKGeudhtNgUicxJdhmFIHUqj1Oa0BqTAEdO7z4Atg2yTXGWabVW6YprIrqGHnmBqbYBDhgUAtp2JkDU1nn7nKbtGZ8JIgvFNpGMJEqi9fL0x8nY5aAfYoltfG2L5Z+8s3dUmABfVX5GiSa2e4SQYBEQye0G1yfgXTemez5zqpNSXBmD4WV27WIgoQnD02eUwhFU5YH3gIo20nunbdp2GliO8TLJDo8mBEMn9mReQ5Nqm4E2csC8QyAO2BetAW6SUJgWyxRMIVRhbT8JxccDysIsjCT66p5FxLEKkn56ZeCh2aAgdmhrW2cPvAaJ3X1wd+Nh84zURCCLUW5sjSW5NloH6sTaLZx6ZH46KJtR6G4g0DUxEcTFJ64RLq7uzSFG4owOpEKR/Nfw1CAf7EGpre+HzURFF82znpvcvpOEth1gAUw67IBS7Y20mxOjmKi6o1KitzsDAuIviGwtN5UBipeK5paH7tj/qwWCEdzzVnARLGSCWCsACwTxPFhAR7ID0WLWqj7N9UrQ2/I2BUlghT7OOhEYneObawhY2j1evJ10OpASb+bG6gkh7V9L9wAOIwstbJRqAIE9WlIZ7WBVtMe+viTAhX7q7jaYWMjLzQTwDRZQ5pxrE0VXjmsnYtzH73zJZPPbDPNsmw2Hg5Hw9GV4ZsDePsfC+ePlD+HwFNw0PHH/l5FelGHs/6mGE/HeW8yy0YYHfetyNfNoZWIeWvCs6kH9GjAdSYyzuXJaLg0bLVM253r6g/KxMx+8Rj4MAAApoBOARTFEMpF5khfiz7NDji4MPZtHSLTasyDPTFuByt4jSQeakyvYmDlxLS2YPDzJyzxg4zpi9ax6OMQyAhQo5YYJG8pFQGbx7BGyDwvKUUBr1kSEWdiT7W81RoUVka0oUAgg+QrNFln9UXvpVld5Al6ZyDEuq4p1BZ51lPctwSD0wYWnQKDgpgxD0Q7HEGi0SA46T9QluYrh7z7XeLqAly0Eyo8OXgBxiy35Rx2fgCFOCxZfaEidd+lcnOBAvynQ1VlAOAi564pNVgXYZWS7QGUlWwOp5bhwkBnEhzR1YVVcXRqGoBKTLkqpsGBFIwuUQZX686lHTAcLBR1JJKtsESegoHmiETgPt8rXQpj3OISORt9pxO6u6RErssaHAvgZFQnSM4PEyTwXbEwIBXSHVa+baJrypyl1Th6CcYrKa9IwVYRkfCE3667ivc4ND8QtOVyJmw55xsSy2bNCocgvPJ9ExS7ePhkIRz/3Vk+GkzHU6JNX6EPSYWLLKmGRyS9EA2bt4ZGwTJ5R/k=\",\"GRJtB8cjKkRmJi9bIgSGXGiwmYe9YEpTOzrKjaZXOMrirmbVRHc2gF0EuhnFkWZRMWapcxOekBghUJTow6B7rjIpkvhn/Gwg/2LGbrlpfJSphY+RP3Ucs3in/ICcCY3JWYaI0Y4iDmz0I4MJN2THvhPJEgha9LfUVtkD6JWq8h3/UgGWVq+uTKC6C+frZWsrH1VYemxmDgtelDEjT/8sGw56pDa9WdbPDa2SucdbeuuuWbWV9YyJsrLWXMnrLI6XwMQFZtSk/fXRVvXNBCTIdzS7xKQI8l/jZ3JPgvP158tPy9slew6sp9BUdLG2mPTVTCEgPVKAWQa2a/XZf8+nIf/iNM0YoCPqT/6ychinsLBLb85xj2KScTyg6A0zjjsJpdkGhlpphoymzWrz3laXQJeZt4p+Np08jrXfM+uBH4NjY86dLcx2coOns4YV8jThAl0kX51gJlL8rchxKoYyYYImNED3JQ1mOHyBW1PRTa0sCtTq0AldnFkASUInF6M8Z+lm/oGgCZgped5GFIhtt2b0x5zfvt6433L9PI844h5Fb9IbJBhaJgfy7HX/4Tj62UTKBuYeG9Ofo5dNk6w3GvdHsyw0ECLRKSTOHI4EJzIbvYjiBEiEVM5U1JLHpQWAO1jNgl5/1KbIaJaYlF8xlJho4GDUdyf1UySDVBotFErcFpfe1ajxR/rSVBvyKHpmwFN8WK5J19mtRj4eZtp4WYIB7WZNQIFnytRZI8eqicLSrlBloBY=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"26cf-uQIOhsE+LzEsfgyNUZ53pbF6JYA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bac3f303-c35f-4bf4-9385-78e0efcadd96" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:07.099Z", + "time": 378, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 378 + } + }, + { + "_id": "3351f3b1c0a42a51b336a49f38e8d3d7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 67, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 67, + "text": "{\"message\":\"Workflow with id: BasicEntitlementGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "67" + }, + { + "name": "etag", + "value": "W/\"43-BGgjCYjgefvujguYuacd8EdX2io\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d7e8cf65-7470-4fe5-b7e7-43d585d8d0f2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:07.487Z", + "time": 375, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 375 + } + }, + { + "_id": "593d5a282e3c7e6ccae3e365d5ed9301", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1871, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementGrant/published" + }, + "response": { + "bodySize": 4469, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4469, + "text": "[\"G6s6RBTzAVCEDHNfvq76r9++viB7VmMcMRbFZi4kJr2sC8JqM5o1sp8kD1CUj98vU5iCqooRFbqOyNXoCjcklsT+bA52Uz4AnJn3PgUPgFWBWbgaz6Dq5E+BLMsKZe8xXHUOBUHywt0/hqvremMDVPLrO3BFo1HgR+VNu7XBhH4/BD6wPzhlA3K06kggdt3C4u+QRbhvwT2fA/+5YzCD7Tg6e/LvGbp+OEE3ODg4ZYOxB1AweXKgLFB/dsnGxcaxN616WJdjuIyEAs8w/im8GayxB+R4Fue1p81vvVO9J45/OXpFUXP0gUaP4n/X0elLRPidflX9k/Jfbuuy7VZVW1RlUY+w8QH6BHhS/gt+08kmkP/p8cQVLZ3DY6ARrzrZxROjsFPfcxym0A4Ylry7e9j9c4tkboDijO+BtC865VlWr9R+lXY1zryv2/2w/Xn76enukyhql22x3BeqrHD+g96pvw16NE9gL8hRtWFwbFrOaBRX3O/ZE1CgxH1HfRG9mDy5hUR4A1EkyVv8yWo6JyJ74HcnSw6++w6A2LjcCW8hjeEd/H34X/pHYjSIXvWc0JCPHyNH47fn0ZH3E++Wgpto5qg1N3sUVwHWCeQeODp6oTb8Za7y3hw66HA81/3m5ZpPU4MATzDPf3CkV7Kha2iLIBtdUSV7KJAptQ9wB5HGGVtUi8YDFL9fw0djNTm6nsqx6+bzsu0FRcFRq0AorhxqcWmLZR42shRv85uouMlu8vJmmd4s05ssTdM4jpMw/PS4ewzO2EMU4zxzpPNoHG0DV1ztAKgERo+EU39r2/NoHOnZ+Bv442OU9cPm51kzBmZuM7ROvecFqX3WlKsuo/bNt4S3Cf6peqONl9LQjZD/IdZ43AoGNxE+HqAHS09i/V/XDyrQSV1uyxXV5aot86YpVZ9t/44o8ASIQsO3jgL74XAglxjbDZHEh8laYw/2GMy1WPHW6+jeicR4La20r8otRrkTbGDFkRdMDhT+qZxR+558FK+BSfjTftKwabhucqAQMaMZ3JvqlOknRw+k/GBhA3bq+83aCkA35kZ00X/Zk3EEcOeBw6eBD+3+8jbBRb9zaaUN7gJXaQFGcgu7/Qts4P/F0NXHZOLfQsTMQS12wHeusi0tRn2CXzB4w4LvNAf2w/aJcbjOHK5zvJYWRqhQGfM=\",\"102MbuEM2rzI\",\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3aac-weJKeqLqqxM61Dcrwa34/4/W1LI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c8ab57b5-edd9-4dd9-8dd9-2158630093af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:07.868Z", + "time": 380, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 380 + } + }, + { + "_id": "bd01cf01ccb65aa74af049639657f501", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1868, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementRemove/draft" + }, + "response": { + "bodySize": 68, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 68, + "text": "{\"message\":\"Workflow with id: BasicEntitlementRemove was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "68" + }, + { + "name": "etag", + "value": "W/\"44-Vc3pkZTz8c0Xd6pGfgNMPY+zDUI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "78426714-c73d-437b-8ed6-d3d3799ec089" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:08.256Z", + "time": 361, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 361 + } + }, + { + "_id": "e94fd515d9f9cfaae66ab7a0ee7e07e6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1872, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementRemove/published" + }, + "response": { + "bodySize": 3694, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3694, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"282b-iYsS/Go+9msu/LUQpaayE/9Ut+k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2726a694-d38f-4152-820d-852d25455bd7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:08.623Z", + "time": 350, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 350 + } + }, + { + "_id": "3e911fc4a2e11dc2ba18618e0df565f3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleGrant/draft" + }, + "response": { + "bodySize": 60, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 60, + "text": "{\"message\":\"Workflow with id: BasicRoleGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "60" + }, + { + "name": "etag", + "value": "W/\"3c-c2gs6Qtccb++ZtDppvn7PuYrx3g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "74eadcb5-9e8d-4050-992c-513d63c1f6a3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:08.984Z", + "time": 238, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 238 + } + }, + { + "_id": "587f1ef0e5c71c20773eeae0ae0bd2e0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1864, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleGrant/published" + }, + "response": { + "bodySize": 4086, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4086, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"337a-3bXRMjWEhkZ8exitskZip+CI1Wc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8453b91a-fdc2-40df-80ab-5a69b49ab48a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:09.229Z", + "time": 232, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 232 + } + }, + { + "_id": "0e1c1c1e83fc7d9078aff3b9e118ff87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1861, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleRemove/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: BasicRoleRemove was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "61" + }, + { + "name": "etag", + "value": "W/\"3d-vFrHfV3ZCBt2FGZNHbXP1t0bnmk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "70df02b4-6231-437a-9184-c3318c3a348b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:09.467Z", + "time": 340, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 340 + } + }, + { + "_id": "5bb06c031814513a8d7cea75320669ec", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1865, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleRemove/published" + }, + "response": { + "bodySize": 3802, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3802, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"2963-qRtsb7EnP1yZ5CbyZSjSdDfabkw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "186c7022-0135-47e1-b56b-b351598dd865" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:09.813Z", + "time": 331, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 331 + } + }, + { + "_id": "ff5e9c48047b6c2ca986446fd1480d99", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicViolationProcess/draft" + }, + "response": { + "bodySize": 67, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 67, + "text": "{\"message\":\"Workflow with id: BasicViolationProcess was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "67" + }, + { + "name": "etag", + "value": "W/\"43-2MamI9l8smDlZ/31UfS/2zQ+i3k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0a6161c0-00fc-4da1-9838-607457ef2a3a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:10.152Z", + "time": 239, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 239 + } + }, + { + "_id": "425bb0166356b269d825211dda1576ff", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1871, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicViolationProcess/published" + }, + "response": { + "bodySize": 3126, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3126, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"231a-sBYFKKavx1PoYaKyftccuXhPJsg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8c3abe20-ee44-4c85-8eef-9fdae1aa45ac" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:10.397Z", + "time": 226, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 226 + } + }, + { + "_id": "a253c6f6a954d76b7d72791ec032165d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateEntitlement/draft" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: CreateEntitlement was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-yKyt7gzKt0BvfdZKP0hwrUGvAhs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4aa12304-476e-403d-bd38-826f0d8abe79" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:10.632Z", + "time": 238, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 238 + } + }, + { + "_id": "6aa5555cb9fe297ca87fb5945382b074", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateEntitlement/published" + }, + "response": { + "bodySize": 2934, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2934, + "text": "[\"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\",\"8dgm8jUpdR2pBw==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d35-3kq2ii1zyqxUcu7vO9IdxPOSP/s\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f73c5a49-93e7-4a83-a7b7-f76aca71d949" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:10.875Z", + "time": 214, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 214 + } + }, + { + "_id": "49c30b75d8d7ea56d1695d88022ad5ae", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1856, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateUser/draft" + }, + "response": { + "bodySize": 56, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 56, + "text": "{\"message\":\"Workflow with id: CreateUser was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "56" + }, + { + "name": "etag", + "value": "W/\"38-eZ4CihDWaDX97anlY4aPEAm9+c4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0e5c9107-dc5c-4959-85ad-99dad3a38c0a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:11.097Z", + "time": 233, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 233 + } + }, + { + "_id": "8982485061a4cb50a88da3958a8527d4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateUser/published" + }, + "response": { + "bodySize": 3070, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3070, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1e43-XB4ZancGCWAWoAtSLurLwckOvJM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "46bd82ca-5e60-427a-95b0-ba4777d7d52c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:11.336Z", + "time": 222, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 222 + } + }, + { + "_id": "867661a649878fd861d92a9ae96bff62", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1856, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/DeleteUser/draft" + }, + "response": { + "bodySize": 56, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 56, + "text": "{\"message\":\"Workflow with id: DeleteUser was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "56" + }, + { + "name": "etag", + "value": "W/\"38-abroQZOzPg5bfnUz9PQw1cGNtbY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "906bb50a-47af-432e-bfaa-2bbdc71897c0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:11.564Z", + "time": 200, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 200 + } + }, + { + "_id": "f2bac77cc135f34f96a1dbad59a92472", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/DeleteUser/published" + }, + "response": { + "bodySize": 2782, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2782, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1ba5-Aamp4DyrkD8BP+cQSw5VigaSoac\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "59c0c3b0-8e46-47ab-be41-ece8b0159dea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:11.769Z", + "time": 304, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 304 + } + }, + { + "_id": "a2af9d8e4f1017657f463102ab9991c0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyEntitlement/draft" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: ModifyEntitlement was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-8+wJxGUcoto/YwmgtxTPbHUzQXI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "de3e6ac6-fcfa-43af-8cd0-8cb11ed8492b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:12.082Z", + "time": 228, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 228 + } + }, + { + "_id": "0f35899276c5f7f9b773b80a825384f4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyEntitlement/published" + }, + "response": { + "bodySize": 4126, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4126, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3317-AigvO5OBFsDn95A4j626UgcuO4I\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "49b098e6-c6bd-4219-a6f3-ae99ac0255ce" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:12.319Z", + "time": 225, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 225 + } + }, + { + "_id": "358635fe77aa78203f678f1fda3395c6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1856, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyUser/draft" + }, + "response": { + "bodySize": 56, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 56, + "text": "{\"message\":\"Workflow with id: ModifyUser was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "56" + }, + { + "name": "etag", + "value": "W/\"38-fD3hOO2hRL9unTHHFdLHeCYbpQk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3683be2d-b4a9-48e1-94da-dd54e28f7ee6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:12.552Z", + "time": 224, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 224 + } + }, + { + "_id": "532e48483df4c2f98caf08e52522e65a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyUser/published" + }, + "response": { + "bodySize": 2954, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2954, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d93-NnoK86M23LOunYWMwtJ7Tk0Ad8g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "321304e3-5408-4903-81d9-352fdad90225" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:12.782Z", + "time": 218, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 218 + } + }, + { + "_id": "909e2175c4ff06b58318849cb58b90b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/draft" + }, + "response": { + "bodySize": 81, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 81, + "text": "{\"message\":\"Workflow with id: phhBirthrightRolesRequiringApproval was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "81" + }, + { + "name": "etag", + "value": "W/\"51-QRezKwCScpSwPmN+tbYjEg+0M00\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e8223e50-2c06-4d64-8964-fa99eaa6122f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:13.006Z", + "time": 225, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 225 + } + }, + { + "_id": "8a4e20cfa54c0ad3da9324f1e734b0c3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1885, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/published" + }, + "response": { + "bodySize": 3190, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3190, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"22c7-Fxiv6DPSM2Tzey4E9sFb7V2q5oA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "43bf7d4f-469d-445a-8eb3-d7e37fefe6d7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:13.237Z", + "time": 219, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 219 + } + }, + { + "_id": "ad1f659d42778f56b814b17061da4a7f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/draft" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhDelegatedUserDisableWorkflow was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-XXvemAx7DjeH9f0KAf4KNtJxYvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "639060bd-c951-4b71-b53d-ba44c1334110" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:13.464Z", + "time": 213, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 213 + } + }, + { + "_id": "fc5fb53194142dd5b7a7934978ad1a87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/published" + }, + "response": { + "bodySize": 5988, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5988, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"47e1-6wVqvyX+RcCEUSF6iXcyh3XQNw4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "94f5fccb-c668-490a-ad1b-48baaf774cae" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:13.684Z", + "time": 237, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 237 + } + }, + { + "_id": "d60d691416c293d72aed6e6869ed2aaf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1858, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/draft" + }, + "response": { + "bodySize": 58, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 58, + "text": "{\"message\":\"Workflow with id: phhNeDisable was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "58" + }, + { + "name": "etag", + "value": "W/\"3a-P5saSw0lCkTOzjQ3s7XPpznTdHM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8309fc7a-e9e7-4cf2-bcfe-8f7977b4553b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:13.930Z", + "time": 213, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 213 + } + }, + { + "_id": "21730d324ecc71d802e367d76e2332af", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/published" + }, + "response": { + "bodySize": 1647, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1647, + "text": "[\"G6AMAGQz1Xp9MfhYThjZKY0Z7bUt1blWmPEwIiTzlga9AJmun59rEa/9UkRKfPJxb7chIn87lYR6WoQsZokUTGrD3EhwjzbTi0oAXP+AZ4wBLe42mxW9jupvE6FB9luiNB4wHYRn7TqFXq1YeKL9JHclZuapx5/6++OO0A4+KRlcC92hXRrUQjtF+9+zeVT29797/XpweTmE4fjwvD+5vPXj/J+zD/CaEo2+EPyWq/SkaLCYklWFoPmP9ewzMj2U3wrtLEsDIvZDi0UqocFcS5/9qQuZCf3cAi3XlKYbgwgORYvDeIShd0aLiz3HsAdfQH35L5UkkkJVEj1tpFjCrxKEZm5/DQn0nsH3BdrVixzD3sKx4zsvS74Ngw7m9T+wHan86SX620TazK+YSa/yIUAneN92pNLM1jHM5leOHRd5hGfHAIsFvKPiFn2uAiXDEDm4N9UxgG6D69v/oYPrJPCysG2FfGhmcfSLbafWe+5pwd2gixns38/0IcyvtOWR+CnpzmqJo7YxSEy55vQopZJ8CE0+yOGGVw8Ki6okC4cGHDo0fD7HAH1mzYnalMfGYdd1QauMPL4qMTOMo1Kg6zp5HdnMX700gg+vLTgsJH9gUQng+l8qyWPspT3l8vPSqiSwAV70XoC98bdK8vizF79V6GJVC+BwTdvsbUyFxKGFmeh7tOsYgL6Bw5lHg2AfZg5nRtE9hkgpqEMLDquSrPyWzBjviP91DWWz9TGZdQwOHQNMRcLoLdWailYCcEyOgOb4FGusq5I4NMXBKmABU1Aq4AQTWhjb/1hjCpCD0+BF/CNYTFA7+O9GzBwHaHSltzq3+ClXLvAKlnNAdXjWbIcsb3y/GYSjViURyARbndpd1U1DUQEcbhW4zKFt3svadQyGQz6rZYQAug72wWH9AWK+8v86NY8cHWBPn0ejAQBgQlL8A23+IOVxJGkjD7lxeH0J0Ai7r12iFqw7hTpPLFzfxbAyreIX3HvhxuEqw+6Fs2DJkSCFzQkHD7lRc8OxCjf5aYlDh4Ym8LLOGiNBT85TPYn3W8lCP1b4\",\"+Nv1CrRI5NEx9JomOqRxiAY1/jKHRj62NcfhsdGcPi+cVdpm3Xh9/apT26Ta6L8r10DWGpXom+J4guVQKqChqk4hPIxEsjQO34hkgdTvmQSCjnq0QmrHPtrTTex0C/+7qQV2BQtyBXvaFdAApitMjh03hlG7ruvhO3zOPlDo6A1wmm4MXreFZ+lXOZCifUbisMqB0D7jA9qz5aHBR7RHp6cmlWIekUVt8IYDGuQcKPd5Ef4WeUz0gXe15DOW6a2jvpa82+VPnDOlxSoVrhBhpjchFt7O7/MdCQXpso3XcAt1lM61ek3Fx1TAvNinQNIlY+i49fIVDa5/sy4XtKi170n1//NS9Zg+zJPBdb7UWdH+d2NwKCo+DjCo/Ya2/n941G7vmFnRPk8T0EOkrLAtOF0+xC0lJvG5wm/FS3mu+9BnvnaG+ClltY7nX8L8yl3yj2svku8fp0Ue8gsUU+/D+RkV/YQYKf6cwkCiVubd606TwRp/yjzEUcYaXozg0Ufny/b48vLy8vji8uzk4uQkoIe1Z4dHp8vj5enh+en5xRR9g1IVLS5+3C6gwW1Fu6ZIpQk=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"ca1-7S7R/DmhuFMhLClHlp+MyNai0Pk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "71159ddc-6d93-4b46-8f8e-aa3c609e4fd4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:14.149Z", + "time": 255, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 255 + } + }, + { + "_id": "4493130f860e0b9e553ac53b515d3542", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow5 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-qBpbruiB0bXLR2bVIOVJZfGP2Ns\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "520f95e7-d181-49d4-a402-cc4504007ae7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:14.412Z", + "time": 221, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 221 + } + }, + { + "_id": "186edfd2d4c88080641ac31e89f8e6a3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-XsXcKA404baF7YrgvvPTn0WEFxU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6318266b-0f57-49b5-abfb-460b35bce82d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:14.638Z", + "time": 202, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 202 + } + }, + { + "_id": "0778b875047c9c823bc46dddd54eaec7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow6 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-cWpDDMk+B3q5+OhjV2f+W63MX48\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4a58e4d8-eb13-4748-b3a7-fc84735de1b0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:28:14.848Z", + "time": 198, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 198 + } + }, + { + "_id": "e263fe010536546216aea608995fdf13", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-BM6tyrCqwTf8KQ7UX36cyRNgfrA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:28:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a43a5b40-2b93-483d-a941-581e51dc7955" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:28:15.052Z", + "time": 207, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 207 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/oauth2_393036114/recording.har new file mode 100644 index 000000000..1e796496c --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:59.078Z", + "time": 85, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 85 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/openidm_3290118515/recording.har new file mode 100644 index 000000000..80409ed3d --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D_3319212161/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all-separate_use-string-arrays_read-only_no-coords_no-deps_D/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:59 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:59.177Z", + "time": 67, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 67 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:59 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-eb44e7c4-4160-40ce-8077-a85ed4703995" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:59.386Z", + "time": 60, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 60 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/am_1076162899/recording.har new file mode 100644 index 000000000..84bc2dbc8 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all_R_no-coords_no-deps_use-string-arrays_file/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:56.694Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:57 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:56.940Z", + "time": 125, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 125 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/environment_1072573434/recording.har new file mode 100644 index 000000000..dbfd8076d --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all_R_no-coords_no-deps_use-string-arrays_file/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:57 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "086f0fea-d9d0-4b24-9276-3432192c351e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:57.075Z", + "time": 67, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 67 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/iga_2664973160/recording.har new file mode 100644 index 000000000..86cbae83e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/iga_2664973160/recording.har @@ -0,0 +1,6522 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all_R_no-coords_no-deps_use-string-arrays_file/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "f64029142a38862fb58bc7ec0e44e61d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1891, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryString", + "value": "" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "1" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_queryString=&_pageSize=10000&_pagedResultsOffset=1" + }, + "response": { + "bodySize": 32720, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 32720, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"76381-8ltEtL2gfs053pZ8T8fOwI8vYaw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:57 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9f03eed0-1305-4a32-aca3-d03441d41a5d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:57.222Z", + "time": 613, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 613 + } + }, + { + "_id": "df1df35782bd7bd15c58099c61b4fdf9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/draft" + }, + "response": { + "bodySize": 3062, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3062, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1e07-860ugBStKdGjb9IQldTjrF+R7+M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "43feb7fd-beef-4ed5-b409-e8798ea7fd97" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:57.863Z", + "time": 377, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 377 + } + }, + { + "_id": "4d82ead8d2193d901867899e8d28c709", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/published" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: createNonEmployee was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-8uynBMjyUuxflpNVyORqRlXe/nU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4902d4f1-5c01-4d1c-bc74-ea5932493324" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:06:58.249Z", + "time": 339, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 339 + } + }, + { + "_id": "cd66ee21b1eed733a1d0be229523d0ea", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1854, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/deleteme/draft" + }, + "response": { + "bodySize": 1519, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1519, + "text": "[\"G0oWAMQ+U/VPV2dPkgM5LP2fXOjSZJW0AgGPMn4ogAOAijUa/P/7zRACh0SD0MgcQnnGxKWZ3nf/nZhGkzxvkuibly7aLCbRuEgohNJnw5w12X5ElEuY1F7IEUqigaSePO0IDJrviKqfnbCZZ0V5YH07g1dGy4OMH3R9GAhNx3tHDL8t7dFEDM7T4NB8PzoG70nwRe95v+bu76zuRBKVcR0nG+F6wLnuiidr7v6CwTuiW9IFGGm75ghNb37laXAX/PFhZzR67HsGM3phXCj88rKcf2rhTa6n54EZK7Fs79vL9QAOVs8C85Bs00V1WfE0ziqEn16LezLS427rAxi48MY6NEco174NlpyLzxLejsRwxbEPRwNhtDM9nfVmO/mB4/a75cyJMKZ/9wNTBAbak/bWbcOdU1u9I+2joLDxqlOChyIRlg4K73eurxJJBAZLpogmApa65NvBO6UlWdHGMXTkW6XFAU3KILmnECtcaHaST8/1/SQ9TbLTIjototM4iqLpdHrmzd1qvvJW6e1kihAYyAne+4wUMv9WnweQhOfMy0GiB3znPXA5rqcpP4yO7IdaUp1skmJGdUyzLNuUMy6qeFZyikXBZVdzmZ9gxNbMAwO9DcoGWJ1WgCXIKv1PwoNFQdrboOykPPYLfkaGeeXwIQSuiAoMGkj8hEKS3wqFMFgAzNgJjECFhCXg7UiYJ0ijib936Ma+U32/I83k20ZSUCdIiojiRkLqQDT4X5/yAmTlpyZrjZ38wPN8fXI5nz+++4Hpfwjhp7uHYnKDa89hMYF5u2swal1BpLNdf3y8vnt8nHDVPn+d4vfKcCUL1v9WpkUlJM9luiFgpFfOiTcGJyEsUDkIraQFftKOAaNuTVdgtLqCgzW3bJ/aq7vzdX1p3s4fH+efEeQK2i8vd8vz9d382eTrxQvvnFdLNA/4yfCcKfLEs5GUedNIy+ca1p5HvKHJo4jhgCaPmOQntagtrtUSD8MlCXAXwkrpbU93ehg91jS7Vr+AclfWDAPf9IJfnHJXciGmMFUrlZ9K\",\"3po9WZIaa7xy11pr7EvAXKEr8lz1nO4n4h884Yq4Hbeo9jBuFdceDdwoBDkH5g9YUTMCw2/BT0C6+uc8h7JqDE680o5T5EEGKiqjHZpjCPE8yPrnqGVDUNICTeo9zcpz6+f8O2H0HCJFQggop+l5k9F8yaHnh9/cWvNvnKR0ZxYWTOzV8BgreGHFVdoyJIOwEJH9kQ8Ptg2BYVSXRndqy8Q03Zw5dk/q6iyt67pOq7rIqixL1Mc/rpOzIk7yKI3yuMzLqpwxqI8CdPW7gotGOeAWXKsdrQb+GcuS/DBxU+jgpbt2cIe4+T9dUgC5kFvcqKwGGbayHOJGGqREY1/oLohMGy7HFteT/olbBQMdgAIyieQ5UjLWonyAIpPJVGYlTfNeBCZAcQtt5kn816I4zQkyyEcw3fVqKVKzFallqSw9LyvLhlAD/PjxqCj89vWjQwNpeefBsBvL8lxvRwo=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"164b-XUVHapOOIzzW3pTlWTSZaigsJMk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0c6736a5-3aab-4624-98c1-550d7206e137" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:58.598Z", + "time": 372, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 372 + } + }, + { + "_id": "93f08993f6ce17695b342fab9ef98b3c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1858, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/deleteme/published" + }, + "response": { + "bodySize": 54, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 54, + "text": "{\"message\":\"Workflow with id: deleteme was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "54" + }, + { + "name": "etag", + "value": "W/\"36-450e5zWZWKv8WC1TrweSqvUKHB0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "43474788-6450-4123-b665-943466ed0024" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:06:58.978Z", + "time": 331, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 331 + } + }, + { + "_id": "dd4666bbe759dfe89b2755bce7090364", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1870, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/draft" + }, + "response": { + "bodySize": 5369, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5369, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c2-6XxwOcup/p3s2d08P61h1X+8kcA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "52baa938-e9d6-4feb-a9a2-36f98566894a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:59.316Z", + "time": 329, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 329 + } + }, + { + "_id": "7464f928ce1a61e6481e05f5de3a3701", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1874, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/published" + }, + "response": { + "bodySize": 5372, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5372, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c6-RnSjWjBhrRiZFIr1kDdPqG4Z+Cc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8b918bed-e06a-4c09-a98a-ec84844c804a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:59.652Z", + "time": 383, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 383 + } + }, + { + "_id": "c2722375c9c9b718b6f19547227327f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/draft" + }, + "response": { + "bodySize": 4421, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4421, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3a9e-n3X0PT2bNM3XH2IHDXx8oEGM5sM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "57f2a491-bf92-4393-8d1b-5d3c6b16f3e0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:00.046Z", + "time": 371, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 371 + } + }, + { + "_id": "402830a399173e74438a37f7d1e98a5f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/published" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhInternalRoleEntitlementGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-26XmFz97QUwl4jKEa6hIqcUFAJ0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "da77318a-ff5b-4a75-b5de-29a950e16e2a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:00.424Z", + "time": 361, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 361 + } + }, + { + "_id": "f5be5a994a5fca0cf6e0702f8cf142e0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/draft" + }, + "response": { + "bodySize": 3046, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3046, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d7d-GMgwZu+SI6WuoBMw+yuS0DQl3DE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c61fdf67-8e8d-4124-8744-ec3652d520e2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:00.793Z", + "time": 368, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 368 + } + }, + { + "_id": "5d5ca9d0404897417efbe04304a84ead", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/published" + }, + "response": { + "bodySize": 3046, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3046, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d81-nVTpJgk3xoLfhymbDDptyXcORCM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "82d1d5b0-8b45-4c9b-8dd0-ef4b1a0af9b1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:01.175Z", + "time": 372, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 372 + } + }, + { + "_id": "b74ab2fa7c61f94d8bbb9a49203978d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-J5idz6dFGoETw6pxxTHAwhsl8TI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "53103b03-530d-448a-a698-0c4bcb0e3450" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:01.555Z", + "time": 406, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 406 + } + }, + { + "_id": "e2dde589f8c1fe9b33ab2bdde047c5d1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4226, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4226, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-moU6e5rau5hrulM9d0Bk/14tTIA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a9cb98c7-88a0-449e-ae1a-4574732fd34b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:01.968Z", + "time": 389, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 389 + } + }, + { + "_id": "ca2db1d5d39fddcf12ae43089d0bdc84", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-ku5HVO0Uf9LiBn16p9FZpGZhVN0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "92f1e0a0-3e15-4687-a2ad-64f98d2b5ff5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:02.371Z", + "time": 474, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 474 + } + }, + { + "_id": "d426bd32e5f14fb65961e4ec48cbafe5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-Q/4wAdkfpsCvESzA9rPrW7K+MFA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b272aee3-30da-49d7-bc67-1e80616b37ad" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:02.861Z", + "time": 387, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 387 + } + }, + { + "_id": "b06958c0cdb27bb3b80f440048fad0fd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-C1gIMwgWso5RMs/mDYxZ3Eg3qMs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d7267993-ee97-4fda-8ffb-b786a4993117" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:03.262Z", + "time": 381, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 381 + } + }, + { + "_id": "f5fa4d5ce30724b18d7d2e8d4c52eb06", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-CLVYYs3RN761UmHxFEXkdG4hj8g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7db0cae3-6871-4c37-9293-713dbd47f980" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:03.650Z", + "time": 341, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 341 + } + }, + { + "_id": "6f657162bf5a8edafea4d88a39373467", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-WLmWTZaYEA7jvXMJoJw0qRcgctc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "31a5eb86-f1a4-4321-8fe9-adb5d51e3de7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:04.001Z", + "time": 338, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 338 + } + }, + { + "_id": "da7b8f1aee9db97902eded34fb2e307f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-yXDtYIPYo2x8mSLCuW2pE050I2g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "01392ec2-9bd7-4320-95ff-bbe64d35f524" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:04.346Z", + "time": 376, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 376 + } + }, + { + "_id": "dac080469cc601d406e477766a738873", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/draft" + }, + "response": { + "bodySize": 4477, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4477, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"40e1-Q+rV0bnCwnVt71NZXImwcbhubjk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4cdb643b-ac19-4435-9009-586a5f0fca5f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:04.731Z", + "time": 340, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 340 + } + }, + { + "_id": "9df4e0417186278cfcdb33eb6f85aafe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1882, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/published" + }, + "response": { + "bodySize": 78, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 78, + "text": "{\"message\":\"Workflow with id: wfEntitlementExampleIsPrivileged was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "78" + }, + { + "name": "etag", + "value": "W/\"4e-gIij0YPtc13KQvXr1PGQiqJiRfc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7344ea01-f517-474c-afc8-4411809ce2e6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:05.079Z", + "time": 319, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 319 + } + }, + { + "_id": "e4daad725312870cb4556b1eb64158eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationGrant/draft" + }, + "response": { + "bodySize": 67, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 67, + "text": "{\"message\":\"Workflow with id: BasicApplicationGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "67" + }, + { + "name": "etag", + "value": "W/\"43-F8qvq/zX6qiwF6tRyYDPCaulCvU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5b4fc6c1-0087-4579-a153-33718f744cc2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:05.406Z", + "time": 319, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 319 + } + }, + { + "_id": "eb694d0c99612d07dd43775cfc370349", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1871, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationGrant/published" + }, + "response": { + "bodySize": 4242, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4242, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"34ef-x73AKiWo/KthayIK5Zk8Ek0P408\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "622ba6db-fea5-478e-a6a5-5b9f4e0a465e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:05.731Z", + "time": 322, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 322 + } + }, + { + "_id": "3c7fc4bb19e853876e6b385be8c5cdc7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1868, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationRemove/draft" + }, + "response": { + "bodySize": 68, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 68, + "text": "{\"message\":\"Workflow with id: BasicApplicationRemove was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "68" + }, + { + "name": "etag", + "value": "W/\"44-BYpTw5p7E/WXwfHffjkqNwJb2CQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "867e7bc1-025b-4336-abff-52013b31f898" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:06.062Z", + "time": 330, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 330 + } + }, + { + "_id": "c18e19d77e0bc2cf312da68a0a71a036", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1872, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicApplicationRemove/published" + }, + "response": { + "bodySize": 3638, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3638, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"26cf-uQIOhsE+LzEsfgyNUZ53pbF6JYA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cda3ac23-e9d6-47a3-83ae-caf2ed15e063" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:06.397Z", + "time": 329, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 329 + } + }, + { + "_id": "3351f3b1c0a42a51b336a49f38e8d3d7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 67, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 67, + "text": "{\"message\":\"Workflow with id: BasicEntitlementGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "67" + }, + { + "name": "etag", + "value": "W/\"43-BGgjCYjgefvujguYuacd8EdX2io\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a1281c31-ffd0-4385-8b15-6fafd7a660c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:06.733Z", + "time": 362, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 362 + } + }, + { + "_id": "593d5a282e3c7e6ccae3e365d5ed9301", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1871, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementGrant/published" + }, + "response": { + "bodySize": 4466, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4466, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3aac-weJKeqLqqxM61Dcrwa34/4/W1LI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c7638d29-776e-4759-b2e8-6dde85dfd230" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:07.103Z", + "time": 337, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 337 + } + }, + { + "_id": "bd01cf01ccb65aa74af049639657f501", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1868, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementRemove/draft" + }, + "response": { + "bodySize": 68, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 68, + "text": "{\"message\":\"Workflow with id: BasicEntitlementRemove was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "68" + }, + { + "name": "etag", + "value": "W/\"44-Vc3pkZTz8c0Xd6pGfgNMPY+zDUI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2bb6ec7f-1d6a-46e2-9719-6926448e9069" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:07.449Z", + "time": 377, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 377 + } + }, + { + "_id": "e94fd515d9f9cfaae66ab7a0ee7e07e6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1872, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicEntitlementRemove/published" + }, + "response": { + "bodySize": 3694, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3694, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"282b-iYsS/Go+9msu/LUQpaayE/9Ut+k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7eb14ae8-d2ae-4e87-8b72-ea3460da815b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:07.835Z", + "time": 381, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 381 + } + }, + { + "_id": "3e911fc4a2e11dc2ba18618e0df565f3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleGrant/draft" + }, + "response": { + "bodySize": 60, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 60, + "text": "{\"message\":\"Workflow with id: BasicRoleGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "60" + }, + { + "name": "etag", + "value": "W/\"3c-c2gs6Qtccb++ZtDppvn7PuYrx3g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c07364a4-08a9-4174-9e38-8fc3163c0610" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:08.223Z", + "time": 328, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 328 + } + }, + { + "_id": "587f1ef0e5c71c20773eeae0ae0bd2e0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1864, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleGrant/published" + }, + "response": { + "bodySize": 4090, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4090, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"337a-3bXRMjWEhkZ8exitskZip+CI1Wc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a7d2cfe1-dd09-4181-966b-18dab8f2cc29" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:08.556Z", + "time": 345, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 345 + } + }, + { + "_id": "0e1c1c1e83fc7d9078aff3b9e118ff87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1861, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleRemove/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: BasicRoleRemove was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "61" + }, + { + "name": "etag", + "value": "W/\"3d-vFrHfV3ZCBt2FGZNHbXP1t0bnmk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ca1c100f-483c-47cf-a1e6-5592e23a0c72" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:08.909Z", + "time": 367, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 367 + } + }, + { + "_id": "5bb06c031814513a8d7cea75320669ec", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1865, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicRoleRemove/published" + }, + "response": { + "bodySize": 3809, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3809, + "text": "[\"G2IpAOTP11lfv+/eFkGi2KY0MWxLuD22Ecp1ZTLCenaUNRInyQSG8/+/1qswEe4bEaHjiFyMjnAXXmBnAgshWggA3HtnZmFCsxNaCLECoJZd6upqPKOrM/9E9fgeX1lhbG0MxZrO8R83wgnEjPavfUGjUeAnFUy+dhWtae+OhByt2lOgPldh/Y84l4G1qwie+Hj7fQ/ROFvwdDDyzwBF5V6gcB5+H4KXG1uCgjqQZwGOdC/a/BLkGM8HQoHHg39JMM4aWyLHI5hP2Aa/fqGqQBwfPR1RjDmGSIeA4t9LE+QvPPi7Pqpqq8LPm1E/L8aDvDfo90aN8T7GvgC2KvwsX2WSgnzVs8QFLZ3iJtKhXLFXxbNR2LqqOLo65q6EddfzL/PbLdYygeKw9lCzH7uifJj3hrue6g+w4Vld+8f7+/Xyj/nDtxlqTZM8o7zb6WHzUN+Z351uzXPsGTmqPDpPpo2MRnHBy5ptR4G8tpO0AEfl4bj9n2ZDMRpbBpjBH0KgqPeJiv7RJZpSpbnb750Nae5sYcrUlOrxvAfeY8+/nkQOEj/PtxI5XBoOl6Y9LQepvDV5mIGtqyqsZApocc2fwcJqOiXeVbR8seTh7Vv4mP1v9lD7Bsg3IfGSV7+MOq0D+VQiXGcyMzG6Du5EeqcyBbTIkPb2LWH8ZE8k72NTAusRIRWW2kFaOKtpnQp816bdaiNHE+ang6cQGOxy0dfUcESAUkBxYc8MRbkNR0/PlMc1y1UIpsygwPEMAv554f2DMMJzmuaBIx3JxqwhLUZpuiC8zEaBkj3hY7yTSGNTWqgU3ro+/DGG98Zq8hRrJscimx/K5mcUPY5aRUJxoVAdZ+17tfQCdypSC/U+0etW76rbvxpmV8PsqpNlWbvdTqJbbJab6I0tW21sGo50OhjfktwF+R/aBGTeHV73K81PB+NJC97f4OFzCEf7bxoQmNpweJQw9LlnvcFETfRoRNRF+bQ7wmBCRwFjTchXhEXGK2D0NSGoVbSztOxg66pqHjgOTq0ocA9JV9D3hgIrV5bkE2ML15KV/DQS21NppT0qfz7MNpjBSU/eMykp/qG8UbuKQqs9jUy9Vl5omCXcMSkptpjRLN6nK5Spak9rUsFZwHJlpZ5iBhTkcrmHylhaRNoXJUIhwQppoz/j2YZpCmtSup7rgts=\",\"PVMecUbWv8s=\",\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"2963-qRtsb7EnP1yZ5CbyZSjSdDfabkw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b5bdf278-3b10-4dbb-bfdf-034a4ea0a254" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:09.283Z", + "time": 335, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 335 + } + }, + { + "_id": "ff5e9c48047b6c2ca986446fd1480d99", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicViolationProcess/draft" + }, + "response": { + "bodySize": 67, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 67, + "text": "{\"message\":\"Workflow with id: BasicViolationProcess was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "67" + }, + { + "name": "etag", + "value": "W/\"43-2MamI9l8smDlZ/31UfS/2zQ+i3k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b207a61d-fa81-4fe3-84b6-ff9ee5925960" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:09.630Z", + "time": 334, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 334 + } + }, + { + "_id": "425bb0166356b269d825211dda1576ff", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1871, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/BasicViolationProcess/published" + }, + "response": { + "bodySize": 3126, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3126, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"231a-sBYFKKavx1PoYaKyftccuXhPJsg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e46726c2-6785-4d84-9056-d315a467d8e4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:09.970Z", + "time": 374, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 374 + } + }, + { + "_id": "a253c6f6a954d76b7d72791ec032165d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateEntitlement/draft" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: CreateEntitlement was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-yKyt7gzKt0BvfdZKP0hwrUGvAhs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8936c15f-9711-4b0d-b8a8-44e345ad5d5e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:10.356Z", + "time": 362, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 362 + } + }, + { + "_id": "6aa5555cb9fe297ca87fb5945382b074", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateEntitlement/published" + }, + "response": { + "bodySize": 2934, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2934, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d35-3kq2ii1zyqxUcu7vO9IdxPOSP/s\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "be47bfd7-477e-4049-80b5-d5bccb497d42" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:10.724Z", + "time": 374, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 374 + } + }, + { + "_id": "49c30b75d8d7ea56d1695d88022ad5ae", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1856, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateUser/draft" + }, + "response": { + "bodySize": 56, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 56, + "text": "{\"message\":\"Workflow with id: CreateUser was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "56" + }, + { + "name": "etag", + "value": "W/\"38-eZ4CihDWaDX97anlY4aPEAm9+c4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e853bb39-55eb-49a0-9e93-37a2faefa895" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:11.105Z", + "time": 367, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 367 + } + }, + { + "_id": "8982485061a4cb50a88da3958a8527d4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/CreateUser/published" + }, + "response": { + "bodySize": 3070, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3070, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1e43-XB4ZancGCWAWoAtSLurLwckOvJM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9740e642-11ce-44bf-97e1-359917dc0020" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:11.477Z", + "time": 386, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 386 + } + }, + { + "_id": "867661a649878fd861d92a9ae96bff62", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1856, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/DeleteUser/draft" + }, + "response": { + "bodySize": 56, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 56, + "text": "{\"message\":\"Workflow with id: DeleteUser was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "56" + }, + { + "name": "etag", + "value": "W/\"38-abroQZOzPg5bfnUz9PQw1cGNtbY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b7c2e9d5-8291-494f-9f18-d777ec6bcdf7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:11.875Z", + "time": 382, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 382 + } + }, + { + "_id": "f2bac77cc135f34f96a1dbad59a92472", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/DeleteUser/published" + }, + "response": { + "bodySize": 2779, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2779, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1ba5-Aamp4DyrkD8BP+cQSw5VigaSoac\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b6f21999-e4db-4d8b-9db5-c183f74e6eb5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:12.264Z", + "time": 383, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 383 + } + }, + { + "_id": "a2af9d8e4f1017657f463102ab9991c0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyEntitlement/draft" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: ModifyEntitlement was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-8+wJxGUcoto/YwmgtxTPbHUzQXI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "548ea702-bc8e-4698-9780-ff243e36852b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:12.658Z", + "time": 345, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 345 + } + }, + { + "_id": "0f35899276c5f7f9b773b80a825384f4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyEntitlement/published" + }, + "response": { + "bodySize": 4122, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4122, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3317-AigvO5OBFsDn95A4j626UgcuO4I\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8960ec40-2c7c-4467-94ac-bdbaea79a57b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:13.008Z", + "time": 394, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 394 + } + }, + { + "_id": "358635fe77aa78203f678f1fda3395c6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1856, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyUser/draft" + }, + "response": { + "bodySize": 56, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 56, + "text": "{\"message\":\"Workflow with id: ModifyUser was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "56" + }, + { + "name": "etag", + "value": "W/\"38-fD3hOO2hRL9unTHHFdLHeCYbpQk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6b6d827d-63b4-4bb3-be00-07a2a053087a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:13.411Z", + "time": 350, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 350 + } + }, + { + "_id": "532e48483df4c2f98caf08e52522e65a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1860, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/ModifyUser/published" + }, + "response": { + "bodySize": 2947, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2947, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d93-NnoK86M23LOunYWMwtJ7Tk0Ad8g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3a7dbdb4-fc10-452c-b804-e0d2ce61347b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:13.771Z", + "time": 363, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 363 + } + }, + { + "_id": "909e2175c4ff06b58318849cb58b90b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/draft" + }, + "response": { + "bodySize": 81, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 81, + "text": "{\"message\":\"Workflow with id: phhBirthrightRolesRequiringApproval was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "81" + }, + { + "name": "etag", + "value": "W/\"51-QRezKwCScpSwPmN+tbYjEg+0M00\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ec693838-7bde-41f5-b807-29a3e2981b19" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:14.994Z", + "time": 240, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 240 + } + }, + { + "_id": "8a4e20cfa54c0ad3da9324f1e734b0c3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1885, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/published" + }, + "response": { + "bodySize": 3190, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3190, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"22c7-Fxiv6DPSM2Tzey4E9sFb7V2q5oA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d1fe4486-4999-4691-b32b-96ddc94bce26" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:15.257Z", + "time": 206, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 206 + } + }, + { + "_id": "ad1f659d42778f56b814b17061da4a7f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/draft" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhDelegatedUserDisableWorkflow was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-XXvemAx7DjeH9f0KAf4KNtJxYvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cb73d486-38ff-4686-a713-17bd92c5b6f5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:15.471Z", + "time": 233, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 233 + } + }, + { + "_id": "fc5fb53194142dd5b7a7934978ad1a87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/published" + }, + "response": { + "bodySize": 5980, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5980, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"47e1-6wVqvyX+RcCEUSF6iXcyh3XQNw4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "68b202c8-3222-4ca7-b623-0cc6d1ea2cfa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:15.721Z", + "time": 194, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 194 + } + }, + { + "_id": "d60d691416c293d72aed6e6869ed2aaf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1858, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/draft" + }, + "response": { + "bodySize": 58, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 58, + "text": "{\"message\":\"Workflow with id: phhNeDisable was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "58" + }, + { + "name": "etag", + "value": "W/\"3a-P5saSw0lCkTOzjQ3s7XPpznTdHM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9a7aee65-f576-4594-a603-8df0f3a74f06" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:15.923Z", + "time": 196, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 196 + } + }, + { + "_id": "21730d324ecc71d802e367d76e2332af", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/published" + }, + "response": { + "bodySize": 1647, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1647, + "text": "[\"G6AMAGQz1Xp9MfhYThjZKY0Z7bUt1blWmPEwIiTzlga9AJmun59rEa/9UkRKfPJxb7chIn87lYR6WoQsZokUTGrD3EhwjzbTi0oAXP+AZ4wBLe42mxW9jupvE6FB9luiNB4wHYRn7TqFXq1YeKL9JHclZuapx5/6++OO0A4+KRlcC92hXRrUQjtF+9+zeVT29797/XpweTmE4fjwvD+5vPXj/J+zD/CaEo2+EPyWq/SkaLCYklWFoPmP9ewzMj2U3wrtLEsDIvZDi0UqocFcS5/9qQuZCf3cAi3XlKYbgwgORYvDeIShd0aLiz3HsAdfQH35L5UkkkJVEj1tpFjCrxKEZm5/DQn0nsH3BdrVixzD3sKx4zsvS74Ngw7m9T+wHan86SX620TazK+YSa/yIUAneN92pNLM1jHM5leOHRd5hGfHAIsFvKPiFn2uAiXDEDm4N9UxgG6D69v/oYPrJPCysG2FfGhmcfSLbafWe+5pwd2gixns38/0IcyvtOWR+CnpzmqJo7YxSEy55vQopZJ8CE0+yOGGVw8Ki6okC4cGHDo0fD7HAH1mzYnalMfGYdd1QauMPL4qMTOMo1Kg6zp5HdnMX700gg+vLTgsJH9gUQng+l8qyWPspT3l8vPSqiSwAV70XoC98bdK8vizF79V6GJVC+BwTdvsbUyFxKGFmeh7tOsYgL6Bw5lHg2AfZg5nRtE9hkgpqEMLDquSrPyWzBjviP91DWWz9TGZdQwOHQNMRcLoLdWailYCcEyOgOb4FGusq5I4NMXBKmABU1Aq4AQTWhjb/1hjCpCD0+BF/CNYTFA7+O9GzBwHaHSltzq3+ClXLvAKlnNAdXjWbIcsb3y/GYSjViURyARbndpd1U1DUQEcbhW4zKFt3svadQyGQz6rZYQAug72wWH9AWK+8v86NY8cHWBPn0ejAQBgQlL8A23+IOVxJGkjD7lxeH0J0Ai7r12iFqw7hTpPLFzfxbAyreIX3HvhxuEqw+6Fs2DJkSCFzQkHD7lRc8OxCjf5aYlDh4Ym8LLOGiNBT85TPYn3W8lCP1b4\",\"+Nv1CrRI5NEx9JomOqRxiAY1/jKHRj62NcfhsdGcPi+cVdpm3Xh9/apT26Ta6L8r10DWGpXom+J4guVQKqChqk4hPIxEsjQO34hkgdTvmQSCjnq0QmrHPtrTTex0C/+7qQV2BQtyBXvaFdAApitMjh03hlG7ruvhO3zOPlDo6A1wmm4MXreFZ+lXOZCifUbisMqB0D7jA9qz5aHBR7RHp6cmlWIekUVt8IYDGuQcKPd5Ef4WeUz0gXe15DOW6a2jvpa82+VPnDOlxSoVrhBhpjchFt7O7/MdCQXpso3XcAt1lM61ek3Fx1TAvNinQNIlY+i49fIVDa5/sy4XtKi170n1//NS9Zg+zJPBdb7UWdH+d2NwKCo+DjCo/Ya2/n941G7vmFnRPk8T0EOkrLAtOF0+xC0lJvG5wm/FS3mu+9BnvnaG+ClltY7nX8L8yl3yj2svku8fp0Ue8gsUU+/D+RkV/YQYKf6cwkCiVubd606TwRp/yjzEUcYaXozg0Ufny/b48vLy8vji8uzk4uQkoIe1Z4dHp8vj5enh+en5xRR9g1IVLS5+3C6gwW1Fu6ZIpQk=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"ca1-7S7R/DmhuFMhLClHlp+MyNai0Pk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2959adac-0648-461f-8db5-92d910b70561" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:16.128Z", + "time": 200, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 200 + } + }, + { + "_id": "4493130f860e0b9e553ac53b515d3542", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow5 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-qBpbruiB0bXLR2bVIOVJZfGP2Ns\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b5c3e168-6ed5-448c-8ad8-630763ab8385" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:17.678Z", + "time": 214, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 214 + } + }, + { + "_id": "186edfd2d4c88080641ac31e89f8e6a3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-XsXcKA404baF7YrgvvPTn0WEFxU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4ac3b2e7-ab0e-41cd-9a2f-3cc8c17ada3f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:17.898Z", + "time": 406, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 406 + } + }, + { + "_id": "0778b875047c9c823bc46dddd54eaec7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow6 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-cWpDDMk+B3q5+OhjV2f+W63MX48\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c13644b4-427a-4731-ac87-129f9f3e5bcc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:07:18.315Z", + "time": 200, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 200 + } + }, + { + "_id": "e263fe010536546216aea608995fdf13", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-BM6tyrCqwTf8KQ7UX36cyRNgfrA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:07:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "50a6fe50-af06-4a50-8e9b-3fa8108c76af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:07:18.520Z", + "time": 376, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 376 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/oauth2_393036114/recording.har new file mode 100644 index 000000000..77f2e43e6 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all_R_no-coords_no-deps_use-string-arrays_file/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:56.836Z", + "time": 92, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 92 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/openidm_3290118515/recording.har new file mode 100644 index 000000000..d09a392f6 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_all_R_no-coords_no-deps_use-string-arrays_file_1619363988/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_all_R_no-coords_no-deps_use-string-arrays_file/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:56 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:56.938Z", + "time": 67, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 67 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:06:57 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-be1783fa-405f-43c1-ba2c-e7bc6f79dd68" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:06:57.151Z", + "time": 63, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 63 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/am_1076162899/recording.har new file mode 100644 index 000000000..ca679f4a6 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_no-metadata_a_directory/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:04:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:04:58.910Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:04:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:04:59.139Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/environment_1072573434/recording.har new file mode 100644 index 000000000..a9597f10b --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_no-metadata_a_directory/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:04:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9475e5d0-99f0-467f-afc9-dcec9935656d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:04:59.266Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/iga_2664973160/recording.har new file mode 100644 index 000000000..9c8cccc01 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/iga_2664973160/recording.har @@ -0,0 +1,9037 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_no-metadata_a_directory/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "f64029142a38862fb58bc7ec0e44e61d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1891, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryString", + "value": "" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "1" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_queryString=&_pageSize=10000&_pagedResultsOffset=1" + }, + "response": { + "bodySize": 32727, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 32727, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"76381-8ltEtL2gfs053pZ8T8fOwI8vYaw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "778f5052-e575-47e8-b72f-126cba16dce7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:04:59.403Z", + "time": 835, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 835 + } + }, + { + "_id": "df1df35782bd7bd15c58099c61b4fdf9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/draft" + }, + "response": { + "bodySize": 3066, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3066, + "text": "[\"GwYeAORvr1pfv2/fFWSHSC6VjG+rt/RzuUrGweJJYSOBFpATj0dHa6YRLysNga2wlRVuZvbE5VK6pPDAtDu5PDHKAoCv8ekX2XlAWVlZIWs21Iq/VhsVQBILTAy5tBc0GgXeavxDo6/Oruumcmci5GhVTSjw9WV1vcKyfk0l7rm/O000zqaN54ZQ4M3eTxKMs8aWyPH25PruuPlCVYE4HjydUMw4hkhNQPH/RTv51Qy+1ydV7VR4uJ5P8mIxzcfTyXiupfEy9RDYqfAgX2FSA/JTxxIXtPQUt5EaudJTJo6NwrZVxdG1MXcSUm7WH9evd6hlFRT3rAfNXnZF+Swfz45jNZlix1nN/uX375tvf60/Ps1gPF2qpZ7PiUbY3err/cXp3FyzPSNHlUfnA4oLmrB+ajyFUAfpom+J4wZmm6NAqzqFtAAAJ+XhHv2ebClGY8sAK3ijB4ToOlUEt8xMqbLc1bWzIcudLUyZmVIdljjwO3i62/x1MA7s3XrHOFw6DpeudyNFXaCS+WpPn8WDVXQN5G+k7XpJDzuOdCIbs3MMFYIpbU021ktqF01hcmVcJFl/mS4Haew4eqKySGFsUomfe7g2VpOnw5tjweaRs/kZxZijVpFKfLWWHuGNipS43T29Ssb90aQ/G/Rng/5wMBj0er00ug/bb9vojS2THnYdR3pqjM+JecFKgTzNyQ/KI3Ldp14/NcaTNo4/4P/bX1s2VIur92HXdWZ7qOMObcng2R8YTrxhH+qEnFliUA35CauOPA1G3xL6YLh2lo48tq2q7pZjoGyKAp+tpwk6LwqsXFmST40tXCKDnbexpY6eSOzdSCvtSfmlGZvBCtbfOG9aUvxLeaOOFYWkd5OY7DTsg4YVYd60pJgwo1m6ayqUqVpPG1LBWViBbatKmk/0Z7eWubXl2/GHQ0tbwo1VNqfMO4aEjMGVGq782a+Tdn0NX0gogrAKcQVxMQFr750HT0obWwq4H3g08R6MBolSUcq00poiecacBGqZxLi1dKPOlVMaVhk2UobHTNtAPnXHH5THAsoBAJD1+9AgeQaWHqEN5KHfz7hKm0aWCw1bxyoJ2zhvNZ29EJDkhzaQZ7zw7VyTk3P42ZI/f1de1SH2MSYSsw/kgatNl0KeNpD/qmoqC5/QVtrDha5XIPG1ixY5lBak8j4=\",\"GJ0gJJXYy0AVgFx22ZLVn0agWpkqp7mOTp9hBRe6LgAAi5nkFSDxb6pypxZlcIq0NCeyP9XrB4O90OWZRM7UPzrBoGutTHXZo6PTZwES/3Wt11XauLGTbCE9l1RKK6XdB/JW1STkisKTWWN9hwi4dOed3c11TNfEFIlSK7OqJA+//w6np0oPnoreRWGmFm3vmi87MJGRVB+gcF5PLDa0Jsyv8VjMUD9KRapmLv7wOykvtKYN2ejonpRO8lHCDaOVHJ0+p3kOK3ZQP2rymjrwcukPpjym31t1rAh2WvD3KA3FgpROSp9yK5eRqGDUjottTonwVs9M/9gSOUgMZLVE/kBQAoz4rFoNZ6CmtjKRiGryfqAhSKQwzoIrUlrMs5HGQ8pYSSKjknYijGtPX74YrODCQlSxDUwAQ/RhjANLFsIEsFbWhzSz/l5NAUkg3Qu8jbQFzAcrYNZFAOQ9kWY3ycWTiGuAVdRnk5LQKWEF0bfZ6jNVgVTgxVMli+KQ4ytEL5MdsOkJmADWNlpFynmhtHbpvn/b7hjPjKuIzkQD26bdQhPXGjFyd6okU6c4oA0ddnBH7SOwh76BeAYI+yohHsRjPnANiFRu5z8/DMSk/FespieEw/sdIcRHlwlgmqwhzTg4IxYHHQVlwZ/hJ0sGuOa5Wk4HE0XLgV48or+Tr00H4T8Lr+8pf/i5F4csPu3vVKRHdb5Wx+NxsFjOp4t8gdZ5KMvWsJPGRcRq9zZIZYdV7vCsuh2QovH1JINtEP5QV2O8CWi8OZmKSgoQnbRZ1njrqiE4UQrwoYDgOBjGecODaUDZM/TLi8ACbYDepL29J6vOULtTe0kcq8R7GDrmVFpp3auk7xnDyPL5+BYMA4Q9mOZlRsRglNq38BAgy2BDSkMZEvjCxuC3PPU+OAG1k0f+Vcg3HYD6tGthqdHpWnxDwt8m3oP66dpAPmM92Dc0y+BDISzOBFCwHQADSKHuSuRGZW+xrGSJRUO9oxVJsrxPyttA0Q+9GFJ2maYyMWEZQ3KCxM2gR10UZTQmmpHVe3kOJgR78v/olgMLuWvIyABjgMrGnpF+CGBv5a2pInkm4M7oK/p5xe7g6vfUcAV37K6Dat6mSMybujXqZih6+gMGPYDLGZ6GHLA6CAnQP8OpClRXa5BlsCOrbITNTKHL4SCTaJPtIb1FQaV2/VoG94vWvsQmvAhMyEA56ipXkdYr1wvNEokKNZfIFbQYsdecFovJSNNsVhyPj7iXbXTXJfn5/pI4uRiYLPABEw1CdKuVfxgkSK0CqDa6yKrBqc8t9HHwEkC4gY10CokCJH4+KNFeuHEIBTMI8wwDkHgNuYicqN1kh0RgjemErcWpNrrrrPuCbrtZxs/QJ61Yq3QppXareSrRaz5DVOHyJ0J1F90o29teiA7l2MTYstCczmJntztH2BXA2oA+EXVKdsKELwd27iATzi6GAgqzONAOXPxQEZYbYIYfz0ztbKSnCMinEGEW04BjMFVhV8jLNrpga8Gl1SDDzVfwEgAfMN8phRQuDHW25N0cTUEHDAB4/iYAXDShLLmDElFuk1uOb2SX6Pyr0zQPAg2+/nWOhGa6pLMX5/iEYjjieEYxHA443kusiXGWnol4KmKGgfnqVksQ5/CHz2w5+byz6QQ6XNEcW/N6IgVG9a2VFg75f2PM7ERTyFU1dlJsN4xfBOdkgt+oSDMtYpLmHexMTdtGWRSo1TkJPZwcQZKDw64GHPNx9TabjzonYubSsosLPqFYjhbpVzIdp4PhdDaaUqm9dDq8ZuM6jEYfVWvBY91wPNv1cDhS/Q8Pcz7Ubf2JG30lFGdOxho6F0tas+v8427agAK1Vw==\",\"RUSOdRvVsSIU0bfUAQ==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1e07-860ugBStKdGjb9IQldTjrF+R7+M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "00a207b0-2c2e-45e1-8c0d-30d193792e4b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:00.268Z", + "time": 720, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 720 + } + }, + { + "_id": "4d82ead8d2193d901867899e8d28c709", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/published" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: createNonEmployee was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-8uynBMjyUuxflpNVyORqRlXe/nU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "252f877a-9317-4580-8d62-23c2deb530b1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:00.997Z", + "time": 347, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 347 + } + }, + { + "_id": "a5d0fd5d852f1ca18167727df44779de", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/createNonEmployee\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FcreateNonEmployee%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e0890c90-f643-4cf3-a999-bb8835ccd7a9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.355Z", + "time": 136, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 136 + } + }, + { + "_id": "01ec95a729c1c9ca93f442c66fc8462b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1913, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "action.name co \"\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_queryFilter=action.name%20co%20%22%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 1367, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1367, + "text": "[\"GyIPAMS+peKfrp69BhyaGqckv5Tq8SDxsDRRC2ClaPj/j73+o5Si9ZtGpFeu+t33K3CZOOAOHO7MBlxJa9wZUZFMZTgvIiEtkInxV50oJmsM9r8TYyT/CNgTq1sIFplS/muLb8O8vZdgMH6fsCcOFyUsDjdLMBwuqitJkfTeNApD/rgTLLY4jJRydGGJFGa7v1+f5k4HrfkuwTCcwpqwJ8I0Z4qwJ7ZIueawrdlNK5+tp/WecpzWByyeieJ1/P7trsOUP4JheneKj1WdKCfpo59h4VBKYSfWLd9RO/1o/FRX5D5E755uJjiOmULmJp+6XFeI7IETBkxXMtCB7OVjnr+XdH8/5RH2xB4pTB8+HiMUhpLNgr6T+KYbrR5HfHoG9qGzt0oo5iBiSnbEAMosiMetPqX355GJysOH+M3q6QP5b9ZMD4rSx1qZZvp+ZMRNGoBIqpIzH70+Z2y+hCml3MqtMEwDchFYHAqFwU85Q7vnwhr4nVK+ZNCcy5utGWjNU/74ez6f45kogmF55q3sHfm0DEYQGH7ZpjQywtNB648qEPo5UsqA0yYPi2LKMvzLI30pglbV0HW87uqKm2Aq3ksyPHS+l8EZP4QaDIubZj1Z/FWmlK/DtoAh0beARRUi0D1/89Xr3ynlPxJFlBtDyi4/E6we2g/idKLKGSNdENyLquGmdpJ3Xd1zGXQIqlGVVAoM90gHrGJYKDvvsoM9odaH/9xlgoUSquZCc2F+V9oKZUV7bXX7L5ijwA8fQFkjrNTXVrZNJZQ0/6ZrhWrDKluQibmATAoLtrprkiqBiXgKKl0CE3l9UZp0oHLukdLVSXUwpLo4pkYFiohDMGw9ksQfdgFETD7pUxk+IO1ZRcSB6C2sYgYHqKiZD/80NzN/zP++lVtR7czoM4bcf9vFsZg++J6ahjedcdxQr3hbUeBaCadV440JYcYfKRXjq1xdu0Zr2QpRabfsK5NZt1Uzb7GP45sp5jGNPfFft5nSr/TuOcVpfbze97gdbq41bx23mX50CyWMBjxuM/ECRc/gcUpvldy7jyOfGpE=\",\"jyLvw5J+K8uFkQZhl2fRdGmxLHxsje+SdiXZJdPw0lyNOMA5SMIw6+IdwoX5kmrdz0Cfu89LX2LdKzmoVnNvOslN8B1vtVK87dpBNnJohGxn01ykNR/uYR+32VNcKaUX+1bAm9le5TgdU8xbiLLgIGqHQvs48h0wxLf44N/GriH6DEPb9KIWFRc61NzoRvGudzUnEYwm0et+yF486edccam47H5X2hplTXvtTL7q/Nk9aG1Fd63artKdaep/UWrfJGntOngdMsXv6CPsf2S73Rj+VI7QZ9tzzZylTcXy19QF\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"f23-tRUZL+mJXq4toBxAM+DDZnCw/p0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e0af8ff2-ecec-4bc0-a8a8-18297235e27f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.357Z", + "time": 171, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 171 + } + }, + { + "_id": "becd8161aa38dbdd01217e419a9c2ffd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"createnonemployee\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22createnonemployee%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3f204f4b-50fd-4ae2-bd4c-688fc124fcf7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.502Z", + "time": 132, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 132 + } + }, + { + "_id": "cd66ee21b1eed733a1d0be229523d0ea", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1854, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/deleteme/draft" + }, + "response": { + "bodySize": 1519, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1519, + "text": "[\"G0oWAMQ+U/VPV2dPkgM5LP2fXOjSZJW0AgGPMn4ogAOAijUa/P/7zRACh0SD0MgcQnnGxKWZ3nf/nZhGkzxvkuibly7aLCbRuEgohNJnw5w12X5ElEuY1F7IEUqigaSePO0IDJrviKqfnbCZZ0V5YH07g1dGy4OMH3R9GAhNx3tHDL8t7dFEDM7T4NB8PzoG70nwRe95v+bu76zuRBKVcR0nG+F6wLnuiidr7v6CwTuiW9IFGGm75ghNb37laXAX/PFhZzR67HsGM3phXCj88rKcf2rhTa6n54EZK7Fs79vL9QAOVs8C85Bs00V1WfE0ziqEn16LezLS427rAxi48MY6NEco174NlpyLzxLejsRwxbEPRwNhtDM9nfVmO/mB4/a75cyJMKZ/9wNTBAbak/bWbcOdU1u9I+2joLDxqlOChyIRlg4K73eurxJJBAZLpogmApa65NvBO6UlWdHGMXTkW6XFAU3KILmnECtcaHaST8/1/SQ9TbLTIjototM4iqLpdHrmzd1qvvJW6e1kihAYyAne+4wUMv9WnweQhOfMy0GiB3znPXA5rqcpP4yO7IdaUp1skmJGdUyzLNuUMy6qeFZyikXBZVdzmZ9gxNbMAwO9DcoGWJ1WgCXIKv1PwoNFQdrboOykPPYLfkaGeeXwIQSuiAoMGkj8hEKS3wqFMFgAzNgJjECFhCXg7UiYJ0ijib936Ma+U32/I83k20ZSUCdIiojiRkLqQDT4X5/yAmTlpyZrjZ38wPN8fXI5nz+++4Hpfwjhp7uHYnKDa89hMYF5u2swal1BpLNdf3y8vnt8nHDVPn+d4vfKcCUL1v9WpkUlJM9luiFgpFfOiTcGJyEsUDkIraQFftKOAaNuTVdgtLqCgzW3bJ/aq7vzdX1p3s4fH+efEeQK2i8vd8vz9d382eTrxQvvnFdLNA/4yfCcKfLEs5GUedNIy+ca1p5HvKHJo4jhgCaPmOQntagtrtUSD8MlCXAXwkrpbU93ehg91jS7Vr+AclfWDAPf9IJfnHJXciGmMFUrlZ9K3po9WZI=\",\"Gmu8ctdaa+xLwFyhK/Jc9ZzuJ+IfPOGKuB23qPYwbhXXHg3cKAQ5B+YPWFEzAsNvwU9AuvrnPIeyagxOvNKOU+RBBioqox2aYwjxPMj656hlQ1DSAk3qPc3Kc+vn/Dth9BwiRUIIKKfpeZPRfMmh54ff3Frzb5ykdGcWFkzs1fAYK3hhxVXaMiSDsBCR/ZEPD7YNgWFUl0Z3asvENN2cOXZP6uosreu6Tqu6yKosS9THP66TsyJO8iiN8rjMy6qcMaiPAnT1u4KLRjngFlyrHa0G/hnLkvwwcVPo4KW7dnCHuPk/XVIAuZBb3KisBhm2shziRhqkRGNf6C6ITBsuxxbXk/6JWwUDHYACMonkOVIy1qJ8gCKTyVRmJU3zXgQmQHELbeZJ/NeiOM0JMshHMN31ailSsxWpZaksPS8ry4ZQA/z48ago/Pb1o0MDaXnnwbAby/Jcb0cK\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"164b-XUVHapOOIzzW3pTlWTSZaigsJMk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2adfe9ba-66e4-4949-b9be-2438bacdf8f0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.640Z", + "time": 399, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 399 + } + }, + { + "_id": "93f08993f6ce17695b342fab9ef98b3c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1858, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/deleteme/published" + }, + "response": { + "bodySize": 54, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 54, + "text": "{\"message\":\"Workflow with id: deleteme was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "54" + }, + { + "name": "etag", + "value": "W/\"36-450e5zWZWKv8WC1TrweSqvUKHB0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "98c78fc2-bc71-44cd-938e-224182d9b6cb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:02.050Z", + "time": 382, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 382 + } + }, + { + "_id": "85a5fdfbe064984240f248a55f0903fc", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1952, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/deleteme\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2Fdeleteme%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "363ba48b-17d9-40d3-ac00-948b6f948d46" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:02.441Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + }, + { + "_id": "a28511ebd49034780bfefd4d0cf720a9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1930, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"deleteme\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22deleteme%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9449bc3a-8e5d-4a7f-ad14-aadd0c183fd4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:02.558Z", + "time": 123, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 123 + } + }, + { + "_id": "dd4666bbe759dfe89b2755bce7090364", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1870, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/draft" + }, + "response": { + "bodySize": 5369, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5369, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c2-6XxwOcup/p3s2d08P61h1X+8kcA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "21e5d73c-c5d9-4b1c-addc-19a0cc6a2580" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:02.688Z", + "time": 350, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 350 + } + }, + { + "_id": "7464f928ce1a61e6481e05f5de3a3701", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1874, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/published" + }, + "response": { + "bodySize": 5369, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5369, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c6-RnSjWjBhrRiZFIr1kDdPqG4Z+Cc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "32334bf0-eec8-4665-bc32-0f204ead3781" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:03.045Z", + "time": 384, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 384 + } + }, + { + "_id": "7faeb9c1208562a6e4d98d665f6e21a7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhBasicApplicationGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhBasicApplicationGrant%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "88e362c6-58cf-4cf1-a299-8546f45a8659" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:03.441Z", + "time": 140, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 140 + } + }, + { + "_id": "da31aae913b0bb50d654fc588d4ea628", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1946, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhbasicapplicationgrant\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhbasicapplicationgrant%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "874e647e-6040-4361-b890-08a3654001c0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:03.588Z", + "time": 121, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 121 + } + }, + { + "_id": "c2722375c9c9b718b6f19547227327f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/draft" + }, + "response": { + "bodySize": 4417, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4417, + "text": "[\"G506AOTyddV//fb1CzKzGjtjLIrLbEhMelkXhNVmNGtkP0lmoCgfrZUJGRV1MsokjsjFiKgIV9BiKTC3G9i9AFJVdQ8GEBQ9IAv3xjPId2ruFUmWL5TNY6jW3ZuoKAICapPtZ3FFo1Hg+Pz8wQZyVvUPQ09bG0zoz0jgGd85ZQNytOpIkXfn9l4fzHAPfU3E188/DsZgBjs9XMbyvIYbTsabwRp7QI7XbF552v3eO9V74viHoxOKmqMPNHoU/7tWRf4hhD/pk+qflP92W5dtt6raoiqLug61n2JfA0/Kf4OvMjkA8k1PJ65o6RweA41wxWqLZ0Zhp77nOEyhHSCsfXf3sPvnFou5D4rru4eifdMpz7J6pfartKtx5nnd8cP24/aXp7svoqhdtsVyX6iywvm38k7/MujaPIO9IEfVhsGhaQOjUVzxdGevQYESTxn1NXUyeXKJRHgDUeTouuVv9sFqOsfUSo/87tWSg7//HSKxTLkXvod0AT/Efwj/S3+LjQYRUy1n6f/pF8jR+O15dOQ9zm8W3EQzR2aZ51FcW6xKUR6Ao6MXasOWZcp7c8igyfHK9uuXGLyUBjc9wzz/xpFOZEPWkBaj7HdFTuygwIpWfop3HmmcoQWlqD2Uh9/H89FYTY5iTefYbf66bHtBUXDUKhCKK4YavLWdQN5pJCDe5zdRcZPd5OXNMr1ZpjdZmqaLxSIOw4fH3WNwxh6iBc4zRzqPxtW8dcWDHEApAdG7wmt7q+15NI40Nf4Kfiv6btYPB59nzmjNXGZInvrIC1L7rClXXUbtmxRYFZCea8E/VW80ITgBInLcD/mGUOFxCwxuInw8Rw+WnpzQf1vvVKBXdbktV1SXq7bMm6ZkfRb5x6LAdYeuDD88CuyHw4FcbGw3RBIfJmuNPQD/ToZDrajVWnCq3QeRuFhLK+1JuWNQHgcbONDIK8YHCv9Uzqh9Tz5arCNT48//oGGTcPv4QCFiRrN476pTpp8cPZDyg4UN2Knvd0spANmoG8eL9suBxnGjY1sjMmtNrZ/a0+StQ8/8waWVNrgLXKUFqMlNdvsX2MC/iaGtjzHh3yRi5qCS8+5dpmxLSfwVPmHwRvD9tDUH9m77xDhcZw7XebGWFmooQCnx146NTmFUWr24vfjSM0t7eJS5ENGiIiaa95FItRDhtUk=\",\"C9g6NzhwpLSxhwJtCa8mPIPR0C+4OiGkc6VNEvr/EJDBLfzyTO236iGqH9RLazqIvisNldDhuwbtx2hez5HSEeue1F9nkv0jd7jRZIK4nQwArqPGEciRAEBD5pd/zsL10Bmrq6HfNVS668zS/mBhP/nHBMCvA29AYpycV61WRdxuirfV1mXzNVifXEmA5IKjvVjt5ogUXyT7Gi8ubnqNJ4pmvEjQRCu/ornp4gJP861P8aHDM8HkycGz8vQKMvwIkOa59km5nGI0ImiGUqg97W7/Ek+eXGw0F78rOPwPmJmS+alI8z2D3zgTUvkjPljcDW6r2ucom2Ng8z0LH286iPCQ4j+Mhs1mIwNEop2BiG8HNyHYtf/VBJgX7Lv9P6za9wRhOPC2A60aZq6HoWsxLU08GE2TRNYv4RY+dLCsvQEWJ5SrxcGeOlUwQSYDP1oYdEwpCQgfubPQfRj9mltHfqBRXfpBadjkcT6ARLl2AolC0OV4dD7K1ga/qkASzYUd4nY4Hgcb79epToWsfqC9+m25mrQJRz970HOQKOA6ZwjcNf3pMr7XpWLblAg0P1f5o/z/RO5yp5w6+mpX/1CaMatjldbZNKX91dDW5v7iSFEWKiwk7Amv+QV0cU7skq1RR7fVFZOzGT1zJk9OWu3HEjp+LgYc2N3u8Ynx9szyiuYWctXHUEgIL0vOwQYoflEntT235BTYZw1EgZFWfHzcfY1Pn3x5RM7FB1pnKJwf8cRk2CR8/r//Hci5eD/oC/zwaz32qhwIBBfhl6REvfJGzAdLr83RhjDw96FKxOf1EqEbtFpMI8V3eA9hFD83y4GLmg4i3crQ931dGBTaSI0qpNDsB/LHRxIhnVAiz+BYwNmmimGymH4YWUZKk6I9ZXXiaCZoA0vYNx/32354fZzalrz31HykaVE1qtF1TZRfLGDD9l31bXMFhM/yfbXMmmy1qjUZdfJ4j85ajOCA//MlLtYNFAQ4MYM3A9Upp+F7+Xbqe+u23LaptmE1z2WYdeyui2YZbODKqnUzJoDZIQiR1yTNODAfVJg8E8Cct5MZ//02jmQDE2VocgA7mQldpocDgzePCWAer45msyVsdUHdwDqep2EC2DRqFSh6KhYt9QVc5RyHGUptipfMUHDn7S2pK4WPxTnAZ3qXpRXpfF9Uub6o0vcqV0kvcFcYriMBKC86vs5u/9KJWOq0WX4DbQXQ17IlTBn71ebGBy/E4ZnOsSBxE6yphjzsK9FDhm+UoVAnZZwMTxuqUgY+yGi0XcNdvtu/xAZQdi69xfMiJ4/CKcGIv8ThIQVjD//w5GARWDBOEE1ORUVyK4eqKX2QCYQAm+0XUMkMJf/cuFsiJjk1U6X1ptEkm4TWCTYyyxndzwX0ZGHdE1rzXqZtQN61WB04CGz6zqJ1dOoywX8rBYEZlSIYfgAhmJWmW8SuwH3rrdX/UiYw7hjOLFBxydR7KrZdZOKcpHrmvQPim2w0RqfVN3ssg+pDekvAIkFxo0Y69v/v0qxE6hFIM1QeBt9qAKz3q4smGs59oTb0OuXrxsEF62ZdUIq5oDwMTh6AdFb/F6vp3IsHq6eXrMkarZTTzmcCWIF/v5iq+XFSWnZlvkzrvaJJgFcDXw+6VMurc9pDd3eHy1o1VdkVRZM1aODUWgw4XRIcNCD92v9SRqbieJjYSWLR+lzgv5lxDoUYRpO+wg2TBB5IacJfa9i/UBvkvnwp1RAbOo4bDgDrNNwXEhqcdxM8V/UBNfHSnheHy9jZzzMdRLtvAJsNsJNvzDMIJwQAlMkuKQuO6dh1cF7P7AKMbkbZ38XPlfyinjfR+sanR9sP6mM0x5ETCjse55kj8w==\",\"4QDSGhyUmhQTbrhdXDuqKNppS+QpBNLOkcgBhTHTEWLEJ2EqGKKigOMlcooIlWlqolBQQD6EGRa9xXy+6y66VdUVSyKiTpzpWLTLST2FfjO+2u/EpOVFQQq3HPiot02WSL1yeMTsczEDzIQ7NHxl540zzRy35iMCkdlwjygVYMFsy9UUhluP0HTQ0+hUzUUgdBn8ZEiJUiqfAQLD69zoluglrYBWfIyxB3Q2B1uf2OOoqHejbo0aSiIeNjeek6bygnq9jRBDm46hI5g8z9KUHOspai+K+CPYjJJqbWb+T1MYuMPvHg+exGiDAAXBeLXz53laxU8zN8vrE48h3UzBu+V75eExKBcmpqWoQYp+x98K85+VfxzfFJhqvyrTBh95qqtiWTRNs9TqYmTveTuYHYKohzEVLq0mcAjWoZvjFpzTK5pBD1YE1NZsFEAheYqpPRhN+yD/Nbnu7zHwy+7L3eft0xY9964jPx3p13mYLCtg6iwJDluxO3ScKVS7rb3hv7G1+oGUm6DP6lZ19FPRJ6bJ6mVTVaXeV9mNhOD9NEMaln7q5BhUN1tMb+lIBYIHOgo/6p5LO66RhvsjoLB/gOUwRkBL/4pgQIN0yk5wF+2yAAznGFNv0PHYsfRawJ3eTcNB1RZl0Ikkir0co2FHMjzvqBw3wuwY47yTxcQWEVfNqeGfUhljESGSOGvFlxx3+tMlNj1IQOOTTeJ5/DiuQvgtgsNvTg+k9fCtjyqYVvX9RQdfcRxOBCeKxLP0emB/IQ2DDg/wQZc5M1ehaG5eoVt62lWO+u4j8cSDVMPIrBNx0cmxGpAbMGpN2r9NaUrzrS6qUZmn2eUjLwPx5j3+qpyNGF81YLFfneVJWVdwoYb4/4stab8OmlZrwKywytfZ/rQISmx9bY5nFHXK8YIiK1OOh5nhBSQwo8yQ+tqxCOsg9rcaAm+Dtzl51dSPYyvyHOT1B+A4mV8G25nDehWv3osrLHjlDmmacsgM1uP8yUC+psdYecMrY1DFyhRLZX6EJ3Okx1FZFKjVJfILXKCCSQrrzaRzRnoKOlnMTNkZtBQF4kxMUZ7fH1ctZ/XKUBSfRlzxjCIrizLBlk0Vp1m1zKslNcGzpShxV11kI61WEp6ePkShq6mbU8izPJ2a2+QCVejgWRP0gA+FqCyLdwj58l7zD8GKVsu7MZeF9nth8aI6S7ZPXVYohv2MaaNyyY7HZHmGCVur1jYfAu1qytVIVR1gklC9ojxN1LdIDTpmI4FsHuLJ6+7cMKIN8WBfp+OeHIpsh5c2\",\"RbLMQ3bnkAsXQ8N2GMMSrhgmBVaoX55X1S6U7aq1YEoWVUtaEK0UzbNsfsXJo0DtVBeQ43EKTLQ4uIlm\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3a9e-n3X0PT2bNM3XH2IHDXx8oEGM5sM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fb38c72c-b77b-4257-bb6d-1311b3b9e9f8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:03.720Z", + "time": 387, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 387 + } + }, + { + "_id": "402830a399173e74438a37f7d1e98a5f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/published" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhInternalRoleEntitlementGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-26XmFz97QUwl4jKEa6hIqcUFAJ0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bdde7efa-bde9-4b03-afcc-1c0202bb98c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:04.113Z", + "time": 331, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 331 + } + }, + { + "_id": "a933b643610f51e525b257649e8dce95", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhInternalRoleEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhInternalRoleEntitlementGrant%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e5c218da-410a-4cf3-b43a-ce3770900b7d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:04.454Z", + "time": 121, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 121 + } + }, + { + "_id": "8bb40c168e519d2948ccfc6b426ec2a6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhinternalroleentitlementgrant\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhinternalroleentitlementgrant%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "25780cb9-1bf7-44fa-901d-d317a9aa1410" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:04.579Z", + "time": 123, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 123 + } + }, + { + "_id": "f5be5a994a5fca0cf6e0702f8cf142e0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/draft" + }, + "response": { + "bodySize": 3046, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3046, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d7d-GMgwZu+SI6WuoBMw+yuS0DQl3DE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d6037958-dff2-4f2d-9d24-cc1439e3d340" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:04.708Z", + "time": 347, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 347 + } + }, + { + "_id": "5d5ca9d0404897417efbe04304a84ead", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/published" + }, + "response": { + "bodySize": 3053, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3053, + "text": "[\"G4AdAOQyVXt99/YKSBtiU4dO6Uqu2k7p0MQQsZKRUCADgCqjwX1rrz7CxvZVaX6+wldWuJnZDd39EMLs3P0gbhEVgQVgWSWAQFXJtKqyTvYxVLv7DQIiR+wx3V1e0GgU2D083NDxvSf33JEKhByt2tPW4w0sHQe9JzeoX8wFCwd/A6cudn/pumBamxbOHZLzuPZgvGmtsTvkeBnlke82X/9WNZ44fnN0QDHh6AN1HsXXC49I5+W/U/7HYFJNZvP5ZkLzueKz/L0nBw2sCx9UY7RiTrPBcI1BXnAkcUFLp/A2UEeanXXiTCgwuJ6QY9uHuiVUrltLyOhxUNi+aeKao6xtFHiGH31zlSiwaXc7cpmx2zaR+LV7eFhzewFjd/Dek5OYLqTtS3YJ8FdK7z05q/aU7MyB7I3aEwffF2+XwkXaa4uQAD3kwe4cbc0JllCl8muxhutq638t1qn+JKYLNDvTKihYwn9B4H70PvvZkzsnEvcldYzOrxtD3Lee2TIOF/YN6Cd4aZpAjgm47z25G7Un8EeQ+NuFq+NEifeRw1eJsJbENX3VhDQPS156Zbt1e8Rsr7qk9+Rg+QjOzSg9V7qQtqEABpZQLqTdG9sTJ+bPsiiKooA//gC8bmZ7bvJGkrqza3gbnLG7xKRZp/TboFxIxhxYwdJUwIc219cLaaO0S292FxKsq7sUDavyvSeXLBkINAoPysHSATt4oQLBEs4FL1QguEC2vWGahfbvt7ck49NF9VUhqx9pq4/3B+vUuWmVhiVcpO2VBAEoVIdWcWklKh8HYgq5U2klers5ztvydffKNE95e2WaJ7bWIa+ligGmzdb9bTWdqA1FY4lCDh4gBSOJorVF0sZFVyk9RsFPkLCbToyD7ZuGy0PsMrb6QmbiaHmFrNvN9wdsqgVL2O5kf0ZlYkiQVhzaLgZYmjRJjFu2liHYhiCeClgCuxNV1S/VcMTMB61lIlhqGRNKwgVcmCVA+uJ6pCVCbL0V3NmjUJO2+1vDElYSec5sR+GDckZtGvLJddcsTyQa7bvMyvbt5rs30Utg7CS5NzuV76BuhbI15XIr8PlvFxEe6W8d7zlIfLV652cqI4dLtHZ9Jr/zwRIu4IMKvRcgMe41kshBIuBOJQqQeEU4A4eWSs8kOq/ePv9C2tvNd6pDprw3O5vQd3g=\",\"VdAYF5Y=\",\"IKkLCTnXOg3xVdHsgeP19odtj1Yih3PsHUzA/cq51kHIV8LsA/JpJOC3C2VnT7yWeM9hq0zTOxIQXE8Q9bgnRH8Idnf79h3jwHrUNzxwcxidVoEkxvZD2ym8gTCcpD2b7kjp57h4z/NGMUYe6h96PZ4Ni/lmVo+mxaHdG/pOdYA3WP80IR6Z5J2JAZ6cyF5tbSAb7It8tZZaIiwrguXlM6MZyqw8h4E8dW4ZKA+OhXFIo9qI1XQyzUViFoNrLnbFgb1avWPvSx6Uc5gYz8IEME3WkGYcmLXOZQJYIePAjKqQCWAMJ7AYomBwUedOObX3Bu8wVZzDBDAA75G2yLrOaU4qXejkIxvRvKzKLc3GhToACRcWTvrPngI8f6D6h2oGcPj/ZX+lAh3VeTCpyno+n08m04lCrZ096qh1O+RUYPum6VDp0tAqPyoTIPExNq5sZfVLmf9huqcOfLRqXsmJHw8AIM/hDSnNWxy07he3c/PxDkY9o/U7BwAwWwgXLPg3aPf71mZicFNWbQAQTXB1d5KFc0eLlyKzhQTFCpbA9uemL6OwQgAQ2XLB9YiiIvNDjm3Q463eKRmzGzmB4LHSEM3jnfW+8LV8lDbAbBAAwMEO8NPiICB2IQ0S4RoiJYVFAQdZapSAV91mLaS1g3l8RiKxhzBsB1eDicyWyAUYZD0SC/uiQt9fhrksL5Gbj+TRgvAbYpxVEqYKPejRBKNGTTIDb+HTPrRAzNMxcm/EoKDxZlLOpqQmFUZOAvyJ8NZvh99RpTCx8PSejuvtqBpNN6rUGPP5MntazPGwe5ikxLBiNsvXDTL/75KOKAytMMXyW8cSE4o2aVApUJgYDaXQuKWxBXqdBIkjDEwb1FC3t8yLVFwxBjzMT/tMPALcrynnaxqo4ckVeidLCyxYgq+rVH1oB6i3B90T7PYK6ggJTHBogpOehYOlSUjrrzMPyiUneW9IeZGlS3xZGgmpRJaxu1ZnQmtjY1oGq1SIspz+hD/vtaCBCQkOEElq4zBBOYMDK3NZjjTyC5FgMiS/C8mMTwcj2rrWYspcyNANJOMgL/Jr7DCvYbi+fXp39+b2w8raB89x7fGb1T+r5+/uzWRtVFzzm/Z/q1tzFHtGjqoOrZvWheloNSvzS/WeXD7ZVGVdzYYDPZqXg9FWzwezYVUNZvNZXU7LelqUM+Q4GV7gUVzk0p5QBNcTx7yHlWAmrj7UYpruGYIsDYuOEuOaIx3IBtSQwSPImAvOtGegQAWJfAq3HmmM1HzVcN7woz6W8d5YTY6g0jhui6/U1mcUQ45aBUJxQeNXp86ROFSz9BVXyEKBR7gMmBwB8DFdJ8OranQ1Ka4mxVVZFEWazi4eA2PkSL5WTbt9tSxqBQfRqceZW7xxMJp0L+aa5tWmmgxoXtJgNNpMB6qelYOporKeKL2dq/jOBdt1HDnSqTOuwegooUNApwbFRZB36owLzVq9/4J1Ly3mdOIYTW2duOb4P2gpq29aTRoNg/rIG2ukI4JY6fVwPKGYFhzPKMrpNBtzvLAtZWYAL3gOMxcGfRlrNQ1VBu+bVg5HsyeYXzkCx948b+3W7Ij6cVFx4oIxtBjN15tPs8m3VZtG7pak6juthqNsNrztZ/Rm5vpIOrEq5RQ/z5TGd/6N7KaPy1G9ccZD/syxLDYtbTqd0ljBrIjeXhiaChVWXFUTmxCNENJqpnzd7HcDceC5g96TQ2fJHEXkCxfQZ+w7PuA7s6e3nbIoUKtz4lOE0IHOaYwr7fZonR4zSETcZ1rseaNcKlbpNfSx3lyYFIiTeN3fyDAqr1sHBWJUyST9NJ5Fra0RJ6QtFLhzJ/U1ctz3oX5pcD0=\",\"RQ==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d81-nVTpJgk3xoLfhymbDDptyXcORCM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5c8179d1-14cf-4080-b63d-a8d307fee998" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:05.063Z", + "time": 392, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 392 + } + }, + { + "_id": "d37dcbcedf484c3d0de41fd27ecd89bc", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhNewUserCreate\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhNewUserCreate%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 270, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 270, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2025-12-15T17:42:41.49535471Z\",\"createdDate\":\"2025-12-15T17:42:41.495353249Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "270" + }, + { + "name": "etag", + "value": "W/\"10e-tKGPvcC6X5tswU0nI/g503Zb5Ks\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e3f88ac0-4b2e-4394-976a-c80ce029979a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:05.468Z", + "time": 131, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 131 + } + }, + { + "_id": "7e3c40c8e8b6c4f55dfebd23826e5d3b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/c385b530-b912-4dcd-98c8-931673add9b7" + }, + "response": { + "bodySize": 1762, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1762, + "text": "[\"G6cOAOT0Vd+vX+Je2ziozuY2qY65lBYcx1iFTAUS7bzA0P9/vwLR8SJ5NU3Ruf3+206MxIrjfTySZnGB9xPfAVqg/WBrY6m8uqYreEGiD6Tpx29Qw5mgh6fTCSs942WlBTpoL08EPSw0h3gCOsiT6Pd+auNcoYef4/Ks0jPLRc0KDhtphf4G9gamX4uTXS/T1MEc/6fUQuNPtISS6YTnv2GCrYMyL2fob1BGmvIK/T83GDP0kJV2jqTHnMmg1tyiO6qCirwncsIZ7qDL+tVBSpFyJFQkHersHXoRDerifUzBpVQsdHCeM03Qg+e2H+wfxyvV78OZMLl4bctYH6GDHS7sCz18MV6psoQCnAqfj8vaoql5Caqr4warpT/0bbnQ1oHvuwT0N5hbvy11hV7IDuZSVmrQ862DhUL+oU4v0JcwrdRxmvxlmlvwhXP95BTqI+14Yx/ob9v2sHXwgaSETKF4hSIEj9oaj5EfLSYqx2BL8kV5AsGR8i5Kj1pKj7pQwqCOCbM3wQsvnbOalrpW3Ly/XBbBEwrWCnwbMKvuYKFHel3Hvw8fSLZkYWMgpCA0apUjhiSPGHkuIXPLo7YEApepGEcCMzcRdZQanSaJ/KiisYW4UoW2ew7jJHRUS/kYfZdYIHhNn53DODHHjyN/nnWLH3t0ojFaU6RDW6xBbULAKJNFHWwW2fNER9XCEp/QNBnDidWQzK9qHq9jvoTJhXYdezrNlTI8fs923xNlyqzMC/v0MrOVlistzB/HzNwLmRVsx9oDPfy7G4a3+QdiGNb7D4Zh98Ew5JvahuH+g3+GYd3jQ6gkpEFvb0AHdmMyoYcfJworMRffR0mNvcyXhfn/Ctua4RQCSDqbGMl71Ek71K5I9IlLFDYJr5M3wRFBlAvF4AWhEVqgzsGiPxaFOmQjOVmtFPV/mtexjXP9xf8Fv8ppGJNvkli8yeEjR1eoBb7WccXYbzoOQA9crv2hEks4BHN6HeWPXz6lEi5TW94gRaj++jxv+evzDCm9P7STSNOa47BV2B50FWs/SBE4oPtyYQ+HA/uC2m6s7q/0PL34OzUxropDvYYlnKI8gL3Hyryc995kP/n5SFP+PUwXemeoQz0c0lzXeaL9ND/u7jKakgo4emZt7u+6ck33+bcYC9stceN777E7cB6+u2e3oTLG2OHA\",\"fjnNz5XINnrdmI7ld+VUNJGSj40tNeI6up7m55Ntd9cgJtqXPfadDLiQYd2ZPSXjSQ==\",\"7ZdjJqlz/QQL9QVexpluTmMm70oN76E8gh27qwnOGTgcmI/fQpimF2b3uY6Njfl+vcKunebL44n9LgCM4gUrCwuxMP0JEQVW54qOZQ4OqY1XumeJlDk8pMaAzu8IDXciGR+QC5tQh6QwGOFQGyFVUDplKZWE5YfWMaQO1yC6AatUajAcYIGVptCtH9fpAjErm0h4jSZajdrIgDEKjtH7oHgix5UjiIzxXgSDNiSHOiaOXgSLSURhLHmnZKKDW1jap6H1V805hAJY90sLS2PJBB0HabSSHyCQsO6YuUKfo0JdVETnlUcTo5bOqyCs6Tj5qeYqDAGArT+rmR34SGUKTY+HDuhKtQ2eTnyu384hK/eRUS4jpFhysG1bN1b43qSciUZxjF5I1Dll9C459ErYowo5+3iEDv5b6Aq99B2cqYUcWoD+BiNTBOu7epBcWuQSuf6Vi57zXh73R+v/hm68xyd+oUEhUZhfhe217aXfGycMN0KIv2HbAA==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"ea8-YyFZzNgXdPHQXg+md+X1PfRtDKc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3576fa00-2b67-4414-9dc3-69854da11efb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:05.604Z", + "time": 101, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 101 + } + }, + { + "_id": "10fb1ef5719e02a0cd71b4b938e49a37", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"c385b530-b912-4dcd-98c8-931673add9b7\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22c385b530-b912-4dcd-98c8-931673add9b7%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 486, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 486, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\",\"metadata\":{\"modifiedDate\":\"2026-01-30T18:27:54.681904Z\",\"createdDate\":\"2026-01-30T18:27:54.68190238Z\"}},{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2025-12-15T17:42:41.49535471Z\",\"createdDate\":\"2025-12-15T17:42:41.495353249Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "486" + }, + { + "name": "etag", + "value": "W/\"1e6-BqtdkqiNjJmHj5qNlG4phq19kFc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6b53103f-d866-4723-b3c6-1446aef96970" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:05.712Z", + "time": 115, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 115 + } + }, + { + "_id": "654d2e07228c283ddb272b72b9b4c66c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/8d0055b3-155f-4885-a415-4f1c536098e8" + }, + "response": { + "bodySize": 1083, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1083, + "text": "[\"G0sMAORaul5fZt/EMQXN8bzSOpGNckcgFO0crbXeX2vY3bn3JOBNTMYQ1XQV0YY3Mp3oIQR0WPM1NSRQyolv/haWPfjQtegQOPSzWTbf8T+P2TygBwpKAodaDoeMNWWWM9ZmVV2zTFQ5y6o2n7ByNNyrsQYKxsYrK1WrRKPx1tsefVQYgH98UVha/99quwS+BSX19bnG5VNAf6D1MyBR+PG4AD6iECYz7EQAvoWJ7TprgH9s4afDKIBvIa57BA4zll8IqCWWK3+PM0DfCxR6OPktLBWgT6smIiprTh8Q7tHNlUcJvBU6IAUVzkxEb4QGHv0ctdQD34Lx1/hzWQ9RUOFZBdVoZINZ73cCXlKQiyBI9UrnwuO2LF4ogjWktX5DI9Meb2VKFErI2bAyZxJnHxUOZsJMBQ5HKWBPH+lIk91WydmhBUErgLk5OTs0w32+M2fy1mOrVlcBMMKZJb08JdyAzCJgUZaQs0Nfnw0VDr1oI8DyRCHxabgEb2duz0oXBx2BsrFkTXpf8ehwHiIkChFXqGECqPuehZ4jcNB2GT93old+fSgimiYGCfjdCDQR7pdIEdGSgOPGp4CeTMiVlBL2EmvIf35AigMWPkG20tLYgP5hghlZlctACipczXVUrtCFffpAtLIsguYOET57UZ5eZrT/VUMb92+vromGYdyDjpvODsk/Rg+VaLwMy6MYzSA5lYcofCRxEbBGnODUiqkXJu+tppG4dvbIyD3wCdeTaLRtCnd7KaWmjGtkmThUZXmOTkqjnCScw5yOKzXWahQG8hXHy+QJjgBXQnevs80fTg5M3HPMNLY4wbiEOZXga4cE9DWm9EVhAarDaPYzTff6qVqgaQ+YbBu6bU7UAg1pT9AmA+NdVPKWgEShl5D49OMjUQhG/zEe5t4co1gcoRNKH/zilVC6ss5maTVJKqp8EcbhRBUMT+lIOAAHmZCxtnVkJIboMSEJ0GBkK4uYFaAEWfoZjhWrKaWvRCuQDeF2HUYhRTWCrgcr+l1QDAuW5UWWs8ei4EXFWT4Yj/begULHgIb4DQU=\",\"Z/WAFVXOxnk5eoeUAA==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"c4c-lUanL5gikWxMvwkaOznw0IlwjPc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4f169935-5d54-415c-ab45-f48c2088d409" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:05.833Z", + "time": 189, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 189 + } + }, + { + "_id": "2a610da0ceaa64c262eb27959f6cff8c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1938, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnewusercreate\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhnewusercreate%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 1108, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1108, + "text": "[\"G3cMAMT/X0t/teXcNfZEI4ll2WGaMTwbfhX8QDLzv2Ot99Matv07T4gnMfsyTKyKaYVOKLxOo1ZMxGtvtrlwQp8N5qj/F/tuZiNkzjHVrOxmPeT7BmMpvOlKdQSJfjrNhlD+4ymbBfLgMBoSlR4MhKiHWS5Ek5VVJTJV5iIrm3wihqPBbkUVOKyLl06bxqi6pRvvevLRUIB8/+RYOP/XtG4BuYHR9Opc0eIxkN+n+kkkjm9Pc8gRR5hMqVMBcoOJ6zpnAb/63VFUkBvEVU+QGAT9QOCc6FRxdzSo9Lng6OHEbTD+gDqNmahonD19Q7ij/zPjSUM2qg3EYcKpjeStaiGjnxGVfMgNrLzan+V1E4cJTyaYuqVkMJD+SpBDDj2ygnBPtC8e5npxTxWcZY3zsyQZ8XgzU+LQpeFhZE41zjom7E+V/VU4zD8F7JFDGhG2myo7PeDAaQkwJ2enB2yYz6fpVN94aswSgkY4Y1ifnyVch0IjYFEms9OD084w4cCrJko4LXGESJtUgrSjN2dLETsdAbG2bJp7H/H0n2YhInFEWqKGXqUue1LtjCDRugVffzQte+NXByqS3FWGylO2yrSKxInDceFjIM96+QrpHOYyZ9nSQSDqgNFUkPm5VHpBy6LAI8uGHCZcztpoRGGnjMh+1pZcdJrrwiDCZ5+jRhYR7X95aOHezeUVo9CMu9Nx0ekB+yProTkqy4cxV7SmkWzrPiof7cJhhVICwvRfr6xIZ5OsxjWzh1bvIZ1wXYm6dbWQppdSKsuYUpayQ6soz/0v6n/XgUzKCccwU0o8UO1cS8oiXnUQ0zJxgvsDdkJTns1z9T+aEAXLlDFT2+J+xxrmriBrkwjoFab0yTGq1WaU+xnZ5/+aOdmqmc42ZlLm2MzJsqodS9MN5dJF4Qf8F3m0zzD5zRYSR7D0l3E/8/boxWIJnTIt61ulS2Varr05JMq3ihduHHRUwuik8X37CzYyQfzTOrQag/eEEASoMXIO0WmICqBB9v8t7VhFKX0m7kCa1XIdRaWVG0F9hg4CX0IxKESWF1kuHopCFqUU+c54tPsGjpoBmz9/qJCi2hFFmYtxPhy9IaXPBA==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"c78-RtyS+japnHHbc9S91DcD6Lazvtg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "863b66ec-705d-425c-9783-003a338709a7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:06.029Z", + "time": 210, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 210 + } + }, + { + "_id": "b74ab2fa7c61f94d8bbb9a49203978d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-J5idz6dFGoETw6pxxTHAwhsl8TI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b8b63fd7-7a78-4a18-b5ff-ba84fc975c2d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:06.246Z", + "time": 381, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 381 + } + }, + { + "_id": "e2dde589f8c1fe9b33ab2bdde047c5d1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4226, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4226, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-moU6e5rau5hrulM9d0Bk/14tTIA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b2b16ce2-79af-4ef9-869f-5aaa9cfbffe4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:06.633Z", + "time": 390, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 390 + } + }, + { + "_id": "57a5cad82f09fe2fb978b6ffd0967f8f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow1%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 483, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 483, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "483" + }, + { + "name": "etag", + "value": "W/\"1e3-hziUWgY4Z3A/KBAjDXlh2nti4sA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0cf94bfc-822f-4d0e-ad9f-7ee4cbd2ebca" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.036Z", + "time": 121, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 121 + } + }, + { + "_id": "516e61348e4ecc0a207a3b71069517dd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9e3fc668-4e96-4b03-9605-38b830bea26c" + }, + "response": { + "bodySize": 342, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 342, + "text": "{\"id\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"name\":\"test_workflow_request_form_2\",\"type\":\"request\",\"description\":\"This is a test request form\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:01:59.586Z\",\"createdDate\":\"2026-03-04T22:40:08.831569376Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "342" + }, + { + "name": "etag", + "value": "W/\"156-PTn0fEjhoJV4wTk1YEIuqCEabqQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d4042aaf-f7ca-4cd4-a8db-a22c67f0ce97" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.175Z", + "time": 108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 108 + } + }, + { + "_id": "7b593beb236d37516c21f5157e23dce3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/fa1a5e72-d803-4879-bc2a-07a5da3d8ee9" + }, + "response": { + "bodySize": 368, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 368, + "text": "{\"id\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"name\":\"test_workflow_request_form_1\",\"type\":\"applicationRequest\",\"description\":\"This is a test application request form\",\"categories\":{\"applicationType\":null,\"objectType\":\"Group\",\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:03.612Z\",\"createdDate\":\"2026-03-04T22:40:00.809825423Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "368" + }, + { + "name": "etag", + "value": "W/\"170-cldJIsXRvS9vjLEF1rYdm1FcxJs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8cac3dfa-c351-4b27-ba35-2e566f973d1f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.180Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "926b2d2ee4a0ba572a2da531c963783c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22fa1a5e72-d803-4879-bc2a-07a5da3d8ee9%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 918, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 918, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:04.471Z\",\"createdDate\":\"2026-03-04T22:40:03.856752543Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:06.466Z\",\"createdDate\":\"2026-03-04T22:40:02.84761136Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:07.535Z\",\"createdDate\":\"2026-03-04T22:40:04.870872677Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "918" + }, + { + "name": "etag", + "value": "W/\"396-oAO8ZAFe/dWMjXKjlmparcAFkzo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "487f2709-3e80-447f-911c-06a3685ee1f1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.289Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + }, + { + "_id": "56aba0f2a42a3781f54be2fa237ef6b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"9e3fc668-4e96-4b03-9605-38b830bea26c\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%229e3fc668-4e96-4b03-9605-38b830bea26c%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 699, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 699, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:00.48Z\",\"createdDate\":\"2026-03-04T22:40:09.860613713Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:02.474Z\",\"createdDate\":\"2026-03-04T22:40:11.933983845Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "699" + }, + { + "name": "etag", + "value": "W/\"2bb-EY4HvrUG+IjSSm6/NURQBKKe7+U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "843be203-9991-4ab5-bdfc-822feb75cf14" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.291Z", + "time": 118, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 118 + } + }, + { + "_id": "838cf6577b94f0ce14deaf2a1478ae99", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/af4a6f84-f9a9-4f8d-82ae-649639debabc" + }, + "response": { + "bodySize": 908, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 908, + "text": "[\"G/YIAMSvqflVy7waXVSkdEg/x5VY2SjAGTgnDT9/v9f9PcX7zvmVVvap89avoOjRKKnbEqfDCU54ZNMhzrsCDdKZ/fEFRkOB+pzKvs6zvqEmy/taZ/WOOCvzptw3mltqO0iMp/Czb2lmKEQO8d+j82M/ucd/ngc3fs+/+HzgfwUk/v0ZqCVJ/PP8ALWVCN0dzxSgFnRunp2F+rXg38yRoBbE5wNDYYjx/GQ1LvPH5KYhMQZFl2GZOLj/7+5NR9E4C7XAhI98fzSeNVRPU2AJE65tZG9pgor+yIqFoBbYlFpvZN0nYcJXE0w7MRsOUz8Dai+hxy1gPiQ6jM8zqXgoBWdF7/wcRIJpIkhJwvSgw2iuNc4iE07vyN4SDqAUYLecp2ER+0XF9ZkGqjnCnC+uz9SA7+fmWr/33Junm8DQFE63OMiThKtYaAi4KD3i+uy8P0w489RHgP4kUUST4RJEifX9RdLEqiUm1iwmkfcFz/d8DBFJIvITauyz6aavNB0ZCpN7NP5vzE8H45/PKDLsTgSSnLJVoSlyoChWkS+BvehDy6QlbBTOioV5wLgDxyrBzH4l0YFadAR9efJLuYQJb45TNKaQC3vLqWhJLTpufQGI6IsuyrGg9r9yaOTk/Zu3opBZw0O1il6fiZGjh5VIrIwjmmhkkGzrUyQf40KxpjgRYeDWky3ujdPqwF3tudWokE9w24x2cu1puZRSWQZKWSQOpYryPDqr/58qjPKo6GIY/Hus1rmJyaJ4BRQUAqY4wSOgMyEIDrp24O5/LJGLMbOxxdvSHubd0NagBKYXSemPxJhR94L6taQ/6Sct0FJmjqSpggArdLR0voTdZldmm322yT/v9mqzVUW52pXVT0iMK0VM/Lqd2jeqyFdVtduXeVHnP5ES\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"8f7-yaYJ9F3vkwvW5whdhseefDySMt0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "512a8ba7-30cb-4a01-8a8d-278b80fc9792" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.414Z", + "time": 194, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 194 + } + }, + { + "_id": "23d0af5233b3219e2f055d4c305b4e25", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow1\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow1%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 964, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 964, + "text": "[\"G0gJAMT/puq0cm9GUemMKa1j85XgAg6gdH66X7n/rzh/3lZT2VJa9NRWUAUtVdw1deDpiR7pkZ0Oce6uQKBMtNLwhxz1/2LDjiZA5BypZmVu/j7Ewx+0ggD1aqqahpK87Lqk6toi6ds+S5pGDcVQVYpoAEeMhl89lkuCQCAfXr6smw8L+/XiaMHkV7yEnxW95OD41QEhKBDIh5sfEnNEjhdHnxDv99N3WkoP8YepXS6tQffsy5KChPhD+FkRBJY3z4aiUOnPIXSCI/5FmyaeEFlAwqCnMmhr4PyAP6ePUTtSEINceOLQfs8EckYuIIIbSVk/xB+MpOJ9XldxaH+tvZ4siAyWyB8GUXKomAn0K6GNuMzi4qHSW8MG6/Ific0VRIwcAYd1aM6ewpmg/ca7NG8SB/4nB7thS4aB7fple5sayFYAszfb21QDfz43e+rU0aC/rxxDEzjtbMVP0NiStYKAaWgn29s87Yf2m04OAaAncjQPRag4ChhPz4IOItuAsEKWwN57HH3Q6AMiR6Bv1DBf1GXXcjESBBb2y3/OxUq7n00ZSDUudPANxBDVKdMyJQO5uWQbvPLk2PxdOsVhnFnDigKBCg6Ik4LKvCXSgSh4gpp8h0sqh/ZH4yJoU4i5vWGDtaAWkrn38p0YIjIoVF4OjbP/VYcG10+PjlnDMou7bBva22Rz8h6aI7IyRFORTyfZyUWQLjC/kOwISkDofXPSNPdaaRSu4W4ZtQc6znUSk4WdHAeLMbZlcCsL+aFQU571P6P73XTaGGX9i2yG4V+PNbF2QdKgecWiZTQnWIzJmhCL9NnJjKa/M/yehYj2LRZaMoRZeoCtsXogLxjjE0e8qssgHv7iU/xKcTSYjRM1Ny8042LBsaQglexEgA4nRfK3UGRFk2RlklWXRSmyXNTdWpn19+CIe4X/57cWospEka1lfV+3RdU294jxKQI=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"949-Y+4Pe5tX/Yx/KcUizfbsThLfNbw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fb4eee08-6b70-43d5-82a8-810e061883cf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.615Z", + "time": 187, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 187 + } + }, + { + "_id": "ca2db1d5d39fddcf12ae43089d0bdc84", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-ku5HVO0Uf9LiBn16p9FZpGZhVN0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5c55b1ff-3d3f-4368-b72c-4966d2c463af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.811Z", + "time": 379, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 379 + } + }, + { + "_id": "d426bd32e5f14fb65961e4ec48cbafe5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-Q/4wAdkfpsCvESzA9rPrW7K+MFA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e5bd3b7-7f93-4d09-a0ec-5804dcdf5616" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:08.199Z", + "time": 388, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 388 + } + }, + { + "_id": "c2d59eb8491d34bc1cba664b89c28bb1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow4\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow4%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 262, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 262, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:07.535Z\",\"createdDate\":\"2026-03-04T22:40:04.870872677Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "262" + }, + { + "name": "etag", + "value": "W/\"106-oaFRFrdyBSbCsFcxq5NujaXsD5M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "21aa8011-f3ae-4a6f-b174-7f2b02a7c074" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:08.596Z", + "time": 121, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 121 + } + }, + { + "_id": "3b8a3916dee760cb88bbcfc372e8823a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow4\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow4%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"Gy4JAMT/puq0cm9GORlVMzqlVWS+YlzAAZTO4Zp6/29lPldiRa6KMVQCRaCqastjcBNyM3bKTrnpEOfuCgTKRCs9f8hR/y823WAj5Igj1azMzd+HfPyD0ZAoqMtbQU1Wt73IynzcZ+NSFJmoqWlGohrraQuOGA2/eqJWBIlIIb5+Ob/ol+7r1dOCyR94jT9rei3B8asDUlAgUoi3P+SWSByvnj4hvh6mM1qpAPmHqVutnEX36euKooL8Q/xZEySWN8+GolDpLyCMgiP+RZshnhBZQE5vpioaZ+H8QLigj8F40pC9WgbiMGHfRvJWLSGjH0hZP+QfrKT6A14PcZhwY4LplkQGS+RPgiw4dMwE+rXQXlxlcXGvCs6y3vn8R2JzBZESR8BhHfqzr3HmmLA5U/Zd4cD/5GA3bMswsN20bH9LA9kSYE5m+1tq4M8XZl+feerN95VjaAKnna35CRpbslIQMA3tZPtbp+0wYcurPgL0JI7moQgVRwHj2VnQQWRrEFbLEtj7iqcPGkJE4oj0jRrmi7rvRi0HgsTSffnPhVgb/7OlIqnGhQ6+gRiiOmVdplUkN5dsgteBPJu/S6c5LDNnWVEgUMEBcVJQmbdEOhAFT9CR73Ap5DDheFhGYwoxtzdsshbUQnLkvZoRQ0QGhcrLoXH2v+rQ4OTs+IQ1LMu4yzah/S22IO+hOSIrQzQV1XSSjVxG5SPzC8mWoASE3nevbHNvkFbjmu+21Xug41xX0S1dd5wtpdSWwa0s5IdCTXnW/4z+d9NZY5T1L7IZhn89qnNuScqiecWiZTQnWIzJmhCL9LluTtPfGX7PQkT7FgstGcIsPcDWWD2Ql5TSc+KIWBWCPW5FUWnVCQAdRgrnb4DIRZ3lRZaXV0LIMpdCbOR1XjTjsm4ewBHDSpkkNzTjvH5ASs8J\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"92f-N0V2RsaFRLa6Fn0xL0UYmB0nr4g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3b94a65c-bf42-4e2e-843a-745b92a11e37" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:08.963Z", + "time": 140, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 140 + } + }, + { + "_id": "b06958c0cdb27bb3b80f440048fad0fd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-C1gIMwgWso5RMs/mDYxZ3Eg3qMs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "924690a5-a5e4-45fd-b805-c7e7e5c88a43" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:09.110Z", + "time": 340, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 340 + } + }, + { + "_id": "f5fa4d5ce30724b18d7d2e8d4c52eb06", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-CLVYYs3RN761UmHxFEXkdG4hj8g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a8e1b604-1bac-4c1e-b28b-e4228b826227" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:09.457Z", + "time": 357, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 357 + } + }, + { + "_id": "79029a84fcdc9b6be096e46596dc7d68", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow7\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow7%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "45885a09-c4fe-4b85-ad26-bd6d0c471791" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:09.826Z", + "time": 122, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 122 + } + }, + { + "_id": "a8425506668b7f7dd24c79b39bee3d39", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow7\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow7%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2415d8a2-0361-43de-86ec-f92b809e3122" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:09.954Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "6f657162bf5a8edafea4d88a39373467", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-WLmWTZaYEA7jvXMJoJw0qRcgctc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "916aa2a6-b12f-4275-b292-b51eb55fd1d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:10.078Z", + "time": 345, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 345 + } + }, + { + "_id": "da7b8f1aee9db97902eded34fb2e307f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-yXDtYIPYo2x8mSLCuW2pE050I2g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2386de9d-5515-4325-9ac5-9a5711132f49" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:10.429Z", + "time": 417, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 417 + } + }, + { + "_id": "22f8fb1aaad65aee0c305a58c94b61b9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow8\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow8%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f7713007-1367-487a-a8b2-10d41b7f297c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:10.859Z", + "time": 119, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 119 + } + }, + { + "_id": "a9493412f06aa37e71bb02999049ed77", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow8\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow8%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "99dbdd62-81f3-4207-be46-4cb56b1b83e4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:10.986Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "dac080469cc601d406e477766a738873", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/draft" + }, + "response": { + "bodySize": 4470, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4470, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"40e1-Q+rV0bnCwnVt71NZXImwcbhubjk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e54c9a95-eede-4a0c-a511-edb1509cc258" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:11.109Z", + "time": 344, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 344 + } + }, + { + "_id": "9df4e0417186278cfcdb33eb6f85aafe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1882, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/published" + }, + "response": { + "bodySize": 78, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 78, + "text": "{\"message\":\"Workflow with id: wfEntitlementExampleIsPrivileged was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "78" + }, + { + "name": "etag", + "value": "W/\"4e-gIij0YPtc13KQvXr1PGQiqJiRfc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "317d91ec-687b-41ec-abac-ef8118e446df" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:11.462Z", + "time": 386, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 386 + } + }, + { + "_id": "55a951fe87b006b390ca2205302d9149", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1976, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/wfEntitlementExampleIsPrivileged\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FwfEntitlementExampleIsPrivileged%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a38e4bc9-da1a-4dd7-800c-9047152e5abf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:11.859Z", + "time": 125, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 125 + } + }, + { + "_id": "1d31c687786579e4ccbdb2dd9f607963", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"wfentitlementexampleisprivileged\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22wfentitlementexampleisprivileged%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cd5d31a9-8721-4b5f-927d-51d332e74030" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:11.990Z", + "time": 126, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 126 + } + }, + { + "_id": "909e2175c4ff06b58318849cb58b90b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/draft" + }, + "response": { + "bodySize": 81, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 81, + "text": "{\"message\":\"Workflow with id: phhBirthrightRolesRequiringApproval was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "81" + }, + { + "name": "etag", + "value": "W/\"51-QRezKwCScpSwPmN+tbYjEg+0M00\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b84ad039-ba46-4054-b996-66b7170dec45" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:13.151Z", + "time": 327, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 327 + } + }, + { + "_id": "8a4e20cfa54c0ad3da9324f1e734b0c3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1885, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/published" + }, + "response": { + "bodySize": 3194, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3194, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"22c7-Fxiv6DPSM2Tzey4E9sFb7V2q5oA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6928d1e9-e9eb-4c99-8e74-879a53cbc6df" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:13.483Z", + "time": 341, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 341 + } + }, + { + "_id": "9985037daed555ed112401d63b457c2c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1979, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhBirthrightRolesRequiringApproval\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhBirthrightRolesRequiringApproval%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9b141a03-8f04-4da3-bc78-96f9d698c4e1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:13.833Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + }, + { + "_id": "d6af37d571f17f146c5b128b4de20338", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhbirthrightrolesrequiringapproval\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhbirthrightrolesrequiringapproval%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3b53b11d-ee5d-4719-980f-f90aa2635d40" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:13.959Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "ad1f659d42778f56b814b17061da4a7f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/draft" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhDelegatedUserDisableWorkflow was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-XXvemAx7DjeH9f0KAf4KNtJxYvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7931e7f7-8c66-43de-9e3c-4d62b64bc2ca" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:14.084Z", + "time": 324, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 324 + } + }, + { + "_id": "fc5fb53194142dd5b7a7934978ad1a87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/published" + }, + "response": { + "bodySize": 5988, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5988, + "text": "[\"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\",\"Dx56KYExHoKqm+VtoA4=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"47e1-6wVqvyX+RcCEUSF6iXcyh3XQNw4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ffd23cc4-f2e9-484e-9c47-430f363b7455" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:14.413Z", + "time": 339, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 339 + } + }, + { + "_id": "50ec0675fbc8cdfecb7ccdb78b6902ff", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhDelegatedUserDisableWorkflow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhDelegatedUserDisableWorkflow%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 286, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 286, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-02-23T23:37:29.474267906Z\",\"createdDate\":\"2026-02-23T23:37:29.474219019Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "286" + }, + { + "name": "etag", + "value": "W/\"11e-nQNdFYBG0TBYzyHC5DcPiPAj0G8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0462fabf-ffed-4445-850b-208b5618f649" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:14.761Z", + "time": 130, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 130 + } + }, + { + "_id": "e3f19a021d7c5440d501370447983016", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9c10b680-a790-4f73-95ed-81b345f0f3e9" + }, + "response": { + "bodySize": 1167, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1167, + "text": "[\"G3oIAOQ0NXt9iXlrDJae5ErtLEOvDrJoUHSa4YlrgsNX0TdGDSOKBrQbTit0uPYNhwNOggqyt83mGm59+znMdiD2AaS17rCnC0GE69MTVtronCZVvB000I9gOrY+LrDAfHMliDAorLgOC9S4+uOvc+07RPikjwtrfbChk9b9zG4HjYO9WucTe7y+9p0lPvNZ5xtYwBeh3koHxDs4KRA/Tbj3ftu2BXr+n8rs1a400txwlHQXwWOBd/3e8Q5tpa0eEP+8w1ohAjUZPFWLrhmO2tiEQTuFQWkistJlZWEZ+nbB+5SqLxioadTJK/ROOAyWByWyDzYYWODSK20QIZW57ufvxrqX9Zq2zytsvY851v0MC5RpqECE9/mL2GpJjWmKQyckFiG58+2gsacLsd7Y6un5pt9YGsTOdCqv+/lG8PFlrQ9YwLEFEBR3B4WIhTjHjR4LZN3TId4hqv9m9gOikAv01g6aEPljgUGpfrtvbyC2tB20QGY748etz+6eff/wKe1nKvkxCuL98fj7sYB5k7zxLpPI6JP1qFNImHPLKG0t2gUhfHAyuAidrW5aOWyKa9RKJwwlO5RcSmd0yM55inuZ1i3ljdIGtPYHuvYxD0HU/N5vgx29lmdjRIqG2FSGJQ/Y902/sZJ2lsqUoPNPYN+kLLX0NhvkLifUkjcMUnm01nFllPUUFJ2lUEXr5hWGpgl1TQK9KoSWC+WaNLnUQCc+0zjT/PmgoefET6wj2M8HDTY7+8igpEYZ5mEzGY//p4rnTQrCNF4qR+lIoK6qYm7GYG6qiORscMTpLHkplbIqaGpzqE1tGAw1NFQFz2SCLJbgBCVUs3sJ+tpz0uuZBiVIS33BncJgVP/69IbVTZr4DxT8B8u07mdUnf+uit4kl7KXxhispBVqrzmmmjM2SSmYkG0NRGfZTA4+m4KiyYza8oC5ZIGSsqm2chmMIvfS97aOS2v913Qc6UzgDvH55drHTPuuRv1uZAdLud8mm51F0YGRBkAGt7YyqtdPnU4GoUJz3HQ4/O8F6CXt8+ijFoXeZhE8W88xucA=\",\"UTenMBiq6EVW2jTeFAVY4N9BLyG6BS40U00zQbzDx8bqH6VJEEFyaZFLlOonqaIwUfMT9/IPWHbjDJiX4S5qeVLaOaWkN3/A4wE=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"87b-2RVVi10TQk2eTMKiwc5k2YgcewI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "770def4e-c323-4073-939d-9823ba39322a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:14.898Z", + "time": 129, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 129 + } + }, + { + "_id": "36649ddd5ae4900d6697404f7cfea519", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"9c10b680-a790-4f73-95ed-81b345f0f3e9\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%229c10b680-a790-4f73-95ed-81b345f0f3e9%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 506, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 506, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-02-23T23:37:29.474267906Z\",\"createdDate\":\"2026-02-23T23:37:29.474219019Z\"}},{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\",\"metadata\":{\"modifiedDate\":\"2026-02-24T00:52:45.670908772Z\",\"createdDate\":\"2026-02-24T00:52:45.670896494Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "506" + }, + { + "name": "etag", + "value": "W/\"1fa-aFTVKjEHL3NO62vZIBy9sGiW0v0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "55e7484a-5162-467f-889e-8b60b260759c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:15.032Z", + "time": 113, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 113 + } + }, + { + "_id": "92b77c262e4796dffe79161a6b193dd6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/fdf9e9a1-b5cf-496a-821b-e7b3d5841252" + }, + "response": { + "bodySize": 968, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 968, + "text": "[\"Gz8JAMT/n6o/rZw7IxepMyb9947Mk8UPBgWwOz9/rdxnFP/8t9tUQVVWFbS02nV3lhgtcC5n04Yvt8ws/lbgoFf00zItPKP24PPfyA1BYBrHTJGhtYyUbQP5bDbBn8zicSJwaAWBQQ0ddXKZ9dVqyMqullmbL/uMmr5QVVsu8yoHh3XxtVN60LI39M67iXzUFCB+/ubYO/80GLeHOEMrCEzjeEOG1jKS+hzI32jj/K+u7Wcmjr+edhAFR1iNtJEB4oyV22ychfh5xt8NRQlxBl6hwLLzxcD9pKQEH2h59H5wTOgEZ9QMcBn0Skbt7OcXwgd63mpPCmKQJhCHDo82krfSQES/JStGiDOspcQXus5x6PBFB90bEoOF+ZFHXFWggD0ZzcenO12cKoOzbHD+NiQ5Hq86JY7+wz5U51HhdNHhepR2LXFgb0Jg59za4LCtXfZ44wFpCTBbs8cbN7BLG/Wo3nka9CHQfjh5bNIXJlzCikIQFKWUPd7Eejx0uPFyiAAViSMthiMVItrcd3uYISatwVg8+5+9d3h6pm2ISByRDqhhepTLF2m2BIEhhPizUZP2xxsZidwQd6QQMXxYpmQkTwgb8+dAnk3zYikN/cxZ9kQQ4mN3QGmKgHu4RD74PX+CrBz6xZNDh9dbE3UowqM951p1mH1BusSI/HcayyHB/a8Rar569/oNsxDBQdpYHm/YE7EnUCOKMlSriCVJRvIxSh8ZLwhbP0kIqnLtpU0avSSrcHX31qoXyIX4DqI3ru/czlJKZxl8ykI8TCdl+WDtuP53KpGFauWfw7CNuXrnDEmLfBVMNkieCNbAfxDiw+D6/7R6J+55H0w4kFvBFPv3cDCTEGuMBOxZpfQ7cdRXhSEE8zcRn47arTEcG4pSyYsCuGKibL0I+SKvs0We5cWnvBDVUpTdLC/bH+AouhJO4/uUC7FsZsum6Jqi6eofSAk=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"940-WmSTA9uCGJvK7zt2eW3tlbMLeNw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "316caa9e-592b-4f7e-be0b-0fc524af3630" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:15.151Z", + "time": 229, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 229 + } + }, + { + "_id": "12a358d93d65bdda1c1e23407ca11c0b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhdelegateduserdisableworkflow\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhdelegateduserdisableworkflow%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 988, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 988, + "text": "[\"G2sJAMT/ls3TlXlnojabyrHLthP5UVqEFEi3DD+t+3rfrXF23v9OQhMaPPrkgelc4QQ1sV4JzvFsjOa6gQMR1+p3DehR/x+2XG8jxAZHq1mZ09UQTwNqKbz/qVwTBLrVKlNkaCkjZX0gn/3u4FNm8a8jcGgFgVa1c5rLjaypFm1WzmuZzfKNJqNpU6hqVm7kVQ4O6+KJU7rVsjF07l1HPmoKEE8vHD/Of7bG/UAM0AoC3Wq1TYaWMpK6CeS3tXDznXvsyxLHm6dviIIjLFa0lgFiwMKt186qk/22pighBuC1CvxBfT9wPRUqyyX9kfpicHToLANqF8hq9UJG7ez6A8IlffXak4JopQnEocOBjeStNBDR9yQlAjHAWrP2kNdpHDrc6qAbQ2TwF/5II6OqykDfCe3GdZ8Yd5TBWdY632FJg8frS4kjpbEO4zlQOLN02FpJu5Q48CM52A07MgxsPlt2sK2BbAkwZ2YH22rg60fmQJ17avXvjgOYwGliHT9BuJKVgoBpaCc72F5vDR22vWwjQE/iCKAiVBxrG883giaWrUFYNWuR7xWevqgPEYkj0i9q+CFV1q00PUEgCyH/ORKd9n/bMpJqXCcB30AMUU7ZKFMykiaS09hNIM9+EKZTHBYzZ9mwQ6CSAyqxoHp7iXQghlRBW37TJZ9Dh5PeRG0KMbc3bLEWTAvZDYyI3Ki8HALc/8qhsc3zk1MmoYSD7DR+sM0+yXtojsjKUK9FJZ1kU66i9JH5heSMoASE3qWXNu5NpFW45nfHqgXQcXZL0RjXGGluKaVSBhdZyA+FojzrcbwwyuJExjBcJO6pcc6QtIhXLFpGnGA9gMyEuJwNu+aDFvcz/J5FTPsWa0qmMIsSbI0ZgryElF4SR02skIXgl54o9Y61vTEca4pSyScF8NxKUe1dyCd5nU3yLC+u80JUG6Kcj/Jy9giO6llEHny9ciI2pqONaTGfFtN5/YiUXhI=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"96c-PCat13uKjvG+ELIfnx8oH8GAei0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c4363559-10af-4718-aa4f-fc141fef8478" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:15.386Z", + "time": 148, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 148 + } + }, + { + "_id": "d60d691416c293d72aed6e6869ed2aaf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1858, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/draft" + }, + "response": { + "bodySize": 58, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 58, + "text": "{\"message\":\"Workflow with id: phhNeDisable was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "58" + }, + { + "name": "etag", + "value": "W/\"3a-P5saSw0lCkTOzjQ3s7XPpznTdHM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "71bdbdfe-32de-42c4-b0bd-1604734a14b1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:15.540Z", + "time": 341, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 341 + } + }, + { + "_id": "21730d324ecc71d802e367d76e2332af", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/published" + }, + "response": { + "bodySize": 1647, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1647, + "text": "[\"G6AMAGQz1Xp9MfhYThjZKY0Z7bUt1blWmPEwIiTzlga9AJmun59rEa/9UkRKfPJxb7chIn87lYR6WoQsZokUTGrD3EhwjzbTi0oAXP+AZ4wBLe42mxW9jupvE6FB9luiNB4wHYRn7TqFXq1YeKL9JHclZuapx5/6++OO0A4+KRlcC92hXRrUQjtF+9+zeVT29797/XpweTmE4fjwvD+5vPXj/J+zD/CaEo2+EPyWq/SkaLCYklWFoPmP9ewzMj2U3wrtLEsDIvZDi0UqocFcS5/9qQuZCf3cAi3XlKYbgwgORYvDeIShd0aLiz3HsAdfQH35L5UkkkJVEj1tpFjCrxKEZm5/DQn0nsH3BdrVixzD3sKx4zsvS74Ngw7m9T+wHan86SX620TazK+YSa/yIUAneN92pNLM1jHM5leOHRd5hGfHAIsFvKPiFn2uAiXDEDm4N9UxgG6D69v/oYPrJPCysG2FfGhmcfSLbafWe+5pwd2gixns38/0IcyvtOWR+CnpzmqJo7YxSEy55vQopZJ8CE0+yOGGVw8Ki6okC4cGHDo0fD7HAH1mzYnalMfGYdd1QauMPL4qMTOMo1Kg6zp5HdnMX700gg+vLTgsJH9gUQng+l8qyWPspT3l8vPSqiSwAV70XoC98bdK8vizF79V6GJVC+BwTdvsbUyFxKGFmeh7tOsYgL6Bw5lHg2AfZg5nRtE9hkgpqEMLDquSrPyWzBjviP91DWWz9TGZdQwOHQNMRcLoLdWailYCcEyOgOb4FGusq5I4NMXBKmABU1Aq4AQTWhjb/1hjCpCD0+BF/CNYTFA7+O9GzBwHaHSltzq3+ClXLvAKlnNAdXjWbIcsb3y/GYSjViURyARbndpd1U1DUQEcbhW4zKFt3svadQyGQz6rZYQAug72wWH9AWK+8v86NY8cHWBPn0ejAQBgQlL8A23+IOVxJGkjD7lxeH0J0Ai7r12iFqw7hTpPLFzfxbAyreIX3HvhxuEqw+6Fs2DJkSCFzQkHD7lRc8OxCjf5aYlDh4Ym8LLOGiNBT85TPYn3W8lCP1b4+Nv1CrRI5NEx9JomOqRxiAY1/jKHRj62NcfhsdGcPi+cVdpm3Xh9/apT26Ta6L8r10DWGpXom+J4guVQKqChqk4hPIxEsjQO34hkgdTvmQSCjnq0QmrHPtrT\",\"Tex0C/+7qQV2BQtyBXvaFdAApitMjh03hlG7ruvhO3zOPlDo6A1wmm4MXreFZ+lXOZCifUbisMqB0D7jA9qz5aHBR7RHp6cmlWIekUVt8IYDGuQcKPd5Ef4WeUz0gXe15DOW6a2jvpa82+VPnDOlxSoVrhBhpjchFt7O7/MdCQXpso3XcAt1lM61ek3Fx1TAvNinQNIlY+i49fIVDa5/sy4XtKi170n1//NS9Zg+zJPBdb7UWdH+d2NwKCo+DjCo/Ya2/n941G7vmFnRPk8T0EOkrLAtOF0+xC0lJvG5wm/FS3mu+9BnvnaG+ClltY7nX8L8yl3yj2svku8fp0Ue8gsUU+/D+RkV/YQYKf6cwkCiVubd606TwRp/yjzEUcYaXozg0Ufny/b48vLy8vji8uzk4uQkoIe1Z4dHp8vj5enh+en5xRR9g1IVLS5+3C6gwW1Fu6ZIpQk=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"ca1-7S7R/DmhuFMhLClHlp+MyNai0Pk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d216bdea-cba4-42c3-abde-aa9904af6d96" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:15.886Z", + "time": 334, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 334 + } + }, + { + "_id": "5e7b503377cb83d4bb18c3901fc29746", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhNeDisable\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhNeDisable%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3f506ad1-92ad-4e49-a876-1a8c2ad649a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:16.232Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "fb4743a9a7983edd94508b5b7ab1a9eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1934, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnedisable\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhnedisable%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d33b124d-0a6c-4b39-a445-a20f173bd017" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:16.354Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + }, + { + "_id": "4493130f860e0b9e553ac53b515d3542", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow5 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-qBpbruiB0bXLR2bVIOVJZfGP2Ns\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b01c4c82-7c52-40eb-866f-fbcee5f0e888" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:20.925Z", + "time": 412, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 412 + } + }, + { + "_id": "186edfd2d4c88080641ac31e89f8e6a3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-XsXcKA404baF7YrgvvPTn0WEFxU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5b6f9ad2-8113-43f8-9f97-75306ffd3da7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:21.342Z", + "time": 453, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 453 + } + }, + { + "_id": "8e237cd193960baecda1783b237cedd2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow5\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow5%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fbcf07f7-1305-4760-b786-96014c874610" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:21.803Z", + "time": 162, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 162 + } + }, + { + "_id": "6b9eaf36176f60f136161282792b5513", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow5\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow5%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d6094b90-4480-4b25-85b2-7095322bcd75" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:21.970Z", + "time": 180, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 180 + } + }, + { + "_id": "0778b875047c9c823bc46dddd54eaec7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow6 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-cWpDDMk+B3q5+OhjV2f+W63MX48\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7134cb72-82ae-4d17-9040-6165eb057b86" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:05:22.156Z", + "time": 396, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 396 + } + }, + { + "_id": "e263fe010536546216aea608995fdf13", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-BM6tyrCqwTf8KQ7UX36cyRNgfrA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4bdcd490-a115-4f30-9a8b-16541887c200" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:22.557Z", + "time": 361, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 361 + } + }, + { + "_id": "1f79bd615363f6dd13137103ff660262", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow6\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow6%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a6859d90-4299-4bd4-9ab5-99c29dc941e4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:22.927Z", + "time": 172, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 172 + } + }, + { + "_id": "f7b923fe51ec7a0a08361cafc737b808", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow6\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow6%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "562b15ef-9e81-4ff8-9a0d-073fb5f1d244" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:23.105Z", + "time": 183, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 183 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/oauth2_393036114/recording.har new file mode 100644 index 000000000..99f373b18 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_no-metadata_a_directory/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:04:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:04:59.043Z", + "time": 88, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 88 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/openidm_3290118515/recording.har new file mode 100644 index 000000000..265de11b8 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/openidm_3290118515/recording.har @@ -0,0 +1,1597 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_no-metadata_a_directory/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:04:59 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:04:59.138Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:04:59 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:04:59.338Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + }, + { + "_id": "4ebf3b086807fab20479cdd799612231", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1931, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestAssigned" + }, + "response": { + "bodySize": 832, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 832, + "text": "{\"_id\":\"emailTemplate/requestAssigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
.
\"},\"message\":{\"en\":\">A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Request Assigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.359Z", + "time": 123, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 123 + } + }, + { + "_id": "d1af2e88bb6b7669a4442181a5255f88", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1933, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestReassigned" + }, + "response": { + "bodySize": 832, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 832, + "text": "{\"_id\":\"emailTemplate/requestReassigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
\"},\"message\":{\"en\":\"A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Request Reassigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.363Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + }, + { + "_id": "b0b331a468e01a40d4f5739031461249", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1931, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestReminder" + }, + "response": { + "bodySize": 672, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 672, + "text": "{\"_id\":\"emailTemplate/requestReminder\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A request approval assigned to you is awaiting your action.
\"},\"message\":{\"en\":\"A request approval assigned to you is awaiting your action.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Reminder to complete Request\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "672" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.365Z", + "time": 115, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 115 + } + }, + { + "_id": "e64c6b68abcc8cb064b7c52303d1046c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1930, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestExpired" + }, + "response": { + "bodySize": 642, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 642, + "text": "{\"_id\":\"emailTemplate/requestExpired\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A request approval assigned to you has expired.
\"},\"message\":{\"en\":\" A request approval assigned to you has expired.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Expiration of Request\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:01 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "642" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:01.367Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "bc6ebd9cc6131623dfc43c1baa45d26f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1932, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestEscalated" + }, + "response": { + "bodySize": 657, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 657, + "text": "{\"_id\":\"emailTemplate/requestEscalated\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A request approval has been escalated to your attention.
\"},\"message\":{\"en\":\"A request approval has been escalated to your attention.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Request Escalation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:02 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "657" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:02.449Z", + "time": 57, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 57 + } + }, + { + "_id": "ac10ed5d7768dafd2dd1b9f0ff34b8cb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate1" + }, + "response": { + "bodySize": 511, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 511, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate1\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template One\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

Click to reset your password

Password reset link

\",\"fr\":\"

Cliquez pour réinitialiser votre mot de passe

Mot de passe lien de réinitialisation

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Reset your password\",\"fr\":\"Réinitialisez votre mot de passe\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "511" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.041Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + }, + { + "_id": "5f5820c9bb25d896efc0d7ea5e29638a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate2" + }, + "response": { + "bodySize": 304, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 304, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate2\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Two\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

This is your one-time password:

{{object.description}}

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"One-Time Password for login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "304" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.044Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + }, + { + "_id": "203d396202ec59f80cf2ceeaf7211ee9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate3" + }, + "response": { + "bodySize": 401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 401, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate3\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Three\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

You started a login or profile update that requires MFA.

Click to Proceed

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Multi-Factor Email for Identity Cloud login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.045Z", + "time": 63, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 63 + } + }, + { + "_id": "533fc1b70b1f2a683584ca8b128a468a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/frodoTestEmailTemplateFour" + }, + "response": { + "bodySize": 1379, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1379, + "text": "{\"_id\":\"emailTemplate/frodoTestEmailTemplateFour\",\"defaultLocale\":\"en\",\"description\":\"Frodo email template four\",\"displayName\":\"Frodo Test Email Template Four\",\"enabled\":true,\"from\":\"\\\"From\\\" \",\"html\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"message\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n background-color: #324054;\\n color: #455469;\\n padding: 60px;\\n text-align: center \\n}\\n a {\\n text-decoration: none;\\n color: #109cf1;\\n}\\n .content {\\n background-color: #fff;\\n border-radius: 4px;\\n margin: 0 auto;\\n padding: 48px;\\n width: 235px \\n}\\n\",\"subject\":{\"en\":\"Subject\"},\"templateId\":\"frodoTestEmailTemplateFour\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:05:07 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1379" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd493186-7338-4022-8f7c-934c958395fa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:05:07.048Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/am_1076162899/recording.har new file mode 100644 index 000000000..27cdb74a2 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_workflow-id_no-coords_no-deps_f/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:11.485Z", + "time": 108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 108 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:11.716Z", + "time": 125, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 125 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/environment_1072573434/recording.har new file mode 100644 index 000000000..9163f1715 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_workflow-id_no-coords_no-deps_f/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "abaa5af3-3918-486b-b419-bc7252f9af7c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:11.847Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/iga_2664973160/recording.har new file mode 100644 index 000000000..2361323a9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/iga_2664973160/recording.har @@ -0,0 +1,254 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_workflow-id_no-coords_no-deps_f/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "b74ab2fa7c61f94d8bbb9a49203978d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-J5idz6dFGoETw6pxxTHAwhsl8TI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b0b6ba3d-0b7b-425b-98c7-37e4b1db5986" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:11.989Z", + "time": 567, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 567 + } + }, + { + "_id": "e2dde589f8c1fe9b33ab2bdde047c5d1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-moU6e5rau5hrulM9d0Bk/14tTIA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "eb220611-bc55-4555-a4d3-d364041a2988" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:12.567Z", + "time": 381, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 381 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/oauth2_393036114/recording.har new file mode 100644 index 000000000..06c715da4 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_workflow-id_no-coords_no-deps_f/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:11.615Z", + "time": 90, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 90 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/openidm_3290118515/recording.har new file mode 100644 index 000000000..080ee5a75 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_workflow-id_no-coords_no-deps_f_2230247080/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_workflow-id_no-coords_no-deps_f/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:11 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:11.714Z", + "time": 69, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 69 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:00:11 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9f8c83f6-6882-4dcc-92f9-fb6137df0f67" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:00:11.919Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/am_1076162899/recording.har new file mode 100644 index 000000000..999669a31 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_xNAD/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:15.502Z", + "time": 113, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 113 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:15.738Z", + "time": 121, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 121 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/environment_1072573434/recording.har new file mode 100644 index 000000000..3ba79a4f9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_xNAD/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5c84cf38-4e99-424f-a89b-a098d86e900d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:15.864Z", + "time": 62, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 62 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/iga_2664973160/recording.har new file mode 100644 index 000000000..5fb804683 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/iga_2664973160/recording.har @@ -0,0 +1,8546 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_xNAD/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "f64029142a38862fb58bc7ec0e44e61d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1891, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryString", + "value": "" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "1" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_queryString=&_pageSize=10000&_pagedResultsOffset=1" + }, + "response": { + "bodySize": 32105, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 32105, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"74d35-qWieTs7qnZS0N0TSir7knGB/7E0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ea5ea845-4bf6-4cb2-9343-d0454c1151e9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:16.002Z", + "time": 632, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 632 + } + }, + { + "_id": "df1df35782bd7bd15c58099c61b4fdf9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/draft" + }, + "response": { + "bodySize": 3066, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3066, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1e07-860ugBStKdGjb9IQldTjrF+R7+M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "67c7f36e-6f4b-425b-8284-a8fc6dd39218" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:16.662Z", + "time": 383, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 383 + } + }, + { + "_id": "4d82ead8d2193d901867899e8d28c709", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1867, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee/published" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: createNonEmployee was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "63" + }, + { + "name": "etag", + "value": "W/\"3f-8uynBMjyUuxflpNVyORqRlXe/nU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "795dc0e9-b6d2-49c3-8e71-f2ecbd86a668" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:17.055Z", + "time": 378, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 378 + } + }, + { + "_id": "a5d0fd5d852f1ca18167727df44779de", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/createNonEmployee\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FcreateNonEmployee%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bfd9f462-6e56-4920-ba17-a9048b473542" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.443Z", + "time": 115, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 115 + } + }, + { + "_id": "01ec95a729c1c9ca93f442c66fc8462b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1913, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "action.name co \"\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_queryFilter=action.name%20co%20%22%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 1367, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1367, + "text": "[\"GyIPAMS+peKfrp69BhyaGqckv5Tq8SDxsDRRC2ClaPj/j73+o5Si9ZtGpFeu+t33K3CZOOAOHO7MBlxJa9wZUZFMZTgvIiEtkInxV50oJmsM9r8TYyT/CNgTq1sIFplS/muLb8O8vZdgMH6fsCcOFyUsDjdLMBwuqitJkfTeNApD/rgTLLY4jJRydGGJFGa7v1+f5k4HrfkuwTCcwpqwJ8I0Z4qwJ7ZIueawrdlNK5+tp/WecpzWByyeieJ1/P7trsOUP4JheneKj1WdKCfpo59h4VBKYSfWLd9RO/1o/FRX5D5E755uJjiOmULmJp+6XFeI7IETBkxXMtCB7OVjnr+XdH8/5RH2xB4pTB8+HiMUhpLNgr6T+KYbrR5HfHoG9qGzt0oo5iBiSnbEAMosiMetPqX355GJysOH+M3q6QP5b9ZMD4rSx1qZZvp+ZMRNGoBIqpIzH70+Z2y+hCml3MqtMEwDchFYHAqFwU85Q7vnwhr4nVK+ZNCcy5utGWjNU/74ez6f45kogmF55q3sHfm0DEYQGH7ZpjQywtNB648qEPo5UsqA0yYPi2LKMvzLI30pglbV0HW87uqKm2Aq3ksyPHS+l8EZP4QaDIubZj1Z/FWmlK/DtoAh0beARRUi0D1/89Xr3ynlPxJFlBtDyi4/E6we2g/idKLKGSNdENyLquGmdpJ3Xd1zGXQIqlGVVAoM90gHrGJYKDvvsoM9odaH/9xlgoUSquZCc2F+V9oKZUV7bXX7L5ijwA8fQFkjrNTXVrZNJZQ0/6ZrhWrDKluQibmATAoLtrprkiqBiXgKKl0CE3l9UZp0oHLukdLVSXUwpLo4pkYFiohDMGw9ksQfdgFETD7pUxk+IO1ZRcSB6C2sYgYHqKiZD/80NzN/zP++lVtR7czoM4bcf9vFsZg++J6ahjedcdxQr3hbUeBaCadV440JYcYfKRXjq1xdu0Zr2QpRabfsK5NZt1Uzb7GP45sp5jGNPfFft5nSr/TuOcVpfbze97gdbq41bx23mX50CyWMBjxuM/ECRc/gcUpvldy7jyOf\",\"GpGPIu/Dkn4ry4WRBmGXZ9F0abEsfGyN75J2Jdkl0/DSXI04wDlIwjDr4h3ChfmSat3PQJ+7z0tfYt0rOahWc286yU3wHW+1Urzt2kE2cmiEbGfTXKQ1H+5hH7fZU1wppRf7VsCb2V7lOB1TzFuIsuAgaodC+zjyHTDEt/jg38auIfoMQ9v0ohYVFzrU3OhG8a53NScRjCbR637IXjzp51xxqbjsflfaGmVNe+1Mvur82T1obUV3rdqu0p1p6n9Rat8kae06eB0yxe/oI+x/ZLvdGP5UjtBn23PNnKVNxfLX1AU=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"f23-tRUZL+mJXq4toBxAM+DDZnCw/p0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1bc14bf0-8cdf-42a7-b08f-f8433aa88bd3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.445Z", + "time": 174, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 174 + } + }, + { + "_id": "becd8161aa38dbdd01217e419a9c2ffd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"createnonemployee\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22createnonemployee%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "868667d5-5fa6-4c95-bafa-815ed641f640" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.565Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + }, + { + "_id": "dd4666bbe759dfe89b2755bce7090364", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1870, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/draft" + }, + "response": { + "bodySize": 5372, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5372, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c2-6XxwOcup/p3s2d08P61h1X+8kcA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "95c92939-b6ca-4c4a-99e9-d0e5e88e8987" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.685Z", + "time": 346, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 346 + } + }, + { + "_id": "7464f928ce1a61e6481e05f5de3a3701", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1874, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant/published" + }, + "response": { + "bodySize": 5376, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5376, + "text": "[\"G8VXRBTzAVCEDHP/+Tarr983b3bXkBbGx52ib/q4yDW3Ul2y9QxKjMRKMgnF+P73s1fIX3KtqzNEqivr6yrc3JkrkmwEFZJsOR+AZubeB4F/TpJSdj8g2N0iCvVr/EcWqkomJZZobIUQq3xtjNxeHwoi47RhZSJOm7tHSGsg4SmFw3RGJbHBw273VjjVvTkcBtUJr4z+aIX2yFCLPVHVtXiUyxcu6g9qOin+R3LwyuiCPx1Yv481R+WU0UpvkeGplyfudv78vRgcMfxp6YhNwdB5Ojhs/jlLzS/s4DV9FMOdcI+LMuv6Ku/SPEvLm9Sb+w3gTrhH/qKSFsg2DdacUdOzv/V04MuOUTE0NnocBoZm9J3hMO3V1c3m9zWK2YDNadqDaBd6l2WZjCpRRHWNE6trD9ysv6zf3T2cQV6lUd1WXVZGON3LW/hupDqG0CdkKDpvrJpmUhKbM56l2Q2wQY5nC/V95HJ0ZJcc4QVYOvX4nXzWkp7DY4980s2TJvtPdB8qiQyVWz8fLDnX+h15O9LE0DRfcNicdZckkgMwtPRAnd8yXjinthXkGZ60fe/plo64YgiGmKZ7hnQk7auGsoak6Yx2X8IGW5B4U/9KJHHi5lUidSMPfT7Ke6UlWaQqMOyrOV+6O2GTMpTCEzZnDaWZ3m34qzlzxy/4xSy9iC+S7KKILoroIo6iaD6fh958vt3ceqv0djbHaWJIrhODbF6yJtd0fwKSKN7dzbvC4t5gup8Y0vNBWUXYdRWga8Ha6mKqee75oOyTdY4fwL2SFrHsvRefJkd9bGIhjEeK41okRVXXbUF1LT7IPxMQaqeB38WgpF3YeMbiThOyDb6xbCfo7UgYhVaQRtObzTOf6KPw9CROizwuyqqM4jwTdSSiLNOODR7V0cpw5bHBwWy3ZEOlezPjeDNqrfQWIk4Gtq1CE3kMjq07Eo7zS665Pgq77GU/WMHaJu8absn/LqwS7UBuNr8kxqrKnyWsCi4YbsnPAiUDus/UCzWMlm5IOKNhBXochip4JIRqlJ3ZxiPl2tsTnLkG4LyDTfsAK7gmGYpyHxrqDmaB2orlWfMdL3RHS/p2twwc49qWDIKP67uAwXlicJ7ml1yDRIyVCNkLhkpecj1xvSrK8zCjuXBqUxs4Wg4QvD/JBtbWGguWhFR625aDw5M=\",\"8jtQEpwXOQ==\",\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"57c6-RnSjWjBhrRiZFIr1kDdPqG4Z+Cc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ba95b5e2-378c-4b96-a6d2-9d9c711efa7b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:18.040Z", + "time": 386, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 386 + } + }, + { + "_id": "7faeb9c1208562a6e4d98d665f6e21a7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1968, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhBasicApplicationGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhBasicApplicationGrant%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "24b05b99-c2a2-4c0c-be2a-8052e7c159bc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:18.439Z", + "time": 127, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 127 + } + }, + { + "_id": "da31aae913b0bb50d654fc588d4ea628", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1946, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhbasicapplicationgrant\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhbasicapplicationgrant%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b1d640c5-4585-47cc-b28e-b647f462d086" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:18.572Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + }, + { + "_id": "c2722375c9c9b718b6f19547227327f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/draft" + }, + "response": { + "bodySize": 4414, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4414, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"3a9e-n3X0PT2bNM3XH2IHDXx8oEGM5sM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "263cd8f0-6f6d-46dd-b4a0-7c7e07a89a7a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:18.692Z", + "time": 342, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 342 + } + }, + { + "_id": "402830a399173e74438a37f7d1e98a5f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant/published" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhInternalRoleEntitlementGrant was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-26XmFz97QUwl4jKEa6hIqcUFAJ0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f5f6ea6d-931a-4640-a197-1fdfc5dbbcd9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:19.041Z", + "time": 328, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 328 + } + }, + { + "_id": "a933b643610f51e525b257649e8dce95", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhInternalRoleEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhInternalRoleEntitlementGrant%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4332f34a-83e0-4fa7-8758-3a3bb65163b2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:19.380Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "8bb40c168e519d2948ccfc6b426ec2a6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhinternalroleentitlementgrant\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhinternalroleentitlementgrant%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9434bf9d-292f-418d-ab30-d2f3231e26af" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:19.501Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "f5be5a994a5fca0cf6e0702f8cf142e0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/draft" + }, + "response": { + "bodySize": 3050, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3050, + "text": "[\"G3wdAOQyVXt99/YKSBtiU4dO6Uqu2k7p0MQQsZKRUCADgCqjwf2v/a8TKpVDyn46oRMJbWbu/bb7vqnMnd39qvseKsmkingkBTFJpPghEWmRx1Dt7jcIiByxx3R3eUGjUWD38HBDx/ee3HNHKhBytGpPW483sHQc9J7coH4xFywc/A2cutj95euCaW1aOHdIzuPag/GmtcbukONllEe+23z9W9V44vjN0QHFhKMP1HkUXy88Ip2X/075H4NJNZnN55sJzeeKz/L3nhw0sC58UI3RijnNBsM1BnnBkcQFLZ3C20AdaXbWiTOhwOB6Qo5tH+qWULluLSGjx0Fh+6aJa46y9qPAM/zom6tEgU2725HLjN22icSv3cPDmtsLGLuD956cxHQhbV+yS4C/UnrvyVm1p2RnDmRv1J44+L54uxQu0l5bhAToIQ9252hrTrCEKpVfizVcV1v/a7FO9ScxXaDZmVZBwRL+CwL3o/fZz57cOZG4L6ljdH7dGOK+9cyWcbiwb0A/wUvTBHJMwH3vyd2oPYE/gsTfLlwdJ0q8jxy+SoT1SVzTV01I87DkpVe2W7dHzPaqS3pPDpaP4OyM0nOlC2kbCmBgCeVC2r2xPXFi/iyLoigK+OMPwGtntmcnbySpO7uGt8EZu0tMmnVKvw3KhWTMgRUsTQV8aHN9vZA2Srv0Znchwbq6S9GwKt97csmSgUCj8KAcLB2wgxcqECzhXPBCBYILZNsbpllo/357SzI+XVRfFbL6kba6eH+wTp2bVmlYwkXaXkkQgEJ1aBWXVqLycSCmkDuVVqK3m+O8LV93r0zzlLdXpnliax3yWqoYYNps3d9W04naUDSWKOTgAFIwkihaWyRtXHSV0mMU/AQJu+nEONi+abg8xC5jqy9kJo6WV8i63Xx/wKb6YAnbrezPqEwMCdKKQ9vFAEuTJolxy9YyBNsQxFMBS2B3oqr6pRqOmPmgtUwESy1jQkm4gAvzCZC+uB5piRBb7wvu7FGoSdv9rWEJK4k8Z7aj8EE5ozYN+eS6a5YnEo32XWZl/+3muzfRS2DsJLk3O5XvoG6FsjXlcivw+W8XER7pbx3vOUh8tXrnZyojh0u0dn0mv/PBEi7ggwq9FyAx7jWSyEEi4E4lCpB4RTgDh5ZKzyQ6p94+/0La2813qkOmvDc7m9A=\",\"t3hV0BgbliCpCwk51zoNcVXR7IHj9faHbY9WIodz7B1MwP3KudZByFfC7APyaSTgtwtlZ0+8lnjPYatM0zsSEFxPEPW4J0R/CHZ3+/Yd48B61Dc8cHMYnVaBJMb2Q9spvIEwrKQ9m+5I6ee4eM/zRjFGHuofej2eDYv5ZlaPpsWh3Rv6TnWAN1j/NCEemeSdiQGenMhebW0gG+yLfLWWWiIsK4Ll5TOjGcqsPIeBPHVuGSgPjoVxSKPaiNV0Ms0lYj4G11zsigN7tXrH3pc9KGcxMZ6FCWCarCHNODBrnc8EsELGgRlVIRPAGE5gMUTB4KLOnXJq7w3eYqo4jwlgAN4jbZF1ndOcVLrQyUc2onlZlVuajQt1ABI2LJz0nz0FeP5A9Q/VDODw/8v+SgU6qvNgUpX1fD6fTKYThVo7e9RR6/acU4Htm6ZDpUtDq/yoTIDEx9i4spXVL2X+h+meOvDRqnklJ348AIA8hzekNG9x0Lpf3M7NxzkY9YzW7xwAwGwhXLDg36Dd71ubicFOWfUDgGi81d1JFs4dLV6KzBYSFCGWwPbnpi+jEBIARBYUXI8oKjI/5NgGPd7qnZIxu5ET8I6VhmgO76z3ha/gKG2A2SAAgIMd4KfFQUDsQhokwjVESgqLAg6y1CgBr7rNt5DWDhbwGYnEHsKw7a0GE5lfIhegx3okFvZFha6/DHMJlsjNR/JoHvyGGGeVhKlCD3o0wahRk8zAW/i0Dy0Q83SM3BsxKGi8mZSzKalJhZGTAH8ivPXb4bdUKUwsPL2n43o7qkbTjSo1xny+zJ4WczzsHiYpMayYzXJ1g8z/u6QjCkMrTLH81rHEhKJNGlQKFCZGQyk0bmlsgV4nQeIIA9MGNdTtLfMiFVeMAQ/z0y4TjwD3a8r5mgZqeHKF3srSAh8swddVqj60A9Tbg+4JdnsFdYQEJjg0wUnPwsHSJKT115kH5ZKTvDekvMjSJb4sjYRUIsvYXaszobWxMS2DVSpEWU5/wp/3WtDAhAQHiCS1cZignMGBldksRxr5hUgwGZLfhWTGpYMRbV1rMWUuZOgGknGQF7k1dpjXMFzfPr27e3P7YWXtg+e49vjN6p/V83f3ZrI2Kq75Tfu/1a05ij0jR1WH1k3rwnS0mpX5pXpPLp9sqrKuZsOBHs3LwWir54PZsKoGs/msLqdlPS3KGXKcDC/wKC5yaU8oguuJY97DSjATVx9qMU37DEGWhkVHiXHNkQ5kA2rI4BFkzAVn2jNQoIJEPoVbjzRGaq5qWG/4UR8reG+sJkdQaRy3xVdq6zOKIUetAqG4oPGrU+dIHKpZ+oorZKHAI1wGTI4A+Jiuk+FVNbqaFFeT4qosiiJNZxePgTFyJF+rpt2uWha1goPo1OPMLd3Yiybdi7mmebWpJgOalzQYjTbTgapn5WCqqKwnSm/nKr5zwXYdR4506oxrMDpK6BDQqUFxEeSdOuNCs1bvv2DdS0s5nThGU1snrjn+D1rK6ptWk0bDoD7yxg==\",\"GumIIFZ6PRxPKKYFxzOKcjrNxhwvbEuZGcALnsPMhUFfxlpNQ5XB+6aVw9HsCeZXjsCxN89buzU7om5cVJy4YJxbjObrzafZ5NuqTSN3S1L1nVbDUTYb3vYzejNzfSSdWJVyip9nSuM6/0Z208flqN444yF/5lgWm5Y2nU5phJgV0dsLQ1OhQuiqmtiEaISQVjPl62a/G4gDzx30nhw6S+YoIl+4gD5j3/EB35k9ve2URYFanROfIoQOdFZjXGm3R+v0mEEi4j7TYscb5VKxSq+hj3XmwqRAnMTr/kaGUXndOigQo0om6afxLGptjTghfRYUqJ3aBuS470Pd0uB6ig==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d7d-GMgwZu+SI6WuoBMw+yuS0DQl3DE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "02356272-ea93-406f-bb99-f547cc253218" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:19.623Z", + "time": 365, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 365 + } + }, + { + "_id": "5d5ca9d0404897417efbe04304a84ead", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate/published" + }, + "response": { + "bodySize": 3050, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3050, + "text": "[\"G4AdAOQyVXt99/YKSBtiU4dO6Uqu2k7p0MQQsZKRUCADgCqjwX1rrz7CxvZVaX6+wldWuJnZDd39EMLs3P0gbhEVgQVgWSWAQFXJtKqyTvYxVLv7DQIiR+wx3V1e0GgU2D083NDxvSf33JEKhByt2tPW4w0sHQe9JzeoX8wFCwd/A6cudn/pumBamxbOHZLzuPZgvGmtsTvkeBnlke82X/9WNZ44fnN0QDHh6AN1HsXXC49I5+W/U/7HYFJNZvP5ZkLzueKz/L0nBw2sCx9UY7RiTrPBcI1BXnAkcUFLp/A2UEeanXXiTCgwuJ6QY9uHuiVUrltLyOhxUNi+aeKao6xtFHiGH31zlSiwaXc7cpmx2zaR+LV7eFhzewFjd/Dek5OYLqTtS3YJ8FdK7z05q/aU7MyB7I3aEwffF2+XwkXaa4uQAD3kwe4cbc0JllCl8muxhutq638t1qn+JKYLNDvTKihYwn9B4H70PvvZkzsnEvcldYzOrxtD3Lee2TIOF/YN6Cd4aZpAjgm47z25G7Un8EeQ+NuFq+NEifeRw1eJsJbENX3VhDQPS156Zbt1e8Rsr7qk9+Rg+QjOzSg9V7qQtqEABpZQLqTdG9sTJ+bPsiiKooA//gC8bmZ7bvJGkrqza3gbnLG7xKRZp/TboFxIxhxYwdJUwIc219cLaaO0S292FxKsq7sUDavyvSeXLBkINAoPysHSATt4oQLBEs4FL1QguEC2vWGahfbvt7ck49NF9VUhqx9pq4/3B+vUuWmVhiVcpO2VBAEoVIdWcWklKh8HYgq5U2klers5ztvydffKNE95e2WaJ7bWIa+ligGmzdb9bTWdqA1FY4lCDh4gBSOJorVF0sZFVyk9RsFPkLCbToyD7ZuGy0PsMrb6QmbiaHmFrNvN9wdsqgVL2O5kf0ZlYkiQVhzaLgZYmjRJjFu2liHYhiCeClgCuxNV1S/VcMTMB61lIlhqGRNKwgVcmCVA+uJ6pCVCbL0V3NmjUJO2+1vDElYSec5sR+GDckZtGvLJddcsTyQa7bvMyvbt5rs30Utg7CS5NzuV76BuhbI15XIr8PlvFxEe6W8d7zlIfLV652cqI4dLtHZ9Jr/zwRIu4IMKvRcgMe41kshBIuBOJQqQeEU4A4eWSs8kOq/ePv9C2tvNd6pDprw3O5vQd3g=\",\"VdAYF5YgqQsJOdc6DfFV0eyB4/X2h22PViKHc+wdTMD9yrnWQchXwuwD8mkk4LcLZWdPvJZ4z2GrTNM7EhBcTxD1uCdEfwh2d/v2HePAetQ3PHBzGJ1WgSTG9kPbKbyBMJykPZvuSOnnuHjP80YxRh7qH3o9ng2L+WZWj6bFod0b+k51gDdY/zQhHpnknYkBnpzIXm1tIBvsi3y1lloiLCuC5eUzoxnKrDyHgTx1bhkoD46FcUij2ojVdDLNRWIWg2sudsWBvVq9Y+9LHpRzmBjPwgQwTdaQZhyYtc5lAlgh48CMqpAJYAwnsBiiYHBR5045tfcG7zBVnMMEMADvkbbIus5pTipd6OQjG9G8rMotzcaFOgAJFxZO+s+eAjx/oPqHagZw+P9lf6UCHdV5MKnKej6fTybTiUKtnT3qqHU75FRg+6bpUOnS0Co/KhMg8TE2rmxl9UuZ/2G6pw58tGpeyYkfDwAgz+ENKc1bHLTuF7dz8/EORj2j9TsHADBbCBcs+Ddo9/vWZmJwU1ZtABBNcHV3koVzR4uXIrOFBMUKlsD256Yvo7BCABDZcsH1iKIi80OObdDjrd4pGbMbOYHgsdIQzeOd9b7wtXyUNsBsEADAwQ7w0+IgIHYhDRLhGiIlhUUBB1lqlIBX3WYtpLWDeXxGIrGHMGwHV4OJzJbIBRhkPRIL+6JC31+GuSwvkZuP5NGC8BtinFUSpgo96NEEo0ZNMgNv4dM+tEDM0zFyb8SgoPFmUs6mpCYVRk4C/Inw1m+H31GlMLHw9J6O6+2oGk03qtQY8/kye1rM8bB7mKTEsGI2y9cNMv/vko4oDK0wxfJbxxITijZpUClQmBgNpdC4pbEFep0EiSMMTBvUULe3zItUXDEGPMxP+0w8AtyvKedrGqjhyRV6J0sLLFiCr6tUfWgHqLcH3RPs9grqCAlMcGiCk56Fg6VJSOuvMw/KJSd5b0h5kaVLfFkaCalElrG7VmdCa2NjWgarVIiynP6EP++1oIEJCQ4QSWrjMEE5gwMrc1mONPILkWAyJL8LyYxPByPautZiylzI0A0k4yAv8mvsMK9huL59enf35vbDytoHz3Ht8ZvVP6vn7+7NZG1UXPOb9n+rW3MUe0aOqg6tm9aF6Wg1K/NL9Z5cPtlUZV3NhgM9mpeD0VbPB7NhVQ1m81ldTst6WpQz5DgZXuBRXOTSnlAE1xPHvIeVYCauPtRimu4ZgiwNi44S45ojHcgG1JDBI8iYC860Z6BABYl8CrceaYzUfNVw3vCjPpbx3lhNjqDSOG6Lr9TWZxRDjloFQnFB41enzpE4VLP0FVfIQoFHuAyYHAHwMV0nw6tqdDUpribFVVkURZrOLh4DY+RIvlZNu321LGoFB9Gpx5lbvHEwmnQv5prm1aaaDGhe0mA02kwHqp6Vg6misp4ovZ2r+M4F23UcOdKpM67B6CihQ0CnBsVFkHfqjAvNWr3/gnUvLeZ04hhNbZ245vg/aCmrb1pNGg2D+sgbaw==\",\"pCOCWOn1cDyhmBYczyjK6TQbc7ywLWVmAC94DjMXBn0ZazUNVQbvm1YOR7MnmF85AsfePG/t1uyI+nFRceKCMbQYzdebT7PJt1WbRu6WpOo7rYajbDa87Wf0Zub6SDqxKuUUP8+Uxnf+jeymj8tRvXHGQ/7MsSw2LW06ndJYwayI3l4YmgoVVlxVE5sQjRDSaqZ83ex3A3HguYPek0NnyRxF5AsX0GfsOz7gO7Ont52yKFCrc+JThNCBzmmMK+32aJ0eM0hE3Gda7HmjXCpW6TX0sd5cmBSIk3jd38gwKq9bBwViVMkk/TSeRa2tESekLRS4cyf1NXLc96F+aXA9RQ==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"1d81-nVTpJgk3xoLfhymbDDptyXcORCM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b7ef3a8f-3b87-4702-afa3-43a5b92994ea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:19.998Z", + "time": 339, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 339 + } + }, + { + "_id": "d37dcbcedf484c3d0de41fd27ecd89bc", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhNewUserCreate\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhNewUserCreate%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 270, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 270, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2025-12-15T17:42:41.49535471Z\",\"createdDate\":\"2025-12-15T17:42:41.495353249Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "270" + }, + { + "name": "etag", + "value": "W/\"10e-tKGPvcC6X5tswU0nI/g503Zb5Ks\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9a97fe12-5781-47dd-b16c-88d1353d7f83" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:20.346Z", + "time": 115, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 115 + } + }, + { + "_id": "7e3c40c8e8b6c4f55dfebd23826e5d3b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/c385b530-b912-4dcd-98c8-931673add9b7" + }, + "response": { + "bodySize": 1759, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1759, + "text": "[\"G6cOAOT0Vd+vX+Je2ziozuY2qY65lBYcx1iFTAUS7bzA0P9/vwLR8SJ5NU3Ruf3+206MxIrjfTySZnGB9xPfAVqg/WBrY6m8uqYreEGiD6Tpx29Qw5mgh6fTCSs942WlBTpoL08EPSw0h3gCOsiT6Pd+auNcoYef4/Ks0jPLRc0KDhtphf4G9gamX4uTXS/T1MEc/6fUQuNPtISS6YTnv2GCrYMyL2fob1BGmvIK/T83GDP0kJV2jqTHnMmg1tyiO6qCirwncsIZ7qDL+tVBSpFyJFQkHersHXoRDerifUzBpVQsdHCeM03Qg+e2H+wfxyvV78OZMLl4bctYH6GDHS7sCz18MV6psoQCnAqfj8vaoql5Caqr4warpT/0bbnQ1oHvuwT0N5hbvy11hV7IDuZSVmrQ862DhUL+oU4v0JcwrdRxmvxlmlvwhXP95BTqI+14Yx/ob9v2sHXwgaSETKF4hSIEj9oaj5EfLSYqx2BL8kV5AsGR8i5Kj1pKj7pQwqCOCbM3wQsvnbOalrpW3Ly/XBbBEwrWCnwbMKvuYKFHel3Hvw8fSLZkYWMgpCA0apUjhiSPGHkuIXPLo7YEApepGEcCMzcRdZQanSaJ/KiisYW4UoW2ew7jJHRUS/kYfZdYIHhNn53DODHHjyN/nnWLH3t0ojFaU6RDW6xBbULAKJNFHWwW2fNER9XCEp/QNBnDidWQzK9qHq9jvoTJhXYdezrNlTI8fs923xNlyqzMC/v0MrOVlistzB/HzNwLmRVsx9oDPfy7G4a3+QdiGNb7D4Zh98Ew5JvahuH+g3+GYd3jQ6gkpEFvb0AHdmMyoYcfJworMRffR0mNvcyXhfn/Ctua4RQCSDqbGMl71Ek71K5I9IlLFDYJr5M3wRFBlAvF4AWhEVqgzsGiPxaFOmQjOVmtFPV/mtexjXP9xf8Fv8ppGJNvkli8yeEjR1eoBb7WccXYbzoOQA9crv2hEks4BHN6HeWPXz6lEi5TW94gRaj++jxv+evzDCm9P7STSNOa47BV2B50FWs/SBE4oPtyYQ+HA/uC2m6s7g==\",\"r/Q8vfg7NTGuikO9hiWcojyAvcfKvJz33mQ/+flIU/49TBd6Z6hDPRzSXNd5ov00P+7uMpqSCjh6Zm3u77pyTff5txgL2y1x43vvsTtwHr67Z7ehMsbY4cB+Oc3Plcg2et2YjuV35VQ0kZKPjS014jq6nubnk2131yAm2pc99p0MuJBh3Zk9JeNJ7ZdjJqlz/QQL9QVexpluTmMm70oN76E8gh27qwnOGTgcmI/fQpimF2b3uY6Njfl+vcKunebL44n9LgCM4gUrCwuxMP0JEQVW54qOZQ4OqY1XumeJlDk8pMaAzu8IDXciGR+QC5tQh6QwGOFQGyFVUDplKZWE5YfWMaQO1yC6AatUajAcYIGVptCtH9fpAjErm0h4jSZajdrIgDEKjtH7oHgix5UjiIzxXgSDNiSHOiaOXgSLSURhLHmnZKKDW1jap6H1V805hAJY90sLS2PJBB0HabSSHyCQsO6YuUKfo0JdVETnlUcTo5bOqyCs6Tj5qeYqDAGArT+rmR34SGUKTY+HDuhKtQ2eTnyu384hK/eRUS4jpFhysG1bN1b43qSciUZxjF5I1Dll9C459ErYowo5+3iEDv5b6Aq99B2cqYUcWoD+BiNTBOu7epBcWuQSuf6Vi57zXh73R+v/hm68xyd+oUEhUZhfhe217aXfGycMN0KIv2HbAA==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"ea8-YyFZzNgXdPHQXg+md+X1PfRtDKc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "52fb76ba-836c-438d-a3f2-6e493c98d3d4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:20.467Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "10fb1ef5719e02a0cd71b4b938e49a37", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"c385b530-b912-4dcd-98c8-931673add9b7\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22c385b530-b912-4dcd-98c8-931673add9b7%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 486, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 486, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\",\"metadata\":{\"modifiedDate\":\"2026-01-30T18:27:54.681904Z\",\"createdDate\":\"2026-01-30T18:27:54.68190238Z\"}},{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2025-12-15T17:42:41.49535471Z\",\"createdDate\":\"2025-12-15T17:42:41.495353249Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "486" + }, + { + "name": "etag", + "value": "W/\"1e6-BqtdkqiNjJmHj5qNlG4phq19kFc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5d13f865-c575-44c3-9a7a-7a6524647dfa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:20.592Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + }, + { + "_id": "654d2e07228c283ddb272b72b9b4c66c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/8d0055b3-155f-4885-a415-4f1c536098e8" + }, + "response": { + "bodySize": 1083, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1083, + "text": "[\"G0sMAORaul5fZt/EMQXN8bzSOpGNckcgFO0crbXeX2vY3bn3JOBNTMYQ1XQV0YY3Mp3oIQR0WPM1NSRQyolv/haWPfjQtegQOPSzWTbf8T+P2TygBwpKAodaDoeMNWWWM9ZmVV2zTFQ5y6o2n7ByNNyrsQYKxsYrK1WrRKPx1tsefVQYgH98UVha/99quwS+BSX19bnG5VNAf6D1MyBR+PG4AD6iECYz7EQAvoWJ7TprgH9s4afDKIBvIa57BA4zll8IqCWWK3+PM0DfCxR6OPktLBWgT6smIiprTh8Q7tHNlUcJvBU6IAUVzkxEb4QGHv0ctdQD34Lx1/hzWQ9RUOFZBdVoZINZ73cCXlKQiyBI9UrnwuO2LF4ogjWktX5DI9Meb2VKFErI2bAyZxJnHxUOZsJMBQ5HKWBPH+lIk91WydmhBUErgLk5OTs0w32+M2fy1mOrVlcBMMKZJb08JdyAzCJgUZaQs0Nfnw0VDr1oI8DyRCHxabgEb2duz0oXBx2BsrFkTXpf8ehwHiIkChFXqGECqPuehZ4jcNB2GT93old+fSgimiYGCfjdCDQR7pdIEdGSgOPGp4CeTMiVlBL2EmvIf35AigMWPkG20tLYgP5hghlZlctACipczXVUrtCFffpAtLIsguYOET57UZ5eZrT/VUMb92+vromGYdyDjpvODsk/Rg+VaLwMy6MYzSA5lYcofCRxEbBGnODUiqkXJu+tppG4dvbIyD3wCdeTaLRtCnd7KaWmjGtkmThUZXmOTkqjnCScw5yOKzXWahQG8hXHy+QJjgBXQnevs80fTg5M3HPMNLY4wbiEOZXga4cE9DWm9EVhAarDaPYzTff6qVqgaQ+YbBu6bU7UAg1pT9AmA+NdVPKWgEShl5D49OMjUQhG/zEe5t4co1gcoRNKH/zilVC6ss5maTVJKqp8EcbhRBUMT+lIOAAHmZCxtnVkJIboMSEJ0GBkK4uYFaAEWfoZjhWrKaWvRCuQDeF2HUYhRTWCrgcr+l1QDAuW5UWWs8ei4EXFWT4Yj/begULHgIb4DQVn9YAVVQ==\",\"zsZ5OXqHlAA=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"c4c-lUanL5gikWxMvwkaOznw0IlwjPc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2c913f84-c249-4715-ad7e-67b8e0d6488e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:20.708Z", + "time": 189, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 189 + } + }, + { + "_id": "2a610da0ceaa64c262eb27959f6cff8c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1938, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnewusercreate\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhnewusercreate%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 1111, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1111, + "text": "[\"G3cMAMT/X0t/teXcNfZEI4ll2WGaMTwbfhX8QDLzv2Ot99Matv07T4gnMfsyTKyKaYVOKLxOo1ZMxGtvtrlwQp8N5qj/F/tuZiNkzjHVrOxmPeT7BmMpvOlKdQSJfjrNhlD+4ymbBfLgMBoSlR4MhKiHWS5Ek5VVJTJV5iIrm3wihqPBbkUVOKyLl06bxqi6pRvvevLRUIB8/+RYOP/XtG4BuYHR9Opc0eIxkN+n+kkkjm9Pc8gRR5hMqVMBcoOJ6zpnAb/63VFUkBvEVU+QGAT9QOCc6FRxdzSo9Lng6OHEbTD+gDqNmahonD19Q7ij/zPjSUM2qg3EYcKpjeStaiGjnxGVfMgNrLzan+V1E4cJTyaYuqVkMJD+SpBDDj2ygnBPtC8e5npxTxWcZY3zsyQZ8XgzU+LQpeFhZE41zjom7E+V/VU4zD8F7JFDGhG2myo7PeDAaQkwJ2enB2yYz6fpVN94aswSgkY4Y1ifnyVch0IjYFEms9OD084w4cCrJko4LXGESJtUgrSjN2dLETsdAbG2bJp7H/H0n2YhInFEWqKGXqUue1LtjCDRugVffzQte+NXByqS3FWGylO2yrSKxInDceFjIM96+QrpHOYyZ9nSQSDqgNFUkPm5VHpBy6LAI8uGHCZcztpoRGGnjMh+1pZcdJrrwiDCZ5+jRhYR7X95aOHezeUVo9CMu9Nx0ekB+yProTkqy4cxV7SmkWzrPiof7cJhhVICwvRfr6xIZ5OsxjWzh1bvIZ1wXYm6dbWQppdSKsuYUpayQ6soz/0v6n/XgUzKCccwU0o8UO1cS8oiXnUQ0zJxgvsDdkJTns1z9T+aEAXLlDFT2+J+xxrmriBrkwjoFab0yTGq1WaU+xnZ5/+aOdmqmc42ZlLm2MzJsqodS9MN5dJF4Qf8F3m0zzD5zRYSR7D0l3E/8/boxWIJnTIt61ulS2Varr05JMq3ihduHHRUwuik8X37CzYyQfzTOrQag/eEEASoMXIO0WmICqBB9v8t7VhFKX0m7kCa1XIdRaWVG0F9hg4CX0IxKESWF1kuHoo=\",\"QhalFPnOeLT7Bo6aAZs/f6iQotoRRZmLcT4cvSGlzwQ=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"c78-RtyS+japnHHbc9S91DcD6Lazvtg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "18008aca-1a61-4357-8218-697bad197112" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:20.903Z", + "time": 186, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 186 + } + }, + { + "_id": "b74ab2fa7c61f94d8bbb9a49203978d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"G21XAOQ00+r1JWpm1sfIuqi75wpip9d9OYjdt4KAIks22xJpkJTtwNBPa/2Q1oiERhTRbBbKzrwJZ4h/9YTZm7ezcwb3zRIiHkU1FfdOiovfBxKJ7qFESI1F5gp8ubWe7nRkVtCzuYEUUIFD675qc2w7fYnAA8V6dBr8ctkWfInAgyMVTtsnP3Bb+50+OakV3Pz4ue5eTwhVyzqLHrwYPEMVemAdnixUP285wPdW8Jk+s27H7HGRI6WYU5HlGc3LZPeDdbond4EmJjtmj+CBS0uOKw/wdm2uuoHCq9s6PCWPZkZsHio1dJ0HenBcJzTJ3ePj0+bLCnK7B6igHbpWdl2PymXzAW850pTRuIxSGL0Il/O0ere6310nPkvdMSe1erqTNIyzSJQNz6MYxud8R3zUolSHrV7BA8adNhaqG0i7up4MWpveWM4M6MH5yu4RKgjm81otsZUKCYcVqyZf8ggMyIeOyGHJ3ecf1bBXolsSuy85eVg4UN5VS7UnrTY9c7VqmOurFSGEnJk5/lwp8jc5yMAd+Xt0X5iRrOnQTmdvAgwxePP0yWtB/g68qf4e3XQixcTv8pTAK/mbPBQDiaL3WR7mm8g9C85tNYspjkGI+WwwIX8msy+PTN6udhOP3EaP3MassOIPJj+LcQWEECJFRWo4S9b1i2CwaIIaoltACbz6k2muaHNRaH6Gz74UXkyoc5a0FUkhkRBCqjMCK1JVhPtqMfgLubuuMrNW7tUzHBAg+OsKc3/YhlJ0jok/ifH5Ta3G2XRWq/k8qNW0VtXLMg+AMnzvplaz6QxGD/CMyrU/lrWEHpXrUEnayRY+pwEVPBgt9A6tW/VMdjvsTx1zGMWSZDnr/Hpu7dn1c1CSa+GyhC2NU16Wi6zM0kXSJumiiTBZtKVoopYlgrdZV5kjwRz2CYF3gk7HwTP+c5rO42SehfMsnEdhGM5mM9/p9XazdUaqPQQcbcNc2xR/hSr1yt3R9SQNCwX1i/u1l2CR04MWaICXNTr4xxsFgIY1HwCUyI3YF/ULuf+yxtGroP/1je4waDAr2oJGC1a0dJHEgi1KKtpFkTQNz7IkzjNmYSD0Rrf+usGYeebl02QynHs6HT5XApWTrjvXkaqzT/73P+IJ6M818A8JZ+Rf/2wsLjSpqreCz0BGY9KUMzPkUDmbsEU=\",\"56TaW6R3/DXIPQu47nutbMC1auU+kHv2cqgh1wtAr0UNHqnh7WpXA+aLPjODhiYy5G+ihq5zK0O2pLYWbXSHm2oSrlE/w+fc+5F4rbVbKZIIX4o8iGPXzky2ZAqGvP73P8C4/cm/rrtkTfNhIRRLdWitMJwPc3SNWM6efV8HrgK6iNFtnhX2GLQc/i4yGLEPGkdDdwtZXS+VQON1/DoXkzkNX+tRkv840spDR4+pUCfaVb59HsJR31SMeYO3VxeD0b2Hzx8e1h8+CC7upfSWObyw10WZNJwKmra0SbafsZarT9+f6lGsiYS1yRpe2UvFjBeK/o0RqAhKPhqCszL5FBYjgKc3xy6ampFepBl28VJv4xDFBc05jvjRAs5Rec/4wjopmqiLoCqEIhky4NgR71CVusVAEAiiSzByTmCgHQjcwbWSyEWQv/8ed/wA8aEwzu0VIVQ4xGIN15plvC2zMOWYiuvUctLjlsluMGgIMlXenQ9hEF63goxBKFsSKrhlIAHAkaCCTu/ZvTFUq6c15FPU3iCyJxcWqGH2BurXAghUVvc6oL3eAIR+UZ2W/ptEoOR1m3OjYIiSu7EXSUnbFFmRZzSrRHivRVzbuP3vLroWtPa05MFg6WzYOkTdy+tgD/YwUTxqIXK7UYK3SotxbFsCRSXj5qGnrdBdO5fQzcCB+P6RwOxxEYdZ0aYijyJeACopmNcqr9tQWqAlzCA5IC++n/BbPesjkrvHtSXaEJpDkGhJ7pJ0ei+5X6vveiD8dH6MMIhEFMEj1suP/38F/FptEcnBuZOtgqBh/Ggd26PfarNHo/nxUYc5JqG5DaTgnR5E0DGH1gXaIJ9FEgECjY070Kw4F2KAMgaDp462DdJqQ3ptkJyBxsysX6uSo8MBA/c7EbFS7TskqBbfUXbuCT3CLxnugLUqfymC6n6xbUsQqQgjzrwujrQ7Emk6zY9Jwe2AjV3VyplXItbgtPO3s2l+0dlYtmMoElBSktiHyRgix1plePAUOQs+oF+LJ2RWK/I3mXwZ7PeNoiIrY7QhBpmQal+UDZOLdAciBeEEWDq550E/Uu3ZKgOv+wu7RvUmeYzIC7x9uhRZ63lafVwt13e75zlRQ9cprJba3YcPm6+BrmD17XH9dLdbbz71XmA1A+80eu8ZKbk+YXQJYc5WaPmsoHRJ7jp9gQWl6RAWEwArggU1+LYIFPLTPjxpCAr+TRN49bKlYUeXUFEJbohoEQmGNHhP6alwK0a5KfJTxJITvP/rQpbL236+v19ttzgs8sIk+3FTNXnLo6zkLMHG1KOvebhbf1gtC+c0wkMsx2jugMTpt5FrVYPT/xX31ulz3dfwBkYPOI+0Qc4bzXlom82/2YI12yDdqEjO/wYH7DoNFey1Fs0rggcHCRUcdMdg9OA2TjndFLwdf2d80IPhZhQqT4XzLfMrk5wMxJEDvP/q42KWe7/5+PhhRXYR9NBmaUaRxoy3ZREt675BO/S4HO6tipCkzqeYORVJAdOqcbMrg7XmVKsUm20Nr/5p4pLlkUhYU6BYbIPBwumkqRcZ0yTlfrPZOnxAwUgDqSEJ7RroqkQrsUIwT2+OgfWaLshoT0WCT14k9GznT0G/31RFEbVxmacYJ+ElPJZWC3b5oPCH1w==\",\"lJxaGpWa5U8Ec8gomW8ytFVahWd1kdqDqDGb8Up/bXks0pLSMIriaJFZHiewOzLX4gKOheA7fIHn8DJbIZfT0ir1Q7t9iozdMhuaUM5z0ea8ZCoITMBQv9M3OHT7J7LjWrZFM3jISVtbw5cuBK99y2yLMMvSqGiSjAFFFt4iWOYxmfFOqmmqDNKEtF9qHnJ8b1fyftvwVraSDIqB3DGO6+hBHcvkn7TAwT1CiU/cYtQNXmA6poXq57MHB6rh1IpnbBXOpZrOaIcO3tXR4zUW0TOj5+GEO7JogNNRGk05qMDuR/Fxha5jq9Db3FqdBgceHJjVY4kJV8aEL8jsHXgg7RI7dMiaDv2tlF0afTrtn9lKSPc99v/1GQ2KBHh/uM4rJcADpQXmawzLD9gzoRuMwSCE280VqiLOPHiFKg1HOOdrHGgD3QZcw7MLSsl2BB7Bz32qN1LVGrqKU8deX5gx+rLxxNHHLKRq9Uvmmmu1EUfwGlCoIVRqO35CpvGnSf6s1dTAOLxOlMSjB4O8Z3UQKW4qRTJRhJDDL88rICTNw4BnHEgXa7BoQPygkpYmiQla/2yjOwQxB9cEk8yyLRJnXgKYBLnD5whIFzhYyXS/+IF0gHcZUeBAwIUJC2FGBfpFRsPTsutukp0tCxow380He7eYpEEGc30xFSgNFUT5BHayx+2JKahAsNepnQFJEo3izoLZ51mfx/PuGHHm7pO88GlZliUtyiwpkgSD3nlUpn4WxWlIwzTK07wQNQTeYT6spLYwnrzXYHBB9s+aU7POEi7Ye93nTkoGwxe1KVkqvXr2DnowG8OuRCPxBr/D2gJ02Q8+6ZEIgs0nscbCNN/IvVbuMLWIcIVXqKIkI+cG0WKj1pzRaNhEmEkNrG5xNTYN7zpLCr+I4jSMiywKY3qV9QhsVaAuqyV54icTx3FRFFFBs0lo1Cwbecoqi7LcKElLWHacJ9QqpZQiLD1eN2HCa8ND6KdE8mCOcvEuX1G7Mj9Ka5+sLvmWkN6v4S0Qya69W9dJ4TWxgEAT5p2YItg1jXI0bURR6F5TeBPDSghi7Ff7NO8kww9izpr5jEZAN7XN80lCwQiam0ZMdgO8Vdui1Wkeqtr3vl8jYvkOuyAeh0J7TSchBsTaUxAUcQKscUVYdkR9RoAYdmRThzcEoayl7XC/lgVxM3fMHglgMwzpfEYw+eYFL9NyFtEcyWiPQxj35Kxu3QgZgoz0aegbNDwAsg5xPlF063k0+oTGvdrVmJjSSEExGYJpduGDgdHHxA/NJf88K10dxrKpjrbVejaxGBWFxl0cRWmhFE1aJtJcDiv1U4DUu8iUlfDDQC0oNiBPaluUkeclQ+0cTRb26gYLFQjDWgce9INmPt2ZAUc=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-J5idz6dFGoETw6pxxTHAwhsl8TI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c5d2a9cd-8f8e-4f5d-ad96-94ed41cbfa58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.095Z", + "time": 343, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 343 + } + }, + { + "_id": "e2dde589f8c1fe9b33ab2bdde047c5d1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4222, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4222, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-moU6e5rau5hrulM9d0Bk/14tTIA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a468be48-710b-4197-8297-fc7363b69c88" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.444Z", + "time": 337, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 337 + } + }, + { + "_id": "57a5cad82f09fe2fb978b6ffd0967f8f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow1%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 483, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 483, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "483" + }, + { + "name": "etag", + "value": "W/\"1e3-hziUWgY4Z3A/KBAjDXlh2nti4sA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "46ffee60-7ae0-4af9-951c-995e2952825b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.789Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "516e61348e4ecc0a207a3b71069517dd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9e3fc668-4e96-4b03-9605-38b830bea26c" + }, + "response": { + "bodySize": 342, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 342, + "text": "{\"id\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"name\":\"test_workflow_request_form_2\",\"type\":\"request\",\"description\":\"This is a test request form\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:01:59.586Z\",\"createdDate\":\"2026-03-04T22:40:08.831569376Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "342" + }, + { + "name": "etag", + "value": "W/\"156-PTn0fEjhoJV4wTk1YEIuqCEabqQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "64576b35-ef25-4779-8e82-4c04070318a2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.912Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "7b593beb236d37516c21f5157e23dce3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/fa1a5e72-d803-4879-bc2a-07a5da3d8ee9" + }, + "response": { + "bodySize": 368, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 368, + "text": "{\"id\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"name\":\"test_workflow_request_form_1\",\"type\":\"applicationRequest\",\"description\":\"This is a test application request form\",\"categories\":{\"applicationType\":null,\"objectType\":\"Group\",\"operation\":\"create\"},\"form\":{},\"_rev\":1,\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:03.612Z\",\"createdDate\":\"2026-03-04T22:40:00.809825423Z\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "368" + }, + { + "name": "etag", + "value": "W/\"170-cldJIsXRvS9vjLEF1rYdm1FcxJs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "87b49f04-376f-4e83-8a17-b50afd11044f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.913Z", + "time": 94, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 94 + } + }, + { + "_id": "926b2d2ee4a0ba572a2da531c963783c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22fa1a5e72-d803-4879-bc2a-07a5da3d8ee9%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 918, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 918, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:04.471Z\",\"createdDate\":\"2026-03-04T22:40:03.856752543Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:05.472Z\",\"createdDate\":\"2026-03-04T22:40:01.849201534Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:06.466Z\",\"createdDate\":\"2026-03-04T22:40:02.84761136Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:07.535Z\",\"createdDate\":\"2026-03-04T22:40:04.870872677Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "918" + }, + { + "name": "etag", + "value": "W/\"396-oAO8ZAFe/dWMjXKjlmparcAFkzo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b287ff4a-d92f-4501-9e05-ed49a716c507" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:22.012Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "56aba0f2a42a3781f54be2fa237ef6b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"9e3fc668-4e96-4b03-9605-38b830bea26c\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%229e3fc668-4e96-4b03-9605-38b830bea26c%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 699, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 699, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:00.48Z\",\"createdDate\":\"2026-03-04T22:40:09.860613713Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:01.47Z\",\"createdDate\":\"2026-03-04T22:40:10.907366203Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:02.474Z\",\"createdDate\":\"2026-03-04T22:40:11.933983845Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "699" + }, + { + "name": "etag", + "value": "W/\"2bb-EY4HvrUG+IjSSm6/NURQBKKe7+U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1214e072-fc9c-4e49-8c67-a56d46159ad9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:22.021Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + }, + { + "_id": "838cf6577b94f0ce14deaf2a1478ae99", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/af4a6f84-f9a9-4f8d-82ae-649639debabc" + }, + "response": { + "bodySize": 908, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 908, + "text": "[\"G/YIAMSvqflVy7waXVSkdEg/x5VY2SjAGTgnDT9/v9f9PcX7zvmVVvap89avoOjRKKnbEqfDCU54ZNMhzrsCDdKZ/fEFRkOB+pzKvs6zvqEmy/taZ/WOOCvzptw3mltqO0iMp/Czb2lmKEQO8d+j82M/ucd/ngc3fs+/+HzgfwUk/v0ZqCVJ/PP8ALWVCN0dzxSgFnRunp2F+rXg38yRoBbE5wNDYYjx/GQ1LvPH5KYhMQZFl2GZOLj/7+5NR9E4C7XAhI98fzSeNVRPU2AJE65tZG9pgor+yIqFoBbYlFpvZN0nYcJXE0w7MRsOUz8Dai+hxy1gPiQ6jM8zqXgoBWdF7/wcRIJpIkhJwvSgw2iuNc4iE07vyN4SDqAUYLecp2ER+0XF9ZkGqjnCnC+uz9SA7+fmWr/33Junm8DQFE63OMiThKtYaAi4KD3i+uy8P0w489RHgP4kUUST4RJEifX9RdLEqiUm1iwmkfcFz/d8DBFJIvITauyz6aavNB0ZCpN7NP5vzE8H45/PKDLsTgSSnLJVoSlyoChWkS+BvehDy6QlbBTOioV5wLgDxyrBzH4l0YFadAR9efJLuYQJb45TNKaQC3vLqWhJLTpufQGI6IsuyrGg9r9yaOTk/Zu3opBZw0O1il6fiZGjh5VIrIwjmmhkkGzrUyQf40KxpjgRYeDWky3ujdPqwF3tudWokE9w24x2cu1puZRSWQZKWSQOpYryPDqr/58qjPKo6GIY/Hus1rmJyaJ4BRQUAqY4wSOgMyEIDrp24O5/LJGLMbOxxdvSHubd0NagBKYXSemPxJhR94L6taQ/6Sct0FJmjqSpggArdLR0voTdZldmm322yT/v9mqzVUW52pXVT0iMK0VM/Lqd2jeqyFdVtduXeVHnP5ES\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"8f7-yaYJ9F3vkwvW5whdhseefDySMt0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5f599d4d-0a90-4403-83a5-6b0756032255" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:22.138Z", + "time": 166, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 166 + } + }, + { + "_id": "23d0af5233b3219e2f055d4c305b4e25", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow1\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow1%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 964, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 964, + "text": "[\"G0gJAMT/puq0cm9GUemMKa1j85XgAg6gdH66X7n/rzh/3lZT2VJa9NRWUAUtVdw1deDpiR7pkZ0Oce6uQKBMtNLwhxz1/2LDjiZA5BypZmVu/j7Ewx+0ggD1aqqahpK87Lqk6toi6ds+S5pGDcVQVYpoAEeMhl89lkuCQCAfXr6smw8L+/XiaMHkV7yEnxW95OD41QEhKBDIh5sfEnNEjhdHnxDv99N3WkoP8YepXS6tQffsy5KChPhD+FkRBJY3z4aiUOnPIXSCI/5FmyaeEFlAwqCnMmhr4PyAP6ePUTtSEINceOLQfs8EckYuIIIbSVk/xB+MpOJ9XldxaH+tvZ4siAyWyB8GUXKomAn0K6GNuMzi4qHSW8MG6/Ific0VRIwcAYd1aM6ewpmg/ca7NG8SB/4nB7thS4aB7fple5sayFYAszfb21QDfz43e+rU0aC/rxxDEzjtbMVP0NiStYKAaWgn29s87Yf2m04OAaAncjQPRag4ChhPz4IOItuAsEKWwN57HH3Q6AMiR6Bv1DBf1GXXcjESBBb2y3/OxUq7n00ZSDUudPANxBDVKdMyJQO5uWQbvPLk2PxdOsVhnFnDigKBCg6Ik4LKvCXSgSh4gpp8h0sqh/ZH4yJoU4i5vWGDtaAWkrn38p0YIjIoVF4OjbP/VYcG10+PjlnDMou7bBva22Rz8h6aI7IyRFORTyfZyUWQLjC/kOwISkDofXPSNPdaaRSu4W4ZtQc6znUSk4WdHAeLMbZlcCsL+aFQU571P6P73XTaGGX9i2yG4V+PNbF2QdKgecWiZTQnWIzJmhCL9NnJjKa/M/yehYj2LRZaMoRZeoCtsXogLxjjE0e8qssgHv7iU/xKcTSYjRM1Ny8042LBsaQglexEgA4nRfK3UGRFk2RlklWXRSmyXNTdWpn19+CIe4X/57cWospEka1lfV+3RdU294jxKQI=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"949-Y+4Pe5tX/Yx/KcUizfbsThLfNbw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ce7234cb-5f7b-4ad2-b798-5400f3e4983a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:22.312Z", + "time": 176, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 176 + } + }, + { + "_id": "ca2db1d5d39fddcf12ae43089d0bdc84", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-ku5HVO0Uf9LiBn16p9FZpGZhVN0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d7b4257a-3896-4555-bbfc-dfafdba00f78" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:22.497Z", + "time": 372, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 372 + } + }, + { + "_id": "d426bd32e5f14fb65961e4ec48cbafe5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-Q/4wAdkfpsCvESzA9rPrW7K+MFA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5efbe575-b24e-41e6-a623-95ddb73978d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:22.875Z", + "time": 377, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 377 + } + }, + { + "_id": "c2d59eb8491d34bc1cba664b89c28bb1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow4\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow4%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 262, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 262, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-03-04T23:02:07.535Z\",\"createdDate\":\"2026-03-04T22:40:04.870872677Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "262" + }, + { + "name": "etag", + "value": "W/\"106-oaFRFrdyBSbCsFcxq5NujaXsD5M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "989408b0-db1a-468c-9b6c-4725d0db6258" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:23.267Z", + "time": 130, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 130 + } + }, + { + "_id": "3b8a3916dee760cb88bbcfc372e8823a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow4\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow4%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"Gy4JAMT/puq0cm9GORlVMzqlVWS+YlzAAZTO4Zp6/29lPldiRa6KMVQCRaCqastjcBNyM3bKTrnpEOfuCgTKRCs9f8hR/y823WAj5Igj1azMzd+HfPyD0ZAoqMtbQU1Wt73IynzcZ+NSFJmoqWlGohrraQuOGA2/eqJWBIlIIb5+Ob/ol+7r1dOCyR94jT9rei3B8asDUlAgUoi3P+SWSByvnj4hvh6mM1qpAPmHqVutnEX36euKooL8Q/xZEySWN8+GolDpLyCMgiP+RZshnhBZQE5vpioaZ+H8QLigj8F40pC9WgbiMGHfRvJWLSGjH0hZP+QfrKT6A14PcZhwY4LplkQGS+RPgiw4dMwE+rXQXlxlcXGvCs6y3vn8R2JzBZESR8BhHfqzr3HmmLA5U/Zd4cD/5GA3bMswsN20bH9LA9kSYE5m+1tq4M8XZl+feerN95VjaAKnna35CRpbslIQMA3tZPtbp+0wYcurPgL0JI7moQgVRwHj2VnQQWRrEFbLEtj7iqcPGkJE4oj0jRrmi7rvRi0HgsTSffnPhVgb/7OlIqnGhQ6+gRiiOmVdplUkN5dsgteBPJu/S6c5LDNnWVEgUMEBcVJQmbdEOhAFT9CR73Ap5DDheFhGYwoxtzdsshbUQnLkvZoRQ0QGhcrLoXH2v+rQ4OTs+IQ1LMu4yzah/S22IO+hOSIrQzQV1XSSjVxG5SPzC8mWoASE3nevbHNvkFbjmu+21Xug41xX0S1dd5wtpdSWwa0s5IdCTXnW/4z+d9NZY5T1L7IZhn89qnNuScqiecWiZTQnWIzJmhCL9LluTtPfGX7PQkT7FgstGcIsPcDWWD2Ql5TSc+KIWBWCPW5FUWnVCQAdRgrnb4DIRZ3lRZaXV0LIMpdCbOR1XjTjsm4ewBHDSpkkNzTjvH5ASs8J\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"92f-N0V2RsaFRLa6Fn0xL0UYmB0nr4g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1fc18630-d784-4c65-8ff3-4b78d1132f75" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:23.641Z", + "time": 147, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 147 + } + }, + { + "_id": "b06958c0cdb27bb3b80f440048fad0fd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-C1gIMwgWso5RMs/mDYxZ3Eg3qMs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f7440363-4fea-4b9c-aa1e-c016663a7e62" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:23.795Z", + "time": 559, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 559 + } + }, + { + "_id": "f5fa4d5ce30724b18d7d2e8d4c52eb06", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-CLVYYs3RN761UmHxFEXkdG4hj8g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "823753e8-912b-4978-955e-ed5e20337f77" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:24.360Z", + "time": 386, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 386 + } + }, + { + "_id": "79029a84fcdc9b6be096e46596dc7d68", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow7\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow7%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "900fdfd9-6279-44e0-8aec-89296d93277e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:24.759Z", + "time": 118, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 118 + } + }, + { + "_id": "a8425506668b7f7dd24c79b39bee3d39", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow7\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow7%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "411b6603-9ccc-4e77-985a-d1f7de0e5bf1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:24.882Z", + "time": 122, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 122 + } + }, + { + "_id": "6f657162bf5a8edafea4d88a39373467", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/draft" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-WLmWTZaYEA7jvXMJoJw0qRcgctc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "74df227c-7103-42f9-97fd-481f94bbd0f7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:25.010Z", + "time": 377, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 377 + } + }, + { + "_id": "da7b8f1aee9db97902eded34fb2e307f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8/published" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"G3FXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRVuW+tN6NiTIyL/RuG54mEme7qwO4PbiImiIqwuqanlyAEJBkVoPHMPkp2eJIXBSTvWNjz7k65W2RT+Md2E6RtKnH0RF5BSajAo/NfjX1uO3MpgILmPU4KPl2GBZ8KoLCnwvg+zQPb2q/8ySujYfPjJ7u/nhCqlncOKTxZPEMVUnAeTw6qn68pwGcr+Fifebfn7nmRI2OYM5nlGUvLcLeD86YnNwsNTfbcPQMFH5ccVhagozZXvYLGF7/zeIoerRmxeaj00HUUzOCFiWiYm/v7h+2XNaR2D1BBO3St6roetU/mXd4KZClncRmlMNIAl/Owfre+3d+GPivTca+Mvt9MGsZZJMtG5FEM42O67Y9GQnXY+goUuPDGOqheQbn1y8mic/EN5O2AFI5Xdo9QQTCf13qFrdJIRF6xYgonV2BA3nVEmiOnz9+v5VdiWhJ6ODl4WNhR3iUrfSCtsT33ta6Y66s1IYScud3/3ATkL7KTgZtaHtB/4VbxpkM3nb1ZoKXFzdN33Ujy18Kbujygn06UnMy7PC3xhfxFLsVAZ9kveRrmm6gDD45ttQ/XAoMl5nPBhPwRzb4ombxd7yeUvI6UvI5JYeAHyU8wLoIQQpSsSA1Hybp+GQwObVBDcAtoiS/LlWkuanvRaH+Gj0slaUiocY7vKhJDZ0IIKU4bK1JUxPTVYvF/FP62ytw5ddAP2CFA7GsP6/6wAcXoHyN/GOPjm1qPs+ms1vN5UOtprYuXJR4yypp7N7WeTWcwUsAzal//WNI69ah9g+pivGrz5yShgjtrpNmj8+ueq26P/anjHiMYKQCldcl6qldaorUptPXomtLiClVCQXKPDUcQp5hTZHmh/5gmcxbO42SehfMsnEdhGM5ms6U3m912563Sh+kMxpECOsG7ROpKdMg/E0tfEBYJ/CQFct0/J2HL4lSU5SIrs3SRtEm6aCJMFm0pm6jliRRthqBwFo+cjhTw5aQs3KytpkFV5kmieRHiNKZTaI9WmlgThEJnrQ6NgXrJPlnbgjl4c2KjJjaONGH/17emw6DBrGgLFi140bJFEku+KJlsF0XSNCLLkjjvXJCFUCC5TxuMiWfl8WGyCc6cTh8rgdor3x35iZXXs09+/50=\",\"zATc+Br4m4Qz8s/8rODGmFTF+57PBpqv6Hbmluw4aBN26L3SB8cCHH8N6sADYfreaBcIo1t1CNSBP+14KfAE/uWogZIa3q73NfABbc/cEuWhLPmL6KHr2JSJqJaU1qKt6XBbTGJqm5/hY+ojSLju6q0UiL1Ukk0Se/KdmWrJNBuy/f57xuQuV4UO3IDimA4XS7FYW9Wa3ofxiYGR5puJSZPwSPGAS2RcbOM1mQmuBnIz63EcR1651UiFCnWmXeU77G456psKMTvQsboEjBrdff5wt/nwQUhxz6S33OOFXxdl0ggmWdqyJhn+iLVaf/p+L/hxwY9ziD0Qdx6NO2/EXQqyF018sqG9B+OOEwAlJmkyJGphgqCReoiiq2JKMK9G6eNIH13QHJX3Xl94p2Q1DBBShUgkIwacOuIRqlq3dhAEiujxODlH0NwNLF2w1ho5m/z1F96JAMKHlvHvboigwi4W87ncPBNtmYWpwFRdp5aSmrdcdYNFS5Gp8u6/WwbRdTfEGJSy40MFWwYSGdgXVNCZg4AzgG7NtIZ0itJrQQ7swgI1zN5A+brIApU+d7OgWW+QhRFRmU74F4mykpdt+lbnIYru6l4kJWtT5EWesawQ4T2H2Gdc6fcXkwPzzcY/WoTOwNohyl7ugxTGMFU8qiFyvVHKb5Ua02hXEyguGVcPPXWFbtoZ0lSDRojN7wvcPS/iMCvaVOZRJIqM6hLMa53WbWgj0RFukeyQF58n/FbP5hnJzf3GEWMZzZZIrCS3SDpzUGJZ6+9mIOJwfqxlEIsoFrc3q4//PwfLWu8QydH7k6uCoOHi2Xl+wGVr7AGtEc9XHeaYpBEuUFJ0ZpBBxz06H1iDwhZRRAksNsHgYlnxLwTfiQwWDx1tG6Q1lvTGIjkCjZm5Za0hR7sDBnlvKOKUPnRIpC18oux8JnSFX3r5I9Ya/gkI6vNi25YkShNOvL0u9rTbF2k6I56jgu2A9VPV2tur7htz5D/Otvmfz8bcsmVIQFFJjDSTqluPtU5wcIpyOkfol+MBuTOa/EUmX5D9vlFWZG2tscQil0ofQNkwuSh/JEoSSYDFkzkP2pFqy1ZBvLlfxDWqNck4IhvQcboMWet5WH9crzY3+8ec6KHrDFZL7ebDh+3XhS5i/e1+83Cz32w/tV4QNaPvLXpvGBm5Cj4r+CwH5gHWJcLkB/0iqDdY51LCCbmcZ6iBy4us69p15pKjwlUEsjjD4vkmhnu1PqGspYxcJkijiRc6DeI7ds/pqUgrVj2j2E8RSjrQ/3URy+XtPt/ernc7Gtb6wpX4cU01eSuirBQ8wcbVo565u9l8WK/GyJsMxyJHf/6IxBt613eta/DmX3Cvn0th+hrewEhBiEALF6LoQiS3GSKbIVYztDCNHfbUX+GIXWeggoMxsrkiUDgqqOBoOg4jhW2ccr4pdtu8Zrwzg5VmFApPRfKd6FeuJBkIIw3ov/qkmOXebj/ef1izXQQ/tFmWMWQxF21ZRN26bdENPa6a\",\"X0FIkZVEMXEqmgJmeeJuV5ZozblWKTRjHa/+08QlzyOZ8KZA2RmDub8pdTq5JSAzJGF4AncFUUvc8L/uLTFaXRdksqeiwSefJPJs8qfg36+poojauMxTjJPwyRsrrwVTRCpTzHpaKhUoi2hfl8nkHiUlObdVakXj9ZNUH0SJGSYr/WvLY5mWjIVRFEedLPL4QdyRpZYASCyE3BEOMkeIxQoZTle91A5N+xQJu242LGFC5LLNRSlUEJSAkX7/0sUud3kgO4FVXXTKDzlqd713WUfI2tfNtgizLI2KJsl4psjKW5SXWSYz2Uk1ThUkTWj7peohh/dqpe9/aWnEBCJvNOJ1dFHHeotPRiJyt7X8JC3u8RVeoCrijMIVqjSkQMEsYgUre62lyjAo0RjbaGeMm2+jT4OvOc7TL0K5lTWnE2+6dak2SrkVduhxwszWUvn7wP+ZM1qUS9tH7qxdIjheaf0rK6LVTBoJTIQuJ5ndc2uG2g63imsPFTiXC0Al4ITRZaTwVL3mc1D9fFTjgNJtACeO2HMVHOzRh7N1zccxn8ez/lPWNo/DW54kRvOIz4XsPLf+0XsjjN6mhc9P5LDDPC9kLl/iqePXJ26tuQwzKN2aFwtM6iP8NVdozMOmJHMsBb6oeqPua6QwqFtRB7HijivusUI8jCjJlqwsy5IVZZYUCSsK9eaidJlFcRqyMI3yNC8irOACSb/RYAFEpi7GMkSk1q9HuFc97k5cQwWSX6duBnMwBEOqOCLAksQCjsiNS7jvfDSDHcA/lS0TlozEH316o/0xIXIknI4EzpWVngdq8eRBBT72SI7+kzOUN0IPmn0cVYPEOlPA0vlOsyTZ8EZNj7gvPIue5/wpMJdGvBf8OEwyaGq90cybGau+WH5l6iuiqGOdssR5kjZS73bndR8gSJ952ZMwRV7shFs8pM1nUfY0D1U9gVh4ZSZF2CgBM0vEPt6skZN/KRfEZ8Tqm2HsLmPulwVeNcmV08KuwjIre1Vy9FXMNMybJcWyWE9cZFEYs9FeRfjTqSPBCfO8DEmiyMg45VACyHDV16ehb9CqX5A1y5FUSub06HsvNo5ei5kX0UodJG2UILEs1wuD/K655BuPRp/FGhxaUBOoxKVrZVphXPp7W9MhqCN4hHSj9tyoTuDQ8QmhiuflpQXgZUiG9dEPpHheviIrooHHiF5iGVr5IOqjxjl7RKl81ChkRT02V4476hRk/11A0b7KvIwly+SfLI6LoogKlg0GFI1+PfxPxT0WVxzoyQUF5UhHsyZ5LzENsrcMBOUrKzOL4ohEhMc8AMt7Th9mfW/NiW/In4jXTGmOsIfgpkPrrx4xjk4wEjsk+b6oQ1eyygRbbByedYGGKxcKyzLdxnl2XGFc3SjzoqwnmkUMlFeU9jjnnrvnO3PmXJ/z3A8OKjibh/4kUOgHH4Ge3g44Ag==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-yXDtYIPYo2x8mSLCuW2pE050I2g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1826da86-0001-4fc8-86ea-cc3f6186b0a4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:25.392Z", + "time": 345, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 345 + } + }, + { + "_id": "22f8fb1aaad65aee0c305a58c94b61b9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow8\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow8%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2af60643-982e-44c7-8268-e9f60e9ee837" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:25.753Z", + "time": 124, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 124 + } + }, + { + "_id": "a9493412f06aa37e71bb02999049ed77", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow8\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow8%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "774ea3f4-4541-463d-903a-f60964bca666" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:25.882Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_id": "dac080469cc601d406e477766a738873", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/draft" + }, + "response": { + "bodySize": 4473, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4473, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"40e1-Q+rV0bnCwnVt71NZXImwcbhubjk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ad864feb-47f5-4746-8bf5-4d748dfe41bb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:26.039Z", + "time": 334, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 334 + } + }, + { + "_id": "9df4e0417186278cfcdb33eb6f85aafe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1882, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged/published" + }, + "response": { + "bodySize": 78, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 78, + "text": "{\"message\":\"Workflow with id: wfEntitlementExampleIsPrivileged was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "78" + }, + { + "name": "etag", + "value": "W/\"4e-gIij0YPtc13KQvXr1PGQiqJiRfc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "26e3c945-d1ac-4556-8790-3b1bc1bb559d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:26.380Z", + "time": 328, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 328 + } + }, + { + "_id": "55a951fe87b006b390ca2205302d9149", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1976, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/wfEntitlementExampleIsPrivileged\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FwfEntitlementExampleIsPrivileged%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "86e22ed2-d22c-4d97-897c-d9b33da19dbb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:26.716Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_id": "1d31c687786579e4ccbdb2dd9f607963", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"wfentitlementexampleisprivileged\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22wfentitlementexampleisprivileged%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9c2c49b7-fed8-4f7e-8134-9bc275a896b8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:26.871Z", + "time": 119, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 119 + } + }, + { + "_id": "909e2175c4ff06b58318849cb58b90b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/draft" + }, + "response": { + "bodySize": 81, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 81, + "text": "{\"message\":\"Workflow with id: phhBirthrightRolesRequiringApproval was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "81" + }, + { + "name": "etag", + "value": "W/\"51-QRezKwCScpSwPmN+tbYjEg+0M00\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "defe6ce1-be0b-4956-9ffb-44182158f9cf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:26.995Z", + "time": 376, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 376 + } + }, + { + "_id": "8a4e20cfa54c0ad3da9324f1e734b0c3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1885, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBirthrightRolesRequiringApproval/published" + }, + "response": { + "bodySize": 3194, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3194, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"22c7-Fxiv6DPSM2Tzey4E9sFb7V2q5oA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "29a35f78-b546-4a37-b5fd-468dd4086265" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:27.377Z", + "time": 389, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 389 + } + }, + { + "_id": "9985037daed555ed112401d63b457c2c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1979, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhBirthrightRolesRequiringApproval\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhBirthrightRolesRequiringApproval%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5f33d220-f70e-4d19-af14-d57442dc137c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:27.781Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + }, + { + "_id": "d6af37d571f17f146c5b128b4de20338", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhbirthrightrolesrequiringapproval\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhbirthrightrolesrequiringapproval%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "66cb6027-a62b-4234-ab15-f47ed0047df8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:27.902Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + }, + { + "_id": "ad1f659d42778f56b814b17061da4a7f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1877, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/draft" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Workflow with id: phhDelegatedUserDisableWorkflow was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "77" + }, + { + "name": "etag", + "value": "W/\"4d-XXvemAx7DjeH9f0KAf4KNtJxYvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "407cb575-82c7-4dcb-b5d7-e37d7cf0a5fe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:28.029Z", + "time": 348, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 348 + } + }, + { + "_id": "fc5fb53194142dd5b7a7934978ad1a87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1881, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhDelegatedUserDisableWorkflow/published" + }, + "response": { + "bodySize": 5988, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5988, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"47e1-6wVqvyX+RcCEUSF6iXcyh3XQNw4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7a53d1c8-866d-425d-8da7-b080cdfa39e1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:28.382Z", + "time": 395, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 395 + } + }, + { + "_id": "50ec0675fbc8cdfecb7ccdb78b6902ff", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1975, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhDelegatedUserDisableWorkflow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhDelegatedUserDisableWorkflow%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 286, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 286, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-02-23T23:37:29.474267906Z\",\"createdDate\":\"2026-02-23T23:37:29.474219019Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "286" + }, + { + "name": "etag", + "value": "W/\"11e-nQNdFYBG0TBYzyHC5DcPiPAj0G8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5a53ef24-7961-4764-a56e-10d1b63d902b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:28.788Z", + "time": 130, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 130 + } + }, + { + "_id": "e3f19a021d7c5440d501370447983016", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9c10b680-a790-4f73-95ed-81b345f0f3e9" + }, + "response": { + "bodySize": 1167, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1167, + "text": "[\"G3oIAOQ0NXt9iXlrDJae5ErtLEOvDrJoUHSa4YlrgsNX0TdGDSOKBrQbTit0uPYNhwNOggqyt83mGm59+znMdiD2AaS17rCnC0GE69MTVtronCZVvB000I9gOrY+LrDAfHMliDAorLgOC9S4+uOvc+07RPikjwtrfbChk9b9zG4HjYO9WucTe7y+9p0lPvNZ5xtYwBeh3koHxDs4KRA/Tbj3ftu2BXr+n8rs1a400txwlHQXwWOBd/3e8Q5tpa0eEP+8w1ohAjUZPFWLrhmO2tiEQTuFQWkistJlZWEZ+nbB+5SqLxioadTJK/ROOAyWByWyDzYYWODSK20QIZW57ufvxrqX9Zq2zytsvY851v0MC5RpqECE9/mL2GpJjWmKQyckFiG58+2gsacLsd7Y6un5pt9YGsTOdCqv+/lG8PFlrQ9YwLEFEBR3B4WIhTjHjR4LZN3TId4hqv9m9gOikAv01g6aEPljgUGpfrtvbyC2tB20QGY748etz+6eff/wKe1nKvkxCuL98fj7sYB5k7zxLpPI6JP1qFNImHPLKG0t2gUhfHAyuAidrW5aOWyKa9RKJwwlO5RcSmd0yM55inuZ1i3ljdIGtPYHuvYxD0HU/N5vgx29lmdjRIqG2FSGJQ/Y902/sZJ2lsqUoPNPYN+kLLX0NhvkLifUkjcMUnm01nFllPUUFJ2lUEXr5hWGpgl1TQK9KoSWC+WaNLnUQCc+0zjT/PmgoefET6wj2M8HDTY7+8igpEYZ5mEzGY//p4rnTQrCNF4qR+lIoK6qYm7GYG6qiORscMTpLHkplbIqaGpzqE1tGAw1NFQFz2SCLJbgBCVUs3sJ+tpz0uuZBiVIS33BncJgVP/69IbVTZr4DxT8B8u07mdUnf+uit4kl7KXxhispBVqrzmmmjM2SSmYkG0NRGfZTA4+m4KiyYza8oC5ZIGSsqm2chmMIvfS97aOS2v913Qc6UzgDvH55drHTPuuRv1uZAdLud8mm51F0YGRBkAGt7YyqtdPnU4GoUJz3HQ4/O8F6CXt8+ijFoXeZhE8W88xucBR\",\"N6cwGKroRVbaNN4UBVjg30EvIboFLjRTTTNBvMPHxuofpUkQQXJpkUuU6iepojBR8xP38g9YduMMmJfhLmp5Uto5paQ3f8DjAQ==\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"87b-2RVVi10TQk2eTMKiwc5k2YgcewI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "62d6d1f5-3fd1-42ab-aca6-f800de33ee68" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:28.923Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "36649ddd5ae4900d6697404f7cfea519", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1961, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "formId eq \"9c10b680-a790-4f73-95ed-81b345f0f3e9\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%229c10b680-a790-4f73-95ed-81b345f0f3e9%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 506, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 506, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-02-23T23:37:29.474267906Z\",\"createdDate\":\"2026-02-23T23:37:29.474219019Z\"}},{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\",\"metadata\":{\"modifiedDate\":\"2026-02-24T00:52:45.670908772Z\",\"createdDate\":\"2026-02-24T00:52:45.670896494Z\"}}]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "506" + }, + { + "name": "etag", + "value": "W/\"1fa-aFTVKjEHL3NO62vZIBy9sGiW0v0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "28e821bf-e9b7-4fef-84d2-a2cb7a64b6db" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 454, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:29.031Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "92b77c262e4796dffe79161a6b193dd6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1880, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/fdf9e9a1-b5cf-496a-821b-e7b3d5841252" + }, + "response": { + "bodySize": 968, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 968, + "text": "[\"Gz8JAMT/n6o/rZw7IxepMyb9947Mk8UPBgWwOz9/rdxnFP/8t9tUQVVWFbS02nV3lhgtcC5n04Yvt8ws/lbgoFf00zItPKP24PPfyA1BYBrHTJGhtYyUbQP5bDbBn8zicSJwaAWBQQ0ddXKZ9dVqyMqullmbL/uMmr5QVVsu8yoHh3XxtVN60LI39M67iXzUFCB+/ubYO/80GLeHOEMrCEzjeEOG1jKS+hzI32jj/K+u7Wcmjr+edhAFR1iNtJEB4oyV22ychfh5xt8NRQlxBl6hwLLzxcD9pKQEH2h59H5wTOgEZ9QMcBn0Skbt7OcXwgd63mpPCmKQJhCHDo82krfSQES/JStGiDOspcQXus5x6PBFB90bEoOF+ZFHXFWggD0ZzcenO12cKoOzbHD+NiQ5Hq86JY7+wz5U51HhdNHhepR2LXFgb0Jg59za4LCtXfZ44wFpCTBbs8cbN7BLG/Wo3nka9CHQfjh5bNIXJlzCikIQFKWUPd7Eejx0uPFyiAAViSMthiMVItrcd3uYISatwVg8+5+9d3h6pm2ISByRDqhhepTLF2m2BIEhhPizUZP2xxsZidwQd6QQMXxYpmQkTwgb8+dAnk3zYikN/cxZ9kQQ4mN3QGmKgHu4RD74PX+CrBz6xZNDh9dbE3UowqM951p1mH1BusSI/HcayyHB/a8Rar569/oNsxDBQdpYHm/YE7EnUCOKMlSriCVJRvIxSh8ZLwhbP0kIqnLtpU0avSSrcHX31qoXyIX4DqI3ru/czlJKZxl8ykI8TCdl+WDtuP53KpGFauWfw7CNuXrnDEmLfBVMNkieCNbAfxDiw+D6/7R6J+55H0w4kFvBFPv3cDCTEGuMBOxZpfQ7cdRXhSEE8zcRn47arTEcG4pSyYsCuGKibL0I+SKvs0We5cWnvBDVUpTdLC/bH+AouhJO4/uUC7FsZsum6Jqi6eofSAk=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"940-WmSTA9uCGJvK7zt2eW3tlbMLeNw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "008f5021-1bba-4bbb-b936-3e14680f100e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:29.153Z", + "time": 133, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 133 + } + }, + { + "_id": "12a358d93d65bdda1c1e23407ca11c0b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhdelegateduserdisableworkflow\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhdelegateduserdisableworkflow%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 988, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 988, + "text": "[\"G2sJAMT/ls3TlXlnojabyrHLthP5UVqEFEi3DD+t+3rfrXF23v9OQhMaPPrkgelc4QQ1sV4JzvFsjOa6gQMR1+p3DehR/x+2XG8jxAZHq1mZ09UQTwNqKbz/qVwTBLrVKlNkaCkjZX0gn/3u4FNm8a8jcGgFgVa1c5rLjaypFm1WzmuZzfKNJqNpU6hqVm7kVQ4O6+KJU7rVsjF07l1HPmoKEE8vHD/Of7bG/UAM0AoC3Wq1TYaWMpK6CeS3tXDznXvsyxLHm6dviIIjLFa0lgFiwMKt186qk/22pighBuC1CvxBfT9wPRUqyyX9kfpicHToLANqF8hq9UJG7ez6A8IlffXak4JopQnEocOBjeStNBDR9yQlAjHAWrP2kNdpHDrc6qAbQ2TwF/5II6OqykDfCe3GdZ8Yd5TBWdY632FJg8frS4kjpbEO4zlQOLN02FpJu5Q48CM52A07MgxsPlt2sK2BbAkwZ2YH22rg60fmQJ17avXvjgOYwGliHT9BuJKVgoBpaCc72F5vDR22vWwjQE/iCKAiVBxrG883giaWrUFYNWuR7xWevqgPEYkj0i9q+CFV1q00PUEgCyH/ORKd9n/bMpJqXCcB30AMUU7ZKFMykiaS09hNIM9+EKZTHBYzZ9mwQ6CSAyqxoHp7iXQghlRBW37TJZ9Dh5PeRG0KMbc3bLEWTAvZDYyI3Ki8HALc/8qhsc3zk1MmoYSD7DR+sM0+yXtojsjKUK9FJZ1kU66i9JH5heSMoASE3qWXNu5NpFW45nfHqgXQcXZL0RjXGGluKaVSBhdZyA+FojzrcbwwyuJExjBcJO6pcc6QtIhXLFpGnGA9gMyEuJwNu+aDFvcz/J5FTPsWa0qmMIsSbI0ZgryElF4SR02skIXgl54o9Y61vTEca4pSyScF8NxKUe1dyCd5nU3yLC+u80JUG6Kcj/Jy9giO6llEHny9ciI2pqONaTGfFtN5/YiUXhI=\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"96c-PCat13uKjvG+ELIfnx8oH8GAei0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7372ead2-32bb-4658-aada-6ea7aca12e20" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:29.295Z", + "time": 148, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 148 + } + }, + { + "_id": "d60d691416c293d72aed6e6869ed2aaf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1858, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/draft" + }, + "response": { + "bodySize": 58, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 58, + "text": "{\"message\":\"Workflow with id: phhNeDisable was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "58" + }, + { + "name": "etag", + "value": "W/\"3a-P5saSw0lCkTOzjQ3s7XPpznTdHM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "963c33c0-27c7-462e-8c9a-e719d2faadfe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:29.448Z", + "time": 372, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 372 + } + }, + { + "_id": "21730d324ecc71d802e367d76e2332af", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1862, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNeDisable/published" + }, + "response": { + "bodySize": 1650, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1650, + "text": "[\"G6AMAGQz1Xp9MfhYThjZKY0Z7bUt1blWmPEwIiTzlga9AJmun59rEa/9UkRKfPJxb7chIn87lYR6WoQsZokUTGrD3EhwjzbTi0oAXP+AZ4wBLe42mxW9jupvE6FB9luiNB4wHYRn7TqFXq1YeKL9JHclZuapx5/6++OO0A4+KRlcC92hXRrUQjtF+9+zeVT29797/XpweTmE4fjwvD+5vPXj/J+zD/CaEo2+EPyWq/SkaLCYklWFoPmP9ewzMj2U3wrtLEsDIvZDi0UqocFcS5/9qQuZCf3cAi3XlKYbgwgORYvDeIShd0aLiz3HsAdfQH35L5UkkkJVEj1tpFjCrxKEZm5/DQn0nsH3BdrVixzD3sKx4zsvS74Ngw7m9T+wHan86SX620TazK+YSa/yIUAneN92pNLM1jHM5leOHRd5hGfHAIsFvKPiFn2uAiXDEDm4N9UxgG6D69v/oYPrJPCysG2FfGhmcfSLbafWe+5pwd2gixns38/0IcyvtOWR+CnpzmqJo7YxSEy55vQopZJ8CE0+yOGGVw8Ki6okC4cGHDo0fD7HAH1mzYnalMfGYdd1QauMPL4qMTOMo1Kg6zp5HdnMX700gg+vLTgsJH9gUQng+l8qyWPspT3l8vPSqiSwAV70XoC98bdK8vizF79V6GJVC+BwTdvsbUyFxKGFmeh7tOsYgL6Bw5lHg2AfZg5nRtE9hkgpqEMLDquSrPyWzBjviP91DWWz9TGZdQwOHQNMRcLoLdWailYCcEyOgOb4FGusq5I4NMXBKmABU1Aq4AQTWhjb/1hjCpCD0+BF/CNYTFA7+O9GzBwHaHSltzq3+ClXLvAKlnNAdXjWbIcsb3y/GYSjViURyARbndpd1U1DUQEcbhW4zKFt3svadQyGQz6rZYQAug72wWH9AWK+8v86NY8cHWBPn0ejAQBgQlL8A23+IOVxJGkjD7lxeH0J0Ai7r12iFqw7hTpPLFzfxbAyreIX3HvhxuEqw+6Fs2DJkSCFzQkHD7lRc8OxCjf5aYlDh4Ym8LLOGiNBT85TPYn3W8lCP1b4+Nv1CrRI5NEx9JomOqRxiAY1/jKHRj62NcfhsdGcPi+cVdpm3Xh9/apT26Ta6L8r10DWGpXom+J4guVQKqChqk4hPIxEsjQO34hkgdTvmQSCjnq0QmrHPtrT\",\"Tex0C/+7qQV2BQs=\",\"cgV72hXQAKYrTI4dN4ZRu67r4Tt8zj5Q6OgNcJpuDF63hWfpVzmQon1G4rDKgdA+4wPas+WhwUe0R6enJpViHpFFbfCGAxrkHCj3eRH+FnlM9IF3teQzlumto76WvNvlT5wzpcUqFa4QYaY3IRbezu/zHQkF6bKN13ALdZTOtXpNxcdUwLzYp0DSJWPouPXyFQ2uf7MuF7Sote9J9f/zUvWYPsyTwXW+1FnR/ndjcCgqPg4wqP2Gtv5/eNRu75hZ0T5PE9BDpKywLThdPsQtJSbxucJvxUt5rvvQZ752hvgpZbWO51/C/Mpd8o9rL5LvH6dFHvILFFPvw/kZFf2EGCn+nMJAolbm3etOk8Eaf8o8xFHGGl6M4NFH58v2+PLy8vL44vLs5OLkJKCHtWeHR6fL4+Xp4fnp+cUUfYNSFS0uftwuoMFtRbumSKUJ\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"ca1-7S7R/DmhuFMhLClHlp+MyNai0Pk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e45b2e5-5c94-41e3-aa26-29dca04d9e8f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 483, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:29.825Z", + "time": 365, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 365 + } + }, + { + "_id": "5e7b503377cb83d4bb18c3901fc29746", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhNeDisable\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhNeDisable%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "eac8c382-3fee-4ba2-b6b3-3cc066911faa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:30.196Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + }, + { + "_id": "fb4743a9a7983edd94508b5b7ab1a9eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1934, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnedisable\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhnedisable%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c04e49be-5624-4e30-8321-a42f3af453e5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:30.316Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + }, + { + "_id": "4493130f860e0b9e553ac53b515d3542", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow5 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-qBpbruiB0bXLR2bVIOVJZfGP2Ns\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6287684b-f1be-47e7-bbef-f7f27de6231c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:30.436Z", + "time": 337, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 337 + } + }, + { + "_id": "186edfd2d4c88080641ac31e89f8e6a3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/published" + }, + "response": { + "bodySize": 4153, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4153, + "text": "[\"G3FXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRVuW+tN6NiTIyL/RuG54mEme7qwO4PbiImiIqwuqanlyAEJBkVoPHMPkp2eJIXBSTvWNjz7k65W2RT+Md2E6RtKnH0RF5BSajAo/NfjX1uO3NJgYLmPU4KPl2GBZ9SoLCnwvg+zQPb2q/8ySujYfPjJ7u/nhCqlncOKTxZPEMVUnAeTw6qn68pwGcr+Fifebfn7nmRI2OYM5nlGUvLcLeD86YnNwsNTfbcPQMFH5ccVhagozZXvYLGF7/zeIoerRmxeaj00HUUzOCFiWiYm/v7h+2XNaR2D1BBO3St6roetU/mXd4KZClncRmlMNIAl/Owfre+3d+GPivTca+Mvt9MGsZZJMtG5FEM42O67Y9GQnXY+goUuPDGOqheQbn1y8mic/EN5O2AFI5Xdo9QQTCf13qFrdJIRF6xYgonV2BA3nVEmiOnz9+v5VdiWhJ6ODl4WNhR3iUrfSCtsT33ta6Y66s1IYScud3/3ATkL7KTgZtaHtB/4VbxpkM3nb1ZoKXFzdN33Ujy18Kbujygn06UnMy7PC3xhfxFLsVAZ9kveRrmm6gDD45ttQ/XAoMl5nPBhPwRzb4ombxd7yeUvI6UvI5JYeAHyU8wLoIQQpSsSA1Hybp+GQwObVBDcAtoiS/LlWkuanvRaH+Gj0slaUiocY7vKhJDZ0IIKU4bK1JUxPTVYvF/FP62ytw5ddAP2CFA7GsP6/6wAcXoHyN/GOPjm1qPs+ms1vN5UOtprYuXJR4yypp7N7WeTWcwUsAzal//WNI69ah9g+pivGrz5yShgjtrpNmj8+ueq26P/anjHiMYKQCldcl6qldaorUptPXomtLiClVCQXKPDUcQp5hTZHmh/5gmcxbO42SehfMsnEdhGM5ms6U3m912563Sh+kMxpECOsG7ROpKdMg/E0tfEBYJ/CQFct0/J2HL4lSU5SIrs3SRtEm6aCJMFm0pm6jliRRthqBwFo+cjhTw5aQs3KytpkFV5kmieRHiNKZTaI9WmlgThEJnrQ6NgXrJPlnbgjl4c2KjJjaONGH/17emw6DBrGgLFi140bJFEku+KJlsF0XSNCLLkjjvXJCFUCC5TxuMiWfl8WGyCc6cTh8rgdor3x35iZXXs09+/50=\",\"zATc+Br4m4Qz\",\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-XsXcKA404baF7YrgvvPTn0WEFxU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6c5608f7-8abe-4b6c-b9d2-fa8e73b3adf8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:30.777Z", + "time": 341, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 341 + } + }, + { + "_id": "8e237cd193960baecda1783b237cedd2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow5\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow5%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c594a20d-aab3-4e94-9a08-35d06c502902" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:31.128Z", + "time": 218, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 218 + } + }, + { + "_id": "6b9eaf36176f60f136161282792b5513", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow5\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow5%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "655fd813-32d2-4d2e-8136-735b6bc9de78" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:31.351Z", + "time": 117, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 117 + } + }, + { + "_id": "0778b875047c9c823bc46dddd54eaec7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow6 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-cWpDDMk+B3q5+OhjV2f+W63MX48\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f9591690-3301-49a7-b2d1-1fd5dc151791" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-05T01:27:31.473Z", + "time": 249, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 249 + } + }, + { + "_id": "e263fe010536546216aea608995fdf13", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1863, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow6/published" + }, + "response": { + "bodySize": 4157, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4157, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-BM6tyrCqwTf8KQ7UX36cyRNgfrA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b97e4531-9ff4-4ef7-8f49-f79d47a0716f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:31.727Z", + "time": 328, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 328 + } + }, + { + "_id": "1f79bd615363f6dd13137103ff660262", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1957, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/testWorkflow6\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow6%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b9e44717-0133-4214-8822-40229a05206b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:32.064Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + }, + { + "_id": "f7b923fe51ec7a0a08361cafc737b808", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1935, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow6\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow6%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 44, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 44, + "text": "{\"totalCount\":0,\"resultCount\":0,\"result\":[]}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "44" + }, + { + "name": "etag", + "value": "W/\"2c-iotyA6VuHDnFn3by3ivfMq6YeCA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2a418e7a-4d96-4e79-82ea-5e185e5cef75" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:32.180Z", + "time": 114, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 114 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/oauth2_393036114/recording.har new file mode 100644 index 000000000..4336f82ec --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_xNAD/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:15.633Z", + "time": 94, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 94 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/openidm_3290118515/recording.har new file mode 100644 index 000000000..1108a1271 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/openidm_3290118515/recording.har @@ -0,0 +1,1597 @@ +{ + "log": { + "_recordingName": "iga/workflow-export/0_xNAD/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:15 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:15.736Z", + "time": 65, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 65 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:15 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:15.933Z", + "time": 62, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 62 + } + }, + { + "_id": "4ebf3b086807fab20479cdd799612231", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1931, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestAssigned" + }, + "response": { + "bodySize": 832, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 832, + "text": "{\"_id\":\"emailTemplate/requestAssigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
.
\"},\"message\":{\"en\":\">A Request was assigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Request Assigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.447Z", + "time": 122, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 122 + } + }, + { + "_id": "d1af2e88bb6b7669a4442181a5255f88", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1933, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestReassigned" + }, + "response": { + "bodySize": 832, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 832, + "text": "{\"_id\":\"emailTemplate/requestReassigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.
\"},\"message\":{\"en\":\"A Request was reassigned to you to approve access for {{object.user.givenName}} {{object.user.sn}}, please review at your earliest convenience.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Request Reassigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.450Z", + "time": 121, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 121 + } + }, + { + "_id": "b0b331a468e01a40d4f5739031461249", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1931, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestReminder" + }, + "response": { + "bodySize": 672, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 672, + "text": "{\"_id\":\"emailTemplate/requestReminder\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A request approval assigned to you is awaiting your action.
\"},\"message\":{\"en\":\"A request approval assigned to you is awaiting your action.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Reminder to complete Request\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "672" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.452Z", + "time": 126, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 126 + } + }, + { + "_id": "e64c6b68abcc8cb064b7c52303d1046c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1930, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestExpired" + }, + "response": { + "bodySize": 642, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 642, + "text": "{\"_id\":\"emailTemplate/requestExpired\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A request approval assigned to you has expired.
\"},\"message\":{\"en\":\" A request approval assigned to you has expired.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Expiration of Request\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:17 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "642" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:17.455Z", + "time": 122, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 122 + } + }, + { + "_id": "bc6ebd9cc6131623dfc43c1baa45d26f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1932, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/requestEscalated" + }, + "response": { + "bodySize": 657, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 657, + "text": "{\"_id\":\"emailTemplate/requestEscalated\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A request approval has been escalated to your attention.
\"},\"message\":{\"en\":\"A request approval has been escalated to your attention.\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n\\tbackground-color: #324054;\\n\\tcolor: #455469;\\n\\tpadding: 60px;\\n\\ttext-align: center\\n}\\n\\na {\\n\\ttext-decoration: none;\\n\\tcolor: #109cf1;\\n}\\n\\n.content {\\n\\tbackground-color: #fff;\\n\\tborder-radius: 4px;\\n\\tmargin: 0 auto;\\n\\tpadding: 48px;\\n\\twidth: 235px\\n}\\n\",\"subject\":{\"en\":\"ATTENTION: Request Escalation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:18 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "657" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:18.446Z", + "time": 56, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 56 + } + }, + { + "_id": "ac10ed5d7768dafd2dd1b9f0ff34b8cb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate1" + }, + "response": { + "bodySize": 511, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 511, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate1\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template One\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

Click to reset your password

Password reset link

\",\"fr\":\"

Cliquez pour réinitialiser votre mot de passe

Mot de passe lien de réinitialisation

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Reset your password\",\"fr\":\"Réinitialisez votre mot de passe\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "511" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.793Z", + "time": 73, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 73 + } + }, + { + "_id": "5f5820c9bb25d896efc0d7ea5e29638a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate2" + }, + "response": { + "bodySize": 304, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 304, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate2\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Two\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

This is your one-time password:

{{object.description}}

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"One-Time Password for login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "304" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.795Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + }, + { + "_id": "203d396202ec59f80cf2ceeaf7211ee9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1939, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/FrodoTestEmailTemplate3" + }, + "response": { + "bodySize": 401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 401, + "text": "{\"_id\":\"emailTemplate/FrodoTestEmailTemplate3\",\"defaultLocale\":\"en\",\"displayName\":\"Frodo Test Email Template Three\",\"enabled\":true,\"from\":\"\",\"message\":{\"en\":\"

You started a login or profile update that requires MFA.

Click to Proceed

\"},\"mimeType\":\"text/html\",\"subject\":{\"en\":\"Multi-Factor Email for Identity Cloud login\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 678, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.796Z", + "time": 70, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 70 + } + }, + { + "_id": "533fc1b70b1f2a683584ca8b128a468a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/frodoTestEmailTemplateFour" + }, + "response": { + "bodySize": 1379, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1379, + "text": "{\"_id\":\"emailTemplate/frodoTestEmailTemplateFour\",\"defaultLocale\":\"en\",\"description\":\"Frodo email template four\",\"displayName\":\"Frodo Test Email Template Four\",\"enabled\":true,\"from\":\"\\\"From\\\" \",\"html\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"message\":{\"en\":\"

\\\"alt

Email Title

Message text lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor.

\"},\"mimeType\":\"text/html\",\"styles\":\"body {\\n background-color: #324054;\\n color: #455469;\\n padding: 60px;\\n text-align: center \\n}\\n a {\\n text-decoration: none;\\n color: #109cf1;\\n}\\n .content {\\n background-color: #fff;\\n border-radius: 4px;\\n margin: 0 auto;\\n padding: 48px;\\n width: 235px \\n}\\n\",\"subject\":{\"en\":\"Subject\"},\"templateId\":\"frodoTestEmailTemplateFour\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Thu, 05 Mar 2026 01:27:21 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1379" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-46ef51ed-224e-426a-b1ab-01c626a1bb58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-05T01:27:21.800Z", + "time": 67, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 67 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/am_1076162899/recording.har new file mode 100644 index 000000000..decdd9930 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:30:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:30:35.857Z", + "time": 265, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 265 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:30:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:30:36.249Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/environment_1072573434/recording.har new file mode 100644 index 000000000..a2df162fd --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:30:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2574ac39-0d2a-4b04-9e4e-51c30d50dc95" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:30:36.375Z", + "time": 71, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 71 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/iga_2664973160/recording.har new file mode 100644 index 000000000..a43e337b3 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/iga_2664973160/recording.har @@ -0,0 +1,147 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "f64029142a38862fb58bc7ec0e44e61d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1891, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryString", + "value": "" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "1" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_queryString=&_pageSize=10000&_pagedResultsOffset=1" + }, + "response": { + "bodySize": 32073, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 32073, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"74d31-XWzvBkk6xPb+fb4r+sRupq9oC/4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:30:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a848c6a2-6f1d-40db-8536-6e3ed03ffa08" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:30:36.529Z", + "time": 682, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 682 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/oauth2_393036114/recording.har new file mode 100644 index 000000000..56a12a5e0 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:30:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:30:36.146Z", + "time": 91, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 91 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/openidm_3290118515/recording.har new file mode 100644 index 000000000..83e05f525 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_890022063/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:30:36 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:30:36.247Z", + "time": 71, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 71 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:30:36 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-842f8cbb-2120-41d7-ac56-21546a487f18" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:30:36.458Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/am_1076162899/recording.har new file mode 100644 index 000000000..e6cfa6562 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_l/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:00.390Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:00.618Z", + "time": 126, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 126 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/environment_1072573434/recording.har new file mode 100644 index 000000000..2b8a4e0e6 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_l/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "335114e1-6a8f-45ac-ab15-a29cad7d5ab7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:00.751Z", + "time": 70, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 70 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/iga_2664973160/recording.har new file mode 100644 index 000000000..2cd5058bf --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/iga_2664973160/recording.har @@ -0,0 +1,147 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_l/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "f64029142a38862fb58bc7ec0e44e61d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1891, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryString", + "value": "" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "1" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_queryString=&_pageSize=10000&_pagedResultsOffset=1" + }, + "response": { + "bodySize": 32073, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 32073, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"74d31-XWzvBkk6xPb+fb4r+sRupq9oC/4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b0034676-eaf3-40ac-8c90-49e321d44417" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:00.899Z", + "time": 685, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 685 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/oauth2_393036114/recording.har new file mode 100644 index 000000000..6050442c7 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_l/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:00.519Z", + "time": 87, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 87 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/openidm_3290118515/recording.har new file mode 100644 index 000000000..a1dce482b --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_l_2828241652/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_l/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:00 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:00.615Z", + "time": 66, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 66 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:00 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-58f7a784-7c04-4658-b0a8-90251c772d41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:00.830Z", + "time": 63, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 63 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/am_1076162899/recording.har new file mode 100644 index 000000000..3710030a6 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_long/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:21.822Z", + "time": 118, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 118 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:22.065Z", + "time": 125, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 125 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/environment_1072573434/recording.har new file mode 100644 index 000000000..6beb154d0 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_long/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0a88b7cb-e6b2-4f0e-9bf5-e504cce5a207" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:22.199Z", + "time": 62, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 62 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/iga_2664973160/recording.har new file mode 100644 index 000000000..0dc817c1a --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/iga_2664973160/recording.har @@ -0,0 +1,147 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_long/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "f64029142a38862fb58bc7ec0e44e61d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1891, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryString", + "value": "" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "1" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_queryString=&_pageSize=10000&_pagedResultsOffset=1" + }, + "response": { + "bodySize": 32066, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 32066, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"74d31-XWzvBkk6xPb+fb4r+sRupq9oC/4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fb6c0ea8-4bf1-4d5e-9d14-bf777c36e6b7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 485, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:22.341Z", + "time": 835, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 835 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/oauth2_393036114/recording.har new file mode 100644 index 000000000..322c9dcc0 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_long/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:21.963Z", + "time": 90, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 90 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/openidm_3290118515/recording.har new file mode 100644 index 000000000..a9dcee96d --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-list_1584170279/0_long_276218670/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-list/0_long/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:22 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:22.063Z", + "time": 71, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 71 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:31:22 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b145bfe8-ad41-4882-b854-8637e8838b58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:31:22.269Z", + "time": 64, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 64 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/am_1076162899/recording.har new file mode 100644 index 000000000..32b88060f --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_i/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:01.978Z", + "time": 115, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 115 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:02.231Z", + "time": 124, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 124 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/environment_1072573434/recording.har new file mode 100644 index 000000000..e013a2674 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_i/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8d56d003-9b35-44af-833d-1accf95edac8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:02.368Z", + "time": 70, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 70 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/iga_2664973160/recording.har new file mode 100644 index 000000000..4832e5a37 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/iga_2664973160/recording.har @@ -0,0 +1,268 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_i/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "4493130f860e0b9e553ac53b515d3542", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/draft" + }, + "response": { + "bodySize": 4157, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4157, + "text": "[\"G21XAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRVuW+tN6NiTIyL/RuG54mEme7qwO4PbiImiIqwuqanlyAEJBkVoPHMPkp2eJIXBSTvWNjz7k65W8ZU3Wq7dzxAOPmK7Ym8gpJQgUfnvxr73HbmkgIFzXtcFHy6TAs+pUChp8L4Pq0Dx9qv/Mkro+Hw4ye7v54QqpZ3Dik8WTxDFVJwHk8Oqp+vKcD3VvCxPvNuz93zIkfGMGcyyzOWluFuB+dNT242GprsuXsGCj4uOawsQGdtrnoFjS9+5/EUPdozYvNQ6aHrKJjBCxPRMDf39w/bL2tI7R6ggnboWtV1PWqfzLu8FchSzuIySmGkAS7nYf1ufbu/DH1WpuNeGX29mTSMs0iWjcijGMbHdNsfjYTqsPUVKHDhjXVQvYJy65eTRefiG8jbASmcr+weoYJgPq/1ClulkYi8YsUUTh6BAbnriDRH7j5/v5ZfiWlJ6OHk5GGho7xLVvpAWmN77mtdMddXa0IIOXPb/9wE5C/SycBNLQ/ov3CreNOhm87ebNDS4uHpu24k+WvjTV0e0E8nSk7WXZ6W+EL+Ig/FQGfZL3ka5puoAw/ObbUP1wKDLeZzwYT8Ec2+KJm8Xe8nlLyOlLyOSWHgB8lPMC6CEEKUrEgNZ8m6fhkMDm1QQ3ALaIkvy51pLmp70Wh/ho9LJWlIqHGO7yoSQ2dCCClOGytSVMTy1WLxfxT+ssrcOXXQN+gQIPZ1hH1/2IRi9I+RP4zx8U2tx9l0Vuv5PKj1tNbFyxIPGWWtvZtaz6YzGCngGbWvfyxpnXrUvkF1MV61+XOSUMGdNdLs0fl1z1W3x/7UcY8RjBSA0rplPdUrLdHaFNp6dE1pcYUqoSC5x4YjiFPMKbK80H9MkzkL53Eyz8J5Fs6jMAxns9nSm81uu/NW6cN0BuNIAZ3gXSJ1JTrkn4mlLwiLBH6SArnun5OwZXEqynKRlVm6SNokXTQRJou2lE3U8kSKNkNQOItHTkcK+HJSFm7WVtOgKvMk0bwIcRrTKbRHK02sCUKhs1aH5kC9ZJ+sbcEavDmxWRMbR5qw/+tb02HQYFa0BYsWvGjZIoklX5RMtosiaRqRZUmcDy7IQiiQ3KcNxsSz8vgw2QRnTqe3lUDtle/O/MTK69knv/8=\",\"TlYCbnwN/A==\",\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"576e-EV4e0UNPrRI1CwX1BqNfHcbAlq8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "edbaa243-eb2d-4dd4-96c0-73b48059883d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:02.517Z", + "time": 659, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 659 + } + }, + { + "_id": "2e5df0566054fb493a039586d9a89939", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22382, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22382" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1879, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"id\":\"testWorkflow5\",\"name\":\"test_workflow_5\",\"displayName\":\"test_workflow_5\",\"description\":\"test_workflow_5\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"approvalTask-7e33e73d6763\",\"displayName\":\"Custom Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"fulfillmentTask-7fce35a32915\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"violationTask-50261d9bc712\"}],\"approvalMode\":\"any\",\"actors\":{\"isExpression\":true,\"value\":\"/**\\nDefine custom script which returns an array of actors in the following format\\n(function() {\\n var content = execution.getVariables();\\n var requestId = content.get('id');\\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n return [{\\n id: \\\"managed/user/\\\" + requestIndex.applicationOwner[0].id,\\n permissions: {\\n approve: true,\\n reject: true,\\n reassign: true,\\n modify: true,\\n comment: true\\n }\\n }];\\n})()\\n**/\\n(\\nfunction(){\\n return [];\\n}\\n)()\"},\"events\":{\"assignment\":{\"notification\":\"FrodoTestEmailTemplate1\"},\"reassign\":{\"notification\":\"FrodoTestEmailTemplate1\"},\"reminder\":{\"notification\":\"FrodoTestEmailTemplate1\",\"frequency\":4,\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(4*30*24*60*60*1000))).toISOString()\"}},\"escalation\":{\"notification\":\"FrodoTestEmailTemplate1\",\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(5*24*60*60*1000))).toISOString()\"},\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\"}],\"frequency\":5},\"expiration\":{\"action\":\"reassign\",\"notification\":\"FrodoTestEmailTemplate1\",\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":\"managed/role/be68f831-a8f3-42da-93df-84bbc66427f6\",\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.applicationOwner[0].id\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.manager.id\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"(function() {\\n var systemSettings = openidm.action(\\\"iga/commons/config/iga_access_request\\\", \\\"GET\\\", {}, {});\\n var approver = null;\\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\\n approver = \\\"managed/user/\\\" + requestIndex.roleOwner[0].id;\\n } else if (systemSettings && systemSettings.defaultApprover) {\\n approver = systemSettings.defaultApprover;\\n }\\n return approver;\\n})()\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}}],\"date\":{\"isExpression\":true,\"value\":\"content.customExpirationDuration\"}}}},\"approvalMode\":\"any\"},{\"name\":\"fulfillmentTask-7fce35a32915\",\"displayName\":\"Custom Fulfillment Task\",\"type\":\"fulfillmentTask\",\"fulfillmentTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"FULFILL\",\"step\":\"exclusiveGateway-94bc3d35f3b4\"},{\"condition\":null,\"outcome\":\"DENY\",\"step\":\"violationTask-50261d9bc712\"}],\"approvalMode\":\"any\",\"actors\":{\"isExpression\":true,\"value\":\"/**\\nDefine custom script which returns an array of actors in the following format\\n(function() {\\n var content = execution.getVariables();\\n var requestId = content.get('id');\\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n return [{\\n id: \\\"managed/user/\\\" + requestIndex.applicationOwner[0].id,\\n permissions: {\\n approve: true,\\n reject: true,\\n reassign: true,\\n modify: true,\\n comment: true\\n }\\n }];\\n})()\\n**/\\n(\\nfunction(){\\n return [];\\n}\\n)()\"},\"events\":{\"assignment\":{\"notification\":\"FrodoTestEmailTemplate2\"},\"reassign\":{\"notification\":\"FrodoTestEmailTemplate2\"},\"reminder\":{\"notification\":\"FrodoTestEmailTemplate2\",\"frequency\":2,\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(2*30*24*60*60*1000))).toISOString()\"}},\"escalation\":{\"notification\":\"FrodoTestEmailTemplate2\",\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(5*60*60*1000))).toISOString()\"},\"actors\":[{\"id\":\"managed/role/be68f831-a8f3-42da-93df-84bbc66427f6\"}],\"frequency\":5},\"expiration\":{\"action\":\"reassign\",\"notification\":\"FrodoTestEmailTemplate2\",\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"fulfill\":true,\"reassign\":true,\"deny\":true,\"comment\":true,\"modify\":true}}],\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()\"}}}}},{\"name\":\"exclusiveGateway-94bc3d35f3b4\",\"displayName\":\"Custom Validation Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"// This is a validation success\\noutcome == true\",\"outcome\":\"validationSuccess\",\"step\":\"inclusiveGateway-a6cf9605ce55\"},{\"condition\":\"// This is a validation failure\\noutcome == false\",\"outcome\":\"validationFailure\",\"step\":\"violationTask-50261d9bc712\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"inclusiveGateway-a6cf9605ce55\",\"displayName\":\"Custom Inclusive Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"// This is outcome 1\\noutcome === 1\",\"outcome\":\"outcomeOne\",\"step\":\"scriptTask-493f5ea87636\"},{\"condition\":\"// This is outcome 2\\noutcome === 2\",\"outcome\":\"outcomeTwo\",\"step\":\"scriptTask-493f5ea87636\"},{\"condition\":\"// This is outcome 3\\noutcome === 3\",\"outcome\":\"outcomeThree\",\"step\":\"violationTask-50261d9bc712\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"scriptTask-493f5ea87636\",\"displayName\":\"Custom Script Task\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"emailTask-2068f5d711c8\"}],\"language\":\"javascript\",\"script\":\"/*\\nScript nodes are used to invoke APIs or execute business logic.\\nYou can invoke governance APIs or IDM APIs.\\nSee https://backstage.forgerock.com/docs/idcloud/latest/identity-governance/administration/workflow-configure.html for more details.\\n\\nScript nodes should return a single value and should have the\\nlogic enclosed in a try-catch block.\\n\\nExample:\\ntry {\\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n applicationId = requestObj.application.id;\\n}\\ncatch (e) {\\n failureReason = 'Validation failed: Error reading request with id ' + requestId;\\n}\\n*/\"}},{\"name\":\"violationTask-50261d9bc712\",\"displayName\":\"Custom Violation Task\",\"type\":\"violationTask\",\"violationTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"REMEDIATE\",\"step\":null},{\"condition\":null,\"outcome\":\"ALLOW\",\"step\":null},{\"condition\":null,\"outcome\":\"EXPIRATION\",\"step\":\"approvalTask-7e33e73d6763\"}],\"approvalMode\":\"any\",\"actors\":{\"isExpression\":true,\"value\":\"/**\\nDefine custom script which returns an array of actors in the following format\\n(function() {\\n var content = execution.getVariables();\\n var requestId = content.get('id');\\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n return [{\\n id: \\\"managed/user/\\\" + requestIndex.applicationOwner[0].id,\\n permissions: {\\n approve: true,\\n reject: true,\\n reassign: true,\\n modify: true,\\n comment: true\\n }\\n }];\\n})()\\n**/\\n(\\nfunction(){\\n return [];\\n}\\n)()\"},\"events\":{\"assignment\":{\"notification\":\"FrodoTestEmailTemplate3\"},\"reassign\":{\"notification\":\"FrodoTestEmailTemplate3\"},\"reminder\":{\"notification\":\"FrodoTestEmailTemplate3\",\"frequency\":3,\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(3*60*60*1000))).toISOString()\"}},\"escalation\":{\"notification\":\"FrodoTestEmailTemplate3\",\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(5*7*24*60*60*1000))).toISOString()\"},\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\"}],\"frequency\":5},\"expiration\":{\"action\":\"reassign\",\"notification\":\"FrodoTestEmailTemplate3\",\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"allow\":true,\"exception\":true,\"remediate\":true,\"reassign\":true,\"comment\":true}}],\"date\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(8*30*24*60*60*1000))).toISOString()\"}}}}},{\"name\":\"emailTask-2068f5d711c8\",\"displayName\":\"Custom Email Task\",\"type\":\"emailTask\",\"emailTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"SUCCESS\",\"step\":\"waitTask-b7fc169ca4eb\"},{\"condition\":null,\"outcome\":\"FAILED\",\"step\":\"violationTask-50261d9bc712\"}],\"to\":{\"isExpression\":true,\"value\":\"// This is the to script\\n\\\"to@email.com\\\";\"},\"cc\":{\"isExpression\":true,\"value\":\"// This is the cc script\\n\\\"cc@email.com\\\";\"},\"bcc\":{\"isExpression\":true,\"value\":\"// This is the bcc script\\n\\\"bcc@email.com\\\";\"},\"object\":{\"hello\":\"goodbye\",\"hi\":\"hola\"},\"templateName\":\"frodoTestEmailTemplateFour\"}},{\"name\":\"waitTask-b7fc169ca4eb\",\"displayName\":\"Custom Wait Task\",\"type\":\"waitTask\",\"waitTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"COMPLETE\",\"step\":\"approvalTask-363e32acf981\"}],\"resumeDate\":{\"isExpression\":true,\"value\":\"(new Date(new Date().getTime()+(5*30*24*60*60*1000))).toISOString()\"}}},{\"name\":\"approvalTask-363e32acf981\",\"displayName\":\"Custom Approval Task 2\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"fulfillmentTask-29a71d4ab8ed\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"violationTask-50261d9bc712\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":\"managed/role/be68f831-a8f3-42da-93df-84bbc66427f6\",\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.applicationOwner[0].id\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.manager.id\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"(function() {\\n var systemSettings = openidm.action(\\\"iga/commons/config/iga_access_request\\\", \\\"GET\\\", {}, {});\\n var approver = null;\\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\\n approver = \\\"managed/user/\\\" + requestIndex.roleOwner[0].id;\\n } else if (systemSettings && systemSettings.defaultApprover) {\\n approver = systemSettings.defaultApprover;\\n }\\n return approver;\\n})()\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}}],\"events\":{\"expiration\":{\"date\":{\"value\":\"(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()\"}}}},\"approvalMode\":\"any\"},{\"name\":\"fulfillmentTask-29a71d4ab8ed\",\"displayName\":\"Custom Fulfillment Task 2\",\"type\":\"fulfillmentTask\",\"fulfillmentTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"FULFILL\",\"step\":\"emailTask-881f2975e240\"},{\"condition\":null,\"outcome\":\"DENY\",\"step\":\"violationTask-50261d9bc712\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"fulfill\":true,\"reassign\":true,\"deny\":true,\"comment\":true,\"modify\":true}}],\"events\":{\"expiration\":{\"date\":{\"value\":\"content.customExpirationDate\"}}}}},{\"name\":\"emailTask-881f2975e240\",\"displayName\":\"Custom Email Task 2\",\"type\":\"emailTask\",\"emailTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"SUCCESS\",\"step\":\"waitTask-72d593301121\"},{\"condition\":null,\"outcome\":\"FAILED\",\"step\":\"violationTask-50261d9bc712\"}],\"to\":\"to@email.com\",\"cc\":\"cc@email.com\",\"bcc\":\"bcc@email.com\",\"object\":{},\"templateName\":\"frodoTestEmailTemplateFour\"}},{\"name\":\"waitTask-72d593301121\",\"displayName\":\"Custom Wait Task 2\",\"type\":\"waitTask\",\"waitTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"COMPLETE\",\"step\":\"waitTask-b343cc7df7c9\"}],\"resumeDate\":{\"isExpression\":true,\"value\":\"requestIndex.request.common.startDate\"}}},{\"name\":\"waitTask-b343cc7df7c9\",\"displayName\":\"Custom Wait Task 3\",\"type\":\"waitTask\",\"waitTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"COMPLETE\",\"step\":\"violationTask-f8066518b46a\"}],\"resumeDate\":{\"isExpression\":true,\"value\":\"content.get('resumeDate')\"}}},{\"name\":\"violationTask-f8066518b46a\",\"displayName\":\"Custom Violation Task 2\",\"type\":\"violationTask\",\"violationTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"REMEDIATE\",\"step\":null},{\"condition\":null,\"outcome\":\"ALLOW\",\"step\":null},{\"condition\":null,\"outcome\":\"EXPIRATION\",\"step\":\"approvalTask-7e33e73d6763\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"allow\":true,\"exception\":true,\"remediate\":true,\"reassign\":true,\"comment\":true}}],\"events\":{}}}],\"staticNodes\":{\"endNode\":{\"x\":826,\"y\":50,\"id\":\"endNode\",\"name\":\"End\",\"nodeType\":\"SingleInput\",\"displayType\":\"SingleInput\",\"isDroppable\":false,\"isDeleteable\":false,\"isEditable\":false,\"isHovered\":false,\"hasError\":false,\"displayDetails\":{\"icon\":\"checkmark\",\"variant\":\"success\",\"value\":\"Success\"},\"_outcomes\":[],\"template\":null,\"schema\":null,\"connections\":{}},\"startNode\":{\"x\":20,\"y\":42,\"id\":\"startNode\",\"name\":\"Start\",\"nodeType\":\"IconOutcomeNode\",\"displayType\":\"IconOutcomeNode\",\"isDroppable\":false,\"isDeleteable\":false,\"isEditable\":false,\"isHovered\":false,\"hasError\":false,\"displayDetails\":{\"icon\":\"play_arrow\",\"variant\":\"info\",\"value\":\"Start\"},\"_outcomes\":[{\"id\":\"start\",\"displayName\":\"start\"}],\"template\":null,\"schema\":null,\"connections\":{\"start\":\"approvalTask-7e33e73d6763\"}},\"uiConfig\":{\"approvalTask-7e33e73d6763\":{\"x\":146.39999389648438,\"y\":15.61250305175781,\"actors\":{\"isExpression\":true,\"value\":\"/**\\nDefine custom script which returns an array of actors in the following format\\n(function() {\\n var content = execution.getVariables();\\n var requestId = content.get('id');\\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n return [{\\n id: \\\"managed/user/\\\" + requestIndex.applicationOwner[0].id,\\n permissions: {\\n approve: true,\\n reject: true,\\n reassign: true,\\n modify: true,\\n comment: true\\n }\\n }];\\n})()\\n**/\\n(\\nfunction(){\\n return [];\\n}\\n)()\"},\"events\":{\"escalationDate\":5,\"escalationTimeSpan\":\"day(s)\",\"escalationType\":\"applicationOwner\",\"expirationDate\":7,\"expirationTimeSpan\":\"hour(s)\",\"reminderDate\":4,\"reminderTimeSpan\":\"month(s)\",\"expirationDateType\":\"variable\",\"expirationDateVariable\":\"customExpirationDuration\",\"reassignedActors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":\"managed/role/be68f831-a8f3-42da-93df-84bbc66427f6\",\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.applicationOwner[0].id\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.manager.id\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}},{\"id\":{\"isExpression\":true,\"value\":\"(function() {\\n var systemSettings = openidm.action(\\\"iga/commons/config/iga_access_request\\\", \\\"GET\\\", {}, {});\\n var approver = null;\\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\\n approver = \\\"managed/user/\\\" + requestIndex.roleOwner[0].id;\\n } else if (systemSettings && systemSettings.defaultApprover) {\\n approver = systemSettings.defaultApprover;\\n }\\n return approver;\\n})()\"},\"permissions\":{\"approve\":true,\"reject\":true,\"reassign\":true,\"modify\":true,\"comment\":true}}]}},\"fulfillmentTask-7fce35a32915\":{\"x\":145.39999389648438,\"y\":146.6125030517578,\"actors\":{\"isExpression\":true,\"value\":\"/**\\nDefine custom script which returns an array of actors in the following format\\n(function() {\\n var content = execution.getVariables();\\n var requestId = content.get('id');\\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n return [{\\n id: \\\"managed/user/\\\" + requestIndex.applicationOwner[0].id,\\n permissions: {\\n approve: true,\\n reject: true,\\n reassign: true,\\n modify: true,\\n comment: true\\n }\\n }];\\n})()\\n**/\\n(\\nfunction(){\\n return [];\\n}\\n)()\"},\"events\":{\"escalationDate\":5,\"escalationTimeSpan\":\"hour(s)\",\"escalationType\":\"applicationOwner\",\"expirationDate\":8,\"expirationTimeSpan\":\"month(s)\",\"reminderDate\":2,\"reminderTimeSpan\":\"month(s)\",\"expirationDateType\":\"duration\",\"expirationDateVariable\":\"\",\"reassignedActors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"fulfill\":true,\"reassign\":true,\"deny\":true,\"comment\":true,\"modify\":true}}]}},\"exclusiveGateway-94bc3d35f3b4\":{\"x\":145.39999389648438,\"y\":274.6125030517578},\"inclusiveGateway-a6cf9605ce55\":{\"x\":147.39999389648438,\"y\":405.6125030517578},\"scriptTask-493f5ea87636\":{\"x\":148.39999389648438,\"y\":570.6125030517578},\"violationTask-50261d9bc712\":{\"x\":480.3999938964844,\"y\":13.61250305175781,\"actors\":{\"isExpression\":true,\"value\":\"/**\\nDefine custom script which returns an array of actors in the following format\\n(function() {\\n var content = execution.getVariables();\\n var requestId = content.get('id');\\n var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n return [{\\n id: \\\"managed/user/\\\" + requestIndex.applicationOwner[0].id,\\n permissions: {\\n approve: true,\\n reject: true,\\n reassign: true,\\n modify: true,\\n comment: true\\n }\\n }];\\n})()\\n**/\\n(\\nfunction(){\\n return [];\\n}\\n)()\"},\"events\":{\"escalationDate\":5,\"escalationTimeSpan\":\"week(s)\",\"escalationType\":\"applicationOwner\",\"expirationDate\":8,\"expirationTimeSpan\":\"month(s)\",\"reminderDate\":3,\"reminderTimeSpan\":\"hour(s)\",\"expirationDateType\":\"duration\",\"expirationDateVariable\":\"\",\"reassignedActors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"allow\":true,\"exception\":true,\"remediate\":true,\"reassign\":true,\"comment\":true}}]}},\"emailTask-2068f5d711c8\":{\"x\":150.39999389648438,\"y\":648.812502861023},\"waitTask-b7fc169ca4eb\":{\"x\":148.39999389648438,\"y\":779.812502861023,\"events\":{\"resumeDateType\":\"duration\",\"resumeDateNumber\":5,\"resumeDateTimeSpan\":\"month(s)\"}},\"approvalTask-363e32acf981\":{\"x\":478.3999938964844,\"y\":195.6125030517578,\"actors\":[{\"id\":{\"isExpression\":false,\"value\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\"},\"type\":\"user\"},{\"id\":{\"isExpression\":false,\"value\":\"managed/role/be68f831-a8f3-42da-93df-84bbc66427f6\"},\"type\":\"role\"},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.applicationOwner[0].id\"},\"type\":\"applicationOwner\"},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.manager.id\"},\"type\":\"manager\"},{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + ((requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id)\"},\"type\":\"entitlementOwner\"},{\"id\":{\"isExpression\":true,\"value\":\"(function() {\\n var systemSettings = openidm.action(\\\"iga/commons/config/iga_access_request\\\", \\\"GET\\\", {}, {});\\n var approver = null;\\n if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {\\n approver = \\\"managed/user/\\\" + requestIndex.roleOwner[0].id;\\n } else if (systemSettings && systemSettings.defaultApprover) {\\n approver = systemSettings.defaultApprover;\\n }\\n return approver;\\n})()\"},\"type\":\"roleOwner\"}],\"events\":{\"escalationType\":\"applicationOwner\",\"expirationDateType\":\"duration\",\"expirationDateVariable\":\"\",\"reassignedActors\":[],\"reminderDate\":1,\"escalationDate\":1,\"expirationDate\":7,\"expirationTimeSpan\":\"day(s)\"}},\"fulfillmentTask-29a71d4ab8ed\":{\"x\":479.3999938964844,\"y\":334.41250228881836,\"actors\":[{\"id\":{\"isExpression\":false,\"value\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\"},\"type\":\"user\"}],\"events\":{\"escalationType\":\"applicationOwner\",\"expirationDateType\":\"variable\",\"expirationDateVariable\":\"customExpirationDate\",\"reassignedActors\":[],\"reminderDate\":1,\"escalationDate\":1,\"expirationDate\":7,\"expirationTimeSpan\":\"day(s)\"}},\"emailTask-881f2975e240\":{\"x\":478.3999938964844,\"y\":474.41250228881836},\"waitTask-72d593301121\":{\"x\":476.3999938964844,\"y\":612.4125022888184,\"events\":{\"resumeDateType\":\"requestProp\",\"resumeDateNumber\":1,\"resumeDateTimeSpan\":\"day(s)\",\"resumeDateRequestProperty\":\"request.common.startDate\"}},\"waitTask-b343cc7df7c9\":{\"x\":476.3999938964844,\"y\":694.4125022888184,\"events\":{\"resumeDateType\":\"variable\",\"resumeDateNumber\":1,\"resumeDateTimeSpan\":\"day(s)\",\"resumeDateVariable\":\"resumeDate\"}},\"violationTask-f8066518b46a\":{\"x\":788.3999938964844,\"y\":613.4125022888184,\"actors\":[{\"id\":{\"isExpression\":false,\"value\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\"},\"type\":\"user\"}],\"events\":{\"escalationType\":\"applicationOwner\",\"expirationDateType\":\"variable\",\"expirationDateVariable\":\"taskExpirationDate\",\"reassignedActors\":[]}}}},\"status\":\"draft\",\"mutable\":true}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4150, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4150, + "text": "[\"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\"]" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "etag", + "value": "W/\"5772-XsXcKA404baF7YrgvvPTn0WEFxU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4cda8b9a-d97e-4e7e-b10e-e55170c60ffe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 484, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:03.202Z", + "time": 4296, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4296 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/oauth2_393036114/recording.har new file mode 100644 index 000000000..e8ea4a2e3 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_i/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:02.118Z", + "time": 98, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 98 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/openidm_3290118515/recording.har new file mode 100644 index 000000000..b6a3d8d04 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_i_2777908795/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_i/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:02 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:02.227Z", + "time": 71, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 71 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:02 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d7554bad-98aa-4ccb-b701-27b70b65d8ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:02.447Z", + "time": 61, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 61 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/am_1076162899/recording.har new file mode 100644 index 000000000..562e69bef --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_workflow-id/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 398, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 586, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 586, + "text": "{\"_id\":\"*\",\"_rev\":\"-1490247679\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"311468432e97f1f\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"cloudOnlyFeaturesEnabled\":true}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1490247679\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "586" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 788, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:32.724Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1947, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 280, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 280, + "text": "{\"_id\":\"version\",\"_rev\":\"103025458\",\"version\":\"8.1.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 8.1.0-SNAPSHOT Build 363328899230d72a7c5f4fdd6cafc3675d109ccd (2026-February-13 10:03)\",\"revision\":\"363328899230d72a7c5f4fdd6cafc3675d109ccd\",\"date\":\"2026-February-13 10:03\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"103025458\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "280" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 786, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:32.966Z", + "time": 118, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 118 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/environment_1072573434/recording.har new file mode 100644 index 000000000..379ae181b --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_workflow-id/environment", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccc7ec61c2094114d7917814bb19b83b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "accept-api-version", + "value": "protocol=1.0,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/environment/scopes/service-accounts" + }, + "response": { + "bodySize": 1975, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 1975, + "text": "[{\"scope\":\"fr:am:*\",\"description\":\"All Access Management APIs\"},{\"scope\":\"fr:autoaccess:*\",\"description\":\"All Auto Access APIs\"},{\"scope\":\"fr:idc:analytics:*\",\"description\":\"All Analytics APIs\"},{\"scope\":\"fr:idc:certificate:*\",\"description\":\"All TLS certificate APIs\",\"childScopes\":[{\"scope\":\"fr:idc:certificate:read\",\"description\":\"Read TLS certificates\"}]},{\"scope\":\"fr:idc:content-security-policy:*\",\"description\":\"All content security policy APIs\",\"childScopes\":[{\"scope\":\"fr:idc:content-security-policy:read\",\"description\":\"Read content security policy\"}]},{\"scope\":\"fr:idc:cookie-domain:*\",\"description\":\"All cookie domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:cookie-domain:read\",\"description\":\"Read cookie domains\"}]},{\"scope\":\"fr:idc:custom-domain:*\",\"description\":\"All custom domain APIs\",\"childScopes\":[{\"scope\":\"fr:idc:custom-domain:read\",\"description\":\"Read custom domains\"}]},{\"scope\":\"fr:idc:dataset:*\",\"description\":\"All dataset deletion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:dataset:read\",\"description\":\"Read dataset deletions\"}]},{\"scope\":\"fr:idc:esv:*\",\"description\":\"All ESV APIs\",\"childScopes\":[{\"scope\":\"fr:idc:esv:read\",\"description\":\"Read ESVs, excluding values of secrets\"},{\"scope\":\"fr:idc:esv:update\",\"description\":\"Create, modify, and delete ESVs\"},{\"scope\":\"fr:idc:esv:restart\",\"description\":\"Restart workloads that consume ESVs\"}]},{\"scope\":\"fr:idc:promotion:*\",\"description\":\"All configuration promotion APIs\",\"childScopes\":[{\"scope\":\"fr:idc:promotion:read\",\"description\":\"Read configuration promotion\"}]},{\"scope\":\"fr:idc:release:*\",\"description\":\"All product release APIs\",\"childScopes\":[{\"scope\":\"fr:idc:release:read\",\"description\":\"Read product release\"}]},{\"scope\":\"fr:idc:sso-cookie:*\",\"description\":\"All SSO cookie APIs\",\"childScopes\":[{\"scope\":\"fr:idc:sso-cookie:read\",\"description\":\"Read SSO cookie\"}]},{\"scope\":\"fr:idm:*\",\"description\":\"All Identity Management APIs\"},{\"scope\":\"fr:iga:*\",\"description\":\"All Identity Governance APIs\"}]" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "1975" + }, + { + "name": "etag", + "value": "W/\"7b7-tIBWy/EinSCKaoNz4aU2iqiTmFc\"" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "60d94754-24ff-45f0-b743-185f329e4b29" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 413, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:33.092Z", + "time": 66, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 66 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/iga_2664973160/recording.har new file mode 100644 index 000000000..261939761 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/iga_2664973160/recording.har @@ -0,0 +1,129 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_workflow-id/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "4493130f860e0b9e553ac53b515d3542", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1859, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow5 was not found\"}" + }, + "cookies": [], + "headers": [ + { + "name": "x-powered-by", + "value": "Express" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "content-length", + "value": "59" + }, + { + "name": "etag", + "value": "W/\"3b-qBpbruiB0bXLR2bVIOVJZfGP2Ns\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7f033f20-992c-4431-99ea-5a5485efac3d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 452, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-03-04T23:56:33.237Z", + "time": 742, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 742 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/oauth2_393036114/recording.har new file mode 100644 index 000000000..811644756 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_workflow-id/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1344, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "1344" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 453, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "assertion=&client_id=service-account&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1817, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1817, + "text": "{\"access_token\":\"\",\"scope\":\"fr:am:* fr:autoaccess:* fr:idc:esv:* fr:iga:* fr:idc:analytics:* fr:idc:custom-domain:* fr:idc:release:* fr:idc:sso-cookie:* fr:idc:content-security-policy:* fr:idc:certificate:* fr:idm:* fr:idc:cookie-domain:* fr:idc:promotion:*\",\"token_type\":\"Bearer\",\"expires_in\":899}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "content-security-policy-report-only", + "value": "frame-ancestors 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1817" + }, + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 561, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:32.860Z", + "time": 92, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 92 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/openidm_3290118515/recording.har new file mode 100644 index 000000000..276c49369 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-publish_2169047494/0_workflow-id_2661049213/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-publish/0_workflow-id/openidm", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:32 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:32.962Z", + "time": 68, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 68 + } + }, + { + "_id": "9cb8561357870863838a9948da32d1e8", + "_order": 1, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-21" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1959, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_fields", + "value": "*" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/managed/svcacct/4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5?_fields=%2A" + }, + "response": { + "bodySize": 1383, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1383, + "text": "{\"_id\":\"4dedf2b2-e2d9-4f3f-a6d7-507aa19860c5\",\"_rev\":\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1766159115537\",\"description\":\"phales@trivir.com's Frodo Service Account\",\"scopes\":[\"fr:am:*\",\"fr:idc:analytics:*\",\"fr:autoaccess:*\",\"fr:idc:certificate:*\",\"fr:idc:content-security-policy:*\",\"fr:idc:cookie-domain:*\",\"fr:idc:custom-domain:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"rQWrVN8X5kqsrdDEHJwCjUXJsKuoXVWRXUL_5TmlaSY\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"11QN1diWTanWyOEyckzkb5ohXZJOh42_FEOgApnsigTIgHEAZkeCsHKr4J1RqNbbMFDVzMXkesf7fkDuFU3zPVLyHETyBA6NNHkmuJVL_3hVjfTHHY6P39FSoWaNAfvmW3iHDp-dJ7BMnKGoDb4eBFw4Dn82wf4CJ_x9nZCUL6OiadV3uU4COyorVyiMhmCIqW75ZDZGliieu6vMeNM-oyi_QpMSrRWiaicYXMpmxqtijg7kBF9if8wBO92d4jOrxRv90oIGt4ql6c6V3-hRiXxxNdcoDdHYk26Vgp76-g0FthpRDjhpPSdksS6yAtHi3ukh87dK43AZGJDPns7dFpP0CVcMlq_4zqYci72_tRp4HDVw7DsKignsNCKrAOZwe-DhFEl_5RAmGoxgpHMFOymF15MLf4695oiuRkNiLMGLhBgq8bMgbDrjRlDd3AIDlAdGLrB2BPscrTLmQlPAFjhPwrkdZ7hcMM_ApSyzka2kBUe75bi0x5UhmYrRP77lvV-8lzyo2sDZ0O-qsUDcxZ4qaY8re7LBAl3eXZaLSMnAp1jiHjVT_JwFnzfreRdnzuO2kZulKEWM8cESLTqyGD-FTVaDJZoLAJ-X_lrTpYYRVFmD84cPcuI3xLxv3Opu8MNbRhInuy6MMoleFdo4LJ-XawFlGc2CWIW1HzfANEU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Wed, 04 Mar 2026 23:56:33 GMT" + }, + { + "name": "vary", + "value": "Origin" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "content-type", + "value": "application/json;charset=utf-8" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"3d0c584d-7e83-46d6-9856-a1d4c6ba10b9-12837\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "content-length", + "value": "1383" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-da82237d-04ab-4100-b095-b784735ea4c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000" + } + ], + "headersSize": 683, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-03-04T23:56:33.167Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/utils/TestConfig.js b/test/e2e/utils/TestConfig.js index d5de9f2c5..67390461e 100644 --- a/test/e2e/utils/TestConfig.js +++ b/test/e2e/utils/TestConfig.js @@ -10,6 +10,17 @@ export const connection = { '{"d":"UQJv2m1KXSl5phfjMVqxRR0JjiOyXwe4iVXpCZjwdTo7oVo-cw0icBZkFh-QZHzDwa_mqt_sEAn6oniEu5IrlsFIPomKUmkSgUHBiqUDSC6iOGF4BIdajifKKk2MjR8e3vXJY7gsXzp7eNDkGO4T9ie5c-TkUIi39aIsKeXBKFVZg4kDLw2Cctm5F0SpBUUci--eYvt3QjzFUKfsdwTe7PcnTO95m-t0JcbhqqI6hAzSIUq0E3v7aynYqp7f_4ZDhzy-FuBjAT_tnlYlTxKCQABdBJtYdjHEgmU-9wETLhBrrIaBg3M6nTtgr-p1OR27tg3W7hyDlgSHfQBv5-dnWNSvr4U7ciX_ZU4LyEQsaLnQprbllB526N7WB_iroF7k9mjr6RhIJLmoI2pK6GVXRsiRL818PDonaL3xgaxsRTAEa63Cb5kSRWsqkv1Das4pqUcrf7VuIOCA8XD5xuAWCwsiAMiQZMx3LWEPS3jRxPUpDMG12yqAHeR7RZ9-8SML2YzEy0nYgcvSCSiFT7Pd57yqPGthSgafMK7GRRBJ6WN9JOsj2LJXjpyz26gCUlnPNYUyUjAZyQFG8q9OhET5YceAJ1g0Upzn1xYQTclyXQxLCXy7Ux3DSIAdhl8zZrm9MTH6s0dI-VHmX4gZs-9aTA4S-e4joZIEoCM8zst41jk","dp":"zSrQqCykCpw1XU-V2rpkMu_FqvG7pM1WJF5TrrAVCc5cUB01TpERv5_twgRY3pk6tk7nyedXZpxKVcTECoA78d5_TSRZnpsFwS3JA-LaoDjkDl4HLOY3onunS43jXwuH85i7ePTaeQri_Gis9lTcSlJL6QVM3DR3BMDOfNY5ZyZhBoYwV3eX_37QqhaBhQPgDMIC9cj8VL_cQduCxCtWFGMlR0pGlmH-0XRBT2o5fDwcWnXLyulpa1wDMrWO5RX_qRpEWIcwXykxLp9r4x4rMwRy93yvCfNVRTcUfwMdy3HAIoL7W72SoiWDtMt4pUUkZm3H45nNifC3S8wj_KWpkQ","dq":"Ul24ytcArdOp6i4q4pyXrnkCX4xD753APZLIKUOPXEgImB1-gvrY5zFtWTRAxpe_slhf1LWfyBGMSXeKUihDtfrUTUf23Y_SNjuh-OSMNxZkYCc9hlVJfgqgwj2aRs48V7e1Fmlq_2r8VeLxrWF-TppiccXRbSaEtPhdgXRG659dt-SA1tNcsNSINFnnkUkacwAbEVt_C_EOCoQxYwl92T2OAWN0_iaxwS41TpWu1OLzQ6xIdbFiiUVMIxX1g_Z9VYwBtEUaWUBeuBs1U5k4y7pxjyiTKHkiBuod3RSJInCBJJAS7mkSu1DTaTbb0k1blrOkApH44TB7oKX0NZWOvQ","e":"AQAB","kty":"RSA","n":"8lN2UVDDHchL_gIYS5lAiEVAVocyqWHmqBPwPkd22NRMLetczaVSH2UQHoQu7SSKeAtojVJUYuxRtGPfGNExZurTy3CRlzpaNa67B6jyunycPHnyNked0ceFGfjD9c6e0b97L5wqwk2YNVVMGa9c1m8R9HWk2kg9lRwlZE_piwTM9bw8tuWfL1A2-fTDQB2PZSgGGz86jG1RGMY7dnafVKIX3HbW98xOxOwqIRz607IQr-NFia5zjTltpJjR1qOlEFmdHqGTGCnFcHxeJWmKOWcDM4WmfWcgK3zR9Br-aZoDTl8RMAths30Pc1pe_dl5OepxCYQ7b0BXg0zQaYcx5G5ZcNR3ldjDNfpiXg1viWjEBiwiCg7gkYksBu0aFHX2pc4KKHKcyIeD0sbhaLSK3JXhI1TJvm7rwyX1wsRKmMTGTZMxYJlADZufKKd-Jg7k2_iwP3WUJxdgkJsgvLj7ZbTf5Paz7_FLeSajjtGPu6hGSWV8uOGgRgcnJgz3DP2S9qfHI7nKswtgwFdjbOMK39iNjU8PI-cOaaVKQcH88xBCu1bpCX1MIVvZ5arQF783qasj9bBB4t27gKXOauIr-sXMUI6_L7CQ7IqWld8VvNWKReMMqiRQV9huEEV1chCFzZI_aEW82fDC9dRbFXG-w92PhPPVbNznWsrhO1aPxA8","p":"_dos3Z0ngwlRb36kh7b-3aVpQkTHJ9Rckmgf7DjHK_p2OtEMZBhwDdmhvpbYdciFs2mpbuzeAPIftxLgj9qag9H-lkTu9oyvDlyc6Pl1XNnvkFiRvfKk1OeSiTU8fuSLCNuI19Qrrl2giHdJptj_9Rb1WDNMSwQnGJcKY7Nle4h831zx4EF-5MYyYnmyG3pmFAnRy2VtmpozRyRn7fkXARaqaGSYf1OAp5ac63KHlxczpjsIZMknzydke9jhAOm2nBlt3ECJNq3-ViXxPgdCx6niNVsWV3irU51MAYGM7SsDOtMFwUBeftwvm4tzpnEGg1D-p0W33pXLKr3EHKib2w","q":"9GBSbk5oqaCpdaVQJniUkPgeC-ABznxyN9On0-kPYJ1NdEc8d8IcXxtqVz2wyLxg9Wtsx6JQ-9TkKYjhgSvpN8lS-Gl3SPa21hQ80-KHeg5LkdlhT9ltnfpCyeSV1WE8yUlh3-E8E_T2xfaPpM3rEg2GhVoBll9zBQfaAfHLrxXodvrrsvSaGI-JPcL4B1UTRkYAUXsG6ZNWO3rb480n124OeX90NAKMcJpatV0Xbc7K9lFKRtVFsfRbd_a8QjL8TapAmluoIfcrIUXGD9xa9xogQq_6cv6CwMfzYZ9wXw1_NPdoBWyGiQF1BPmaX6xYi1fMbeQn26vS0GubTiUo3Q","qi":"w232765m5KXWNabhdcPvDMUi_zy-dvSoozHvheQM3mEK7HTgkG_oeyBfWIneh4k_bdIRfy_SjzmLaV8s7jzU8PFfTo8Rn5NqivQ0pFZCF00HjgeTVDBd4pe4hVIKhNCdMp3QpEZMTC2By9anPj-GWftK3g6OSRdm3yQjnqyLGsl5CIYDaaNCxmNoDFdAQ94ZonMxEbHR0vywB7z-hOqRsIe3mBrXaQxpnxuLlz4I_iGvCBofCXN5GKL0-y8fz-sSj6tZ0T-ao7VCZ4Aqt70JRrR7f3mV5M1DhOtRMwfALt-AHJJzZAgkRdyAwgalZeTV-u0lLZDC33vlKwv3v_HN6w"}', }; +export const iga_connection = { + host: 'https://openam-frodo-dev.forgeblocks.com/am', + user: 'volker.scheuber@forgerock.com', + pass: 'Sup3rS3cr3t!', + isIGA: 'true', + realm: 'alpha', + saId: 'b672336b-41ef-428d-ae4a-e0c082875377', + saJwk: + '{"d":"UQJv2m1KXSl5phfjMVqxRR0JjiOyXwe4iVXpCZjwdTo7oVo-cw0icBZkFh-QZHzDwa_mqt_sEAn6oniEu5IrlsFIPomKUmkSgUHBiqUDSC6iOGF4BIdajifKKk2MjR8e3vXJY7gsXzp7eNDkGO4T9ie5c-TkUIi39aIsKeXBKFVZg4kDLw2Cctm5F0SpBUUci--eYvt3QjzFUKfsdwTe7PcnTO95m-t0JcbhqqI6hAzSIUq0E3v7aynYqp7f_4ZDhzy-FuBjAT_tnlYlTxKCQABdBJtYdjHEgmU-9wETLhBrrIaBg3M6nTtgr-p1OR27tg3W7hyDlgSHfQBv5-dnWNSvr4U7ciX_ZU4LyEQsaLnQprbllB526N7WB_iroF7k9mjr6RhIJLmoI2pK6GVXRsiRL818PDonaL3xgaxsRTAEa63Cb5kSRWsqkv1Das4pqUcrf7VuIOCA8XD5xuAWCwsiAMiQZMx3LWEPS3jRxPUpDMG12yqAHeR7RZ9-8SML2YzEy0nYgcvSCSiFT7Pd57yqPGthSgafMK7GRRBJ6WN9JOsj2LJXjpyz26gCUlnPNYUyUjAZyQFG8q9OhET5YceAJ1g0Upzn1xYQTclyXQxLCXy7Ux3DSIAdhl8zZrm9MTH6s0dI-VHmX4gZs-9aTA4S-e4joZIEoCM8zst41jk","dp":"zSrQqCykCpw1XU-V2rpkMu_FqvG7pM1WJF5TrrAVCc5cUB01TpERv5_twgRY3pk6tk7nyedXZpxKVcTECoA78d5_TSRZnpsFwS3JA-LaoDjkDl4HLOY3onunS43jXwuH85i7ePTaeQri_Gis9lTcSlJL6QVM3DR3BMDOfNY5ZyZhBoYwV3eX_37QqhaBhQPgDMIC9cj8VL_cQduCxCtWFGMlR0pGlmH-0XRBT2o5fDwcWnXLyulpa1wDMrWO5RX_qRpEWIcwXykxLp9r4x4rMwRy93yvCfNVRTcUfwMdy3HAIoL7W72SoiWDtMt4pUUkZm3H45nNifC3S8wj_KWpkQ","dq":"Ul24ytcArdOp6i4q4pyXrnkCX4xD753APZLIKUOPXEgImB1-gvrY5zFtWTRAxpe_slhf1LWfyBGMSXeKUihDtfrUTUf23Y_SNjuh-OSMNxZkYCc9hlVJfgqgwj2aRs48V7e1Fmlq_2r8VeLxrWF-TppiccXRbSaEtPhdgXRG659dt-SA1tNcsNSINFnnkUkacwAbEVt_C_EOCoQxYwl92T2OAWN0_iaxwS41TpWu1OLzQ6xIdbFiiUVMIxX1g_Z9VYwBtEUaWUBeuBs1U5k4y7pxjyiTKHkiBuod3RSJInCBJJAS7mkSu1DTaTbb0k1blrOkApH44TB7oKX0NZWOvQ","e":"AQAB","kty":"RSA","n":"8lN2UVDDHchL_gIYS5lAiEVAVocyqWHmqBPwPkd22NRMLetczaVSH2UQHoQu7SSKeAtojVJUYuxRtGPfGNExZurTy3CRlzpaNa67B6jyunycPHnyNked0ceFGfjD9c6e0b97L5wqwk2YNVVMGa9c1m8R9HWk2kg9lRwlZE_piwTM9bw8tuWfL1A2-fTDQB2PZSgGGz86jG1RGMY7dnafVKIX3HbW98xOxOwqIRz607IQr-NFia5zjTltpJjR1qOlEFmdHqGTGCnFcHxeJWmKOWcDM4WmfWcgK3zR9Br-aZoDTl8RMAths30Pc1pe_dl5OepxCYQ7b0BXg0zQaYcx5G5ZcNR3ldjDNfpiXg1viWjEBiwiCg7gkYksBu0aFHX2pc4KKHKcyIeD0sbhaLSK3JXhI1TJvm7rwyX1wsRKmMTGTZMxYJlADZufKKd-Jg7k2_iwP3WUJxdgkJsgvLj7ZbTf5Paz7_FLeSajjtGPu6hGSWV8uOGgRgcnJgz3DP2S9qfHI7nKswtgwFdjbOMK39iNjU8PI-cOaaVKQcH88xBCu1bpCX1MIVvZ5arQF783qasj9bBB4t27gKXOauIr-sXMUI6_L7CQ7IqWld8VvNWKReMMqiRQV9huEEV1chCFzZI_aEW82fDC9dRbFXG-w92PhPPVbNznWsrhO1aPxA8","p":"_dos3Z0ngwlRb36kh7b-3aVpQkTHJ9Rckmgf7DjHK_p2OtEMZBhwDdmhvpbYdciFs2mpbuzeAPIftxLgj9qag9H-lkTu9oyvDlyc6Pl1XNnvkFiRvfKk1OeSiTU8fuSLCNuI19Qrrl2giHdJptj_9Rb1WDNMSwQnGJcKY7Nle4h831zx4EF-5MYyYnmyG3pmFAnRy2VtmpozRyRn7fkXARaqaGSYf1OAp5ac63KHlxczpjsIZMknzydke9jhAOm2nBlt3ECJNq3-ViXxPgdCx6niNVsWV3irU51MAYGM7SsDOtMFwUBeftwvm4tzpnEGg1D-p0W33pXLKr3EHKib2w","q":"9GBSbk5oqaCpdaVQJniUkPgeC-ABznxyN9On0-kPYJ1NdEc8d8IcXxtqVz2wyLxg9Wtsx6JQ-9TkKYjhgSvpN8lS-Gl3SPa21hQ80-KHeg5LkdlhT9ltnfpCyeSV1WE8yUlh3-E8E_T2xfaPpM3rEg2GhVoBll9zBQfaAfHLrxXodvrrsvSaGI-JPcL4B1UTRkYAUXsG6ZNWO3rb480n124OeX90NAKMcJpatV0Xbc7K9lFKRtVFsfRbd_a8QjL8TapAmluoIfcrIUXGD9xa9xogQq_6cv6CwMfzYZ9wXw1_NPdoBWyGiQF1BPmaX6xYi1fMbeQn26vS0GubTiUo3Q","qi":"w232765m5KXWNabhdcPvDMUi_zy-dvSoozHvheQM3mEK7HTgkG_oeyBfWIneh4k_bdIRfy_SjzmLaV8s7jzU8PFfTo8Rn5NqivQ0pFZCF00HjgeTVDBd4pe4hVIKhNCdMp3QpEZMTC2By9anPj-GWftK3g6OSRdm3yQjnqyLGsl5CIYDaaNCxmNoDFdAQ94ZonMxEbHR0vywB7z-hOqRsIe3mBrXaQxpnxuLlz4I_iGvCBofCXN5GKL0-y8fz-sSj6tZ0T-ao7VCZ4Aqt70JRrR7f3mV5M1DhOtRMwfALt-AHJJzZAgkRdyAwgalZeTV-u0lLZDC33vlKwv3v_HN6w"}', +}; + export const classic_connection = { host: 'http://openam-frodo-dev.classic.com:8080/am', user: 'amAdmin', From 73f848d9c90e0d44dd0f5306c904fb6d75f887f0 Mon Sep 17 00:00:00 2001 From: Preston Hales Date: Mon, 27 Apr 2026 14:14:28 -0600 Subject: [PATCH 4/7] wip --- .../config-export.e2e.test.js.snap | 53748 ++++++++++++++++ .../iga-workflow-delete.e2e.test.js.snap | 9 + test/e2e/config-export.e2e.test.js | 52 +- test/e2e/config-import.e2e.test.js | 104 +- test/e2e/exports/all/all.iga.json | 0 .../exports/all/allWorkflows.workflow.json | 16039 ++++- test/e2e/iga-workflow-delete.e2e.test.js | 110 + test/e2e/iga-workflow-import.e2e.test.js | 122 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 377 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 2260 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 630 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 2864 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + .../am_1076162899/recording.har | 312 + .../environment_1072573434/recording.har | 125 + .../iga_2664973160/recording.har | 506 + .../oauth2_393036114/recording.har | 146 + .../openidm_3290118515/recording.har | 310 + 33 files changed, 80296 insertions(+), 990 deletions(-) create mode 100644 test/e2e/__snapshots__/iga-workflow-delete.e2e.test.js.snap create mode 100644 test/e2e/exports/all/all.iga.json create mode 100644 test/e2e/iga-workflow-delete.e2e.test.js create mode 100644 test/e2e/iga-workflow-import.e2e.test.js create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/openidm_3290118515/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/am_1076162899/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/environment_1072573434/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/iga_2664973160/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/oauth2_393036114/recording.har create mode 100644 test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/openidm_3290118515/recording.har diff --git a/test/e2e/__snapshots__/config-export.e2e.test.js.snap b/test/e2e/__snapshots__/config-export.e2e.test.js.snap index 337146e52..91545590e 100644 --- a/test/e2e/__snapshots__/config-export.e2e.test.js.snap +++ b/test/e2e/__snapshots__/config-export.e2e.test.js.snap @@ -12,10 +12,19015 @@ exports[`frodo config export "frodo config export --global-only -af testExportAl exports[`frodo config export "frodo config export --global-only -af testExportAllGlobal.json -m classic": should export all global config to a single file named testExportAllGlobal.json. 2`] = `""`; +exports[`frodo config export "frodo config export --global-only -af testExportAllGlobal.json -m classic": should export all global config to a single file named testExportAllGlobal.json.: testExportAllGlobal.json 1`] = ` +{ + "global": { + "agent": { + "AgentService": { + "_id": "AgentService", + "_type": { + "_id": "AgentService", + "collection": false, + "name": "AgentService", + }, + }, + }, + "authentication": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Core", + }, + "authenticators": [ + "com.sun.identity.authentication.modules.ad.AD", + "org.forgerock.openam.authentication.modules.saml2.SAML2", + "org.forgerock.openam.authentication.modules.social.SocialAuthInstagram", + "org.forgerock.openam.authentication.modules.oath.OATH", + "org.forgerock.openam.authentication.modules.social.SocialAuthVK", + "com.sun.identity.authentication.modules.membership.Membership", + "com.sun.identity.authentication.modules.windowsdesktopsso.WindowsDesktopSSO", + "org.forgerock.openam.authentication.modules.deviceprint.DeviceIdSave", + "com.sun.identity.authentication.modules.federation.Federation", + "org.forgerock.openam.authentication.modules.deviceprint.DeviceIdMatch", + "com.sun.identity.authentication.modules.jdbc.JDBC", + "com.sun.identity.authentication.modules.radius.RADIUS", + "com.sun.identity.authentication.modules.anonymous.Anonymous", + "com.sun.identity.authentication.modules.cert.Cert", + "org.forgerock.openam.authentication.modules.push.registration.AuthenticatorPushRegistration", + "com.sun.identity.authentication.modules.httpbasic.HTTPBasic", + "org.forgerock.openam.authentication.modules.oidc.OpenIdConnect", + "com.sun.identity.authentication.modules.sae.SAE", + "org.forgerock.openam.authentication.modules.social.SocialAuthWeChat", + "org.forgerock.openam.authentication.modules.persistentcookie.PersistentCookie", + "org.forgerock.openam.authentication.modules.social.SocialAuthTwitter", + "com.sun.identity.authentication.modules.ldap.LDAP", + "org.forgerock.openam.authentication.modules.push.AuthenticatorPush", + "org.forgerock.openam.authentication.modules.oauth2.OAuth", + "com.sun.identity.authentication.modules.nt.NT", + "org.forgerock.openam.authentication.modules.social.SocialAuthWeChatMobile", + "org.forgerock.openam.authentication.modules.jwtpop.JwtProofOfPossession", + "com.sun.identity.authentication.modules.application.Application", + "org.forgerock.openam.authentication.modules.scripted.Scripted", + "org.forgerock.openam.authentication.modules.social.SocialAuthOAuth2", + "com.sun.identity.authentication.modules.hotp.HOTP", + "org.forgerock.openam.authentication.modules.adaptive.Adaptive", + "org.forgerock.openam.authentication.modules.accountactivecheck.AccountActiveCheck", + "org.forgerock.openam.authentication.modules.social.SocialAuthOpenID", + "com.sun.identity.authentication.modules.msisdn.MSISDN", + "org.forgerock.openam.authentication.modules.fr.oath.AuthenticatorOATH", + "com.sun.identity.authentication.modules.datastore.DataStore", + "com.sun.identity.authentication.modules.securid.SecurID", + "org.forgerock.openam.authentication.modules.amster.Amster", + ], + "defaults": { + "accountlockout": { + "lockoutDuration": 0, + "lockoutDurationMultiplier": 1, + "lockoutWarnUserCount": 0, + "loginFailureCount": 5, + "loginFailureDuration": 300, + "loginFailureLockoutMode": false, + "storeInvalidAttemptsInDataStore": true, + }, + "core": { + "adminAuthModule": "[Empty]", + "orgConfig": "[Empty]", + }, + "general": { + "defaultAuthLevel": 0, + "identityType": [ + "agent", + "user", + ], + "locale": "en_US", + "statelessSessionsEnabled": false, + "twoFactorRequired": false, + "userStatusCallbackPlugins": [], + }, + "postauthprocess": { + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [ + "/am/console", + ], + "userAttributeSessionMapping": [], + "usernameGeneratorClass": "com.sun.identity.authentication.spi.DefaultUserIDGenerator", + "usernameGeneratorEnabled": true, + }, + "security": { + "addClearSiteDataHeader": true, + "moduleBasedAuthEnabled": true, + "sharedSecret": null, + "zeroPageLoginAllowedWithoutReferrer": true, + "zeroPageLoginEnabled": false, + "zeroPageLoginReferrerWhiteList": [], + }, + "trees": { + "authenticationSessionsMaxDuration": 5, + "authenticationSessionsStateManagement": "JWT", + "authenticationSessionsWhitelist": false, + "authenticationTreeCookieHttpOnly": true, + "suspendedAuthenticationTimeout": 5, + }, + "userprofile": { + "aliasAttributeName": [], + "defaultRole": [], + "dynamicProfileCreation": "false", + }, + }, + "keepPostProcessInstances": false, + "ldapConnectionPoolDefaultSize": "1:10", + "ldapConnectionPoolSize": [], + "remoteAuthSecurityEnabled": false, + }, + "authenticationChains": { + "EMPTY": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Authentication Configuration", + }, + "dynamic": { + "authChainConfiguration": "[Empty]", + }, + }, + }, + "authenticationTreesConfiguration": { + "EMPTY": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Authentication Trees Configuration", + }, + }, + }, + "nodeTypes": { + "8ab9f1aad4b4460a9c45d15fb148e221-1": { + "_id": "8ab9f1aad4b4460a9c45d15fb148e221-1", + "description": "Debug node that displays the shared and transient state of the journey for debugging purposes.", + "displayName": "Display State", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome", + ], + "outputs": [], + "properties": { + "displayFormat": { + "defaultValue": "TABLE", + "description": "The format in which to display the states.", + "multivalued": false, + "options": { + "JSON": "Raw JSON", + "TABLE": "HTML Table", + }, + "required": true, + "title": "Display Format", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + OUTCOME: "outcome" +}; + +function main() { + if (!callbacks.isEmpty()) { + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + var keySet = nodeState.keys(); // Java Set + var keys = Array.from(keySet); // Make it into JavaScript array + debugState = {}; + for (var i in keys) { + var k = new String(keys[i]); + var item = nodeState.get(k); + if (typeof item === "object") { + debugState[k] = nodeState.getObject(k); + } else { + debugState[k] = nodeState.get(k); + } + } + if (properties.displayFormat === "JSON") { + callbacksBuilder.textOutputCallback(0, \`
\${JSON.stringify(debugState, null, 2)}
\`); + return; + } + callbacksBuilder.textOutputCallback(0, \`\${Array.from(Object.keys(debugState).map(k => \`\`))}
KeyValue
\${k}
\${debugState[k]}
\`); +} + +main(); +", + "serviceName": "8ab9f1aad4b4460a9c45d15fb148e221", + "tags": [ + "debug", + "testing", + ], + }, + "c15e2efb3deb4d4ea338c74a6440b69f-1": { + "_id": "c15e2efb3deb4d4ea338c74a6440b69f-1", + "description": "Simple ALU that performs basic binary vector math operations. Outputs the result onto the shared state with key "c".", + "displayName": "Vector ALU", + "errorOutcome": true, + "inputs": [], + "outcomes": [ + "Success", + ], + "outputs": [ + "c", + ], + "properties": { + "a": { + "defaultValue": [ + 1, + 2, + 3, + ], + "description": "Left vector operand", + "multivalued": true, + "required": true, + "title": "A", + "type": "NUMBER", + }, + "b": { + "defaultValue": [ + 4, + 5, + 6, + ], + "description": "Right vector operand", + "multivalued": true, + "required": true, + "title": "B", + "type": "NUMBER", + }, + "operator": { + "defaultValue": "DOT", + "description": "The binary operation to perform on the vectors.", + "multivalued": false, + "options": { + "ADD": "+", + "CROSS": "X", + "DOT": ".", + "SUBTRACT": "-", + }, + "required": true, + "title": "Operator", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + SUCCESS: 'Success' +}; + +var OPERATORS = { + ADD: "ADD", + SUBTRACT: "SUBTRACT", + DOT: "DOT", + CROSS: "CROSS" +} + +function add(a, b) { + return a.map((v, i) => v + b[i]); +} + +function subtract(a, b) { + return a.map((v, i) => v - b[i]); +} + +function dot(a, b) { + return a.reduce((sum, v, i) => sum + v * b[i], 0); +} + +function cross(a, b) { + return [ + a[1] * b[2] - a[2] * b[1], + a[2] * b[0] - a[0] * b[2], + a[0] * b[1] - a[1] * b[0] + ]; +} + +function main() { + if (properties.a.length !== properties.b.length) throw new Error("Vectors not the same dimension."); + switch (properties.operator) { + case OPERATORS.ADD: + nodeState.putShared("c", add(properties.a, properties.b)); + break; + case OPERATORS.SUBTRACT: + nodeState.putShared("c", subtract(properties.a, properties.b)); + break; + case OPERATORS.DOT: + nodeState.putShared("c", dot(properties.a, properties.b)); + break; + case OPERATORS.CROSS: + if (properties.a.length !== 3) throw new Error("Vectors not dimension 3 for cross product"); + nodeState.putShared("c", cross(properties.a, properties.b)); + break; + default: throw new Error("Unknown operator."); + } + action.goTo(SCRIPT_OUTCOMES.SUCCESS); +} + +main(); +", + "serviceName": "c15e2efb3deb4d4ea338c74a6440b69f", + "tags": [ + "math", + "vector", + "utilities", + ], + }, + "c605506774a848f7877b4d17a453bd39-1": { + "_id": "c605506774a848f7877b4d17a453bd39-1", + "description": "Checks if the user has a current session.", + "displayName": "Has Session", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": {}, + "script": "var SCRIPT_OUTCOMES = { + TRUE: 'True', + FALSE: 'False' +} + +function main() { + action.goTo(typeof existingSession === "undefined" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE); +} + +main(); +", + "serviceName": "c605506774a848f7877b4d17a453bd39", + "tags": [ + "utilities", + ], + }, + "c6063fb2f5dc42dd9772bedc93898bd8-1": { + "_id": "c6063fb2f5dc42dd9772bedc93898bd8-1", + "description": "Simple ALU that performs basic binary math operations. Expects an "x" and "y" value on the shared state, and will produce a new "z" value on the shared state as output.", + "displayName": "ALU", + "errorOutcome": true, + "inputs": [ + "x", + "y", + ], + "outcomes": [ + "Success", + ], + "outputs": [ + "z", + ], + "properties": { + "operator": { + "defaultValue": "ADD", + "description": "The operation to perform.", + "multivalued": false, + "options": { + "ADD": "+", + "DIVIDE": "/", + "MULTIPLY": "*", + "SUBTRACT": "-", + }, + "required": true, + "title": "Operator", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + SUCCESS: 'Success' +}; + +var OPERATORS = { + ADD: "ADD", + SUBTRACT: "SUBTRACT", + MULTIPLY: "MULTIPLY", + DIVIDE: "DIVIDE" +} + +function main() { + var a = Number(properties.a); + var b = Number(properties.b); + switch (properties.operator) { + case OPERATORS.ADD: + nodeState.putShared("z", a + b); + break; + case OPERATORS.SUBTRACT: + nodeState.putShared("z", a - b); + break; + case OPERATORS.MULTIPLY: + nodeState.putShared("z", a * b); + break; + case OPERATORS.DIVIDE: + if (b == 0) throw new Error("Cannot divide by 0"); + nodeState.putShared("z", a / b); + break; + default: throw new Error("Unknown operator."); + } + action.goTo(SCRIPT_OUTCOMES.SUCCESS); +} + +main(); +", + "serviceName": "c6063fb2f5dc42dd9772bedc93898bd8", + "tags": [ + "math", + "utilities", + ], + }, + "e5ad0110c8ee4dafaae983003cd05d4a-1": { + "_id": "e5ad0110c8ee4dafaae983003cd05d4a-1", + "description": "Generate a signed JWT using the HMAC SHA-256 algorithm.", + "displayName": "Generate JWT", + "errorOutcome": true, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": { + "audience": { + "description": "The audience (aud) claim", + "multivalued": false, + "required": true, + "title": "Audience", + "type": "STRING", + }, + "issuer": { + "description": "The issuer (iss) claim", + "multivalued": false, + "required": true, + "title": "Issuer", + "type": "STRING", + }, + "signingkey": { + "defaultValue": "esv.signing.key", + "description": "The secret label for the HMAC signing key", + "multivalued": false, + "required": true, + "title": "HMAC Signing Key", + "type": "STRING", + }, + "validity": { + "defaultValue": 5, + "description": "", + "multivalued": false, + "required": true, + "title": "Validity (minutes)", + "type": "NUMBER", + }, + }, + "script": "var aud = properties.audience; +var iss = properties.issuer; +var validity = properties.validity; +var esv = properties.signingkey; + +var signingkey = systemEnv.getProperty(esv); + +var username = nodeState.get("username"); + +var data = { + jwtType:"SIGNED", + jwsAlgorithm: "HS256", + issuer: iss, + subject: username, + audience: aud, + type: "JWT", + validityMinutes: validity, + signingKey: signingkey +}; + +var jwt = jwtAssertion.generateJwt(data); + +if (jwt !== null && jwt.length > 0) { + nodeState.putShared("assertionJwt" , jwt); + action.goTo("True"); +} else { + action.goTo("False"); +} +", + "serviceName": "e5ad0110c8ee4dafaae983003cd05d4a", + "tags": [ + "Utilities", + "utilities", + ], + }, + "ef81b1a52c914710b3388caebfe7233a-1": { + "_id": "ef81b1a52c914710b3388caebfe7233a-1", + "description": "Displays custom callback to the page", + "displayName": "Display Callback", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome", + ], + "outputs": [], + "properties": { + "callback": { + "description": "The callback to display", + "multivalued": false, + "options": { + "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK": "booleanAttributeInputCallback", + "CHOICE_CALLBACK": "choiceCallback", + "CONFIRMATION_CALLBACK": "confirmationCallback", + "CONSENT_MAPPING_CALLBACK": "consentMappingCallback", + "DEVICE_PROFILE_CALLBACK": "deviceProfileCallback", + "HIDDEN_VALUE_CALLBACK": "hiddenValueCallback", + "HTTP_CALLBACK": "httpCallback", + "IDP_CALLBACK": "idPCallback", + "KBA_CREATE_CALLBACK": "kbaCreateCallback", + "LANGUAGE_CALLBACK": "languageCallback", + "METADATA_CALLBACK": "metadataCallback", + "NAME_CALLBACK": "nameCallback", + "NUMBER_ATTRIBUTE_INPUT_CALLBACK": "numberAttributeInputCallback", + "PASSWORD_CALLBACK": "passwordCallback", + "POLLING_WAIT_CALLBACK": "pollingWaitCallback", + "REDIRECT_CALLBACK": "redirectCallback", + "SCRIPT_TEXT_OUTPUT_CALLBACK": "scriptTextOutputCallback", + "SELECT_IDP_CALLBACK": "selectIdPCallback", + "STRING_ATTRIBUTE_INPUT_CALLBACK": "stringAttributeInputCallback", + "SUSPENDED_TEXT_OUTPUT_CALLBACK": "suspendedTextOutputCallback", + "TERMS_AND_CONDITIONS_CALLBACK": "termsAndConditionsCallback", + "TEXT_INPUT_CALLBACK": "textInputCallback", + "TEXT_OUTPUT_CALLBACK": "textOutputCallback", + "VALIDATED_PASSWORD_CALLBACK": "validatedPasswordCallback", + "VALIDATED_USERNAME_CALLBACK": "validatedUsernameCallback", + "X509_CERTIFICATE_CALLBACK": "x509CertificateCallback", + }, + "required": true, + "title": "Callback", + "type": "STRING", + }, + "objectSharedProperty": { + "description": "The objectAttributes property on the shared state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Shared Property", + "type": "STRING", + }, + "objectTransientProperty": { + "description": "The objectAttributes property on the transient state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Transient Property", + "type": "STRING", + }, + "options": { + "description": "The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). + +For example, for textOutputCallback, the options could be: { messageType: 0, message: "Hello World!" }. + +Note that for required parameters that are not specified in the options will use default values based on the type of the parameter ("" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).", + "multivalued": false, + "required": true, + "title": "Options", + "type": "OBJECT", + }, + "sharedProperty": { + "description": "The shared state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Shared State Property", + "type": "STRING", + }, + "transientProperty": { + "description": "The transient state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Transient State Property", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + OUTCOME: 'outcome' +}; + +var CALLBACKS = { + BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK", + CHOICE_CALLBACK: "CHOICE_CALLBACK", + CONFIRMATION_CALLBACK: "CONFIRMATION_CALLBACK", + CONSENT_MAPPING_CALLBACK: "CONSENT_MAPPING_CALLBACK", + DEVICE_PROFILE_CALLBACK: "DEVICE_PROFILE_CALLBACK", + HIDDEN_VALUE_CALLBACK: "HIDDEN_VALUE_CALLBACK", + HTTP_CALLBACK: "HTTP_CALLBACK", + IDP_CALLBACK: "IDP_CALLBACK", + KBA_CREATE_CALLBACK: "KBA_CREATE_CALLBACK", + LANGUAGE_CALLBACK: "LANGUAGE_CALLBACK", + METADATA_CALLBACK: "METADATA_CALLBACK", + NAME_CALLBACK: "NAME_CALLBACK", + NUMBER_ATTRIBUTE_INPUT_CALLBACK: "NUMBER_ATTRIBUTE_INPUT_CALLBACK", + PASSWORD_CALLBACK: "PASSWORD_CALLBACK", + POLLING_WAIT_CALLBACK: "POLLING_WAIT_CALLBACK", + REDIRECT_CALLBACK: "REDIRECT_CALLBACK", + SCRIPT_TEXT_OUTPUT_CALLBACK: "SCRIPT_TEXT_OUTPUT_CALLBACK", + SELECT_IDP_CALLBACK: "SELECT_IDP_CALLBACK", + STRING_ATTRIBUTE_INPUT_CALLBACK: "STRING_ATTRIBUTE_INPUT_CALLBACK", + SUSPENDED_TEXT_OUTPUT_CALLBACK: "SUSPENDED_TEXT_OUTPUT_CALLBACK", + TERMS_AND_CONDITIONS_CALLBACK: "TERMS_AND_CONDITIONS_CALLBACK", + TEXT_INPUT_CALLBACK: "TEXT_INPUT_CALLBACK", + TEXT_OUTPUT_CALLBACK: "TEXT_OUTPUT_CALLBACK", + VALIDATED_PASSWORD_CALLBACK: "VALIDATED_PASSWORD_CALLBACK", + VALIDATED_USERNAME_CALLBACK: "VALIDATED_USERNAME_CALLBACK", + X509_CERTIFICATE_CALLBACK: "X509_CERTIFICATE_CALLBACK" +} + +function isStringPresent(value) { + return value; +} + +function getString(value) { + return value || ''; +} + +function isArrayPresent(value) { + return value; +} + +function getArray(value) { + return value ? JSON.parse(value) : []; +} + +function isObjectPresent(value) { + return value; +} + +function getObject(value) { + return value ? JSON.parse(value) : {}; +} + +function isIntPresent(value) { + return value; +} + +function getInt(value) { + return value ? parseInt(value) : 0; +} + +function isDoublePresent(value) { + return value; +} + +function getDouble(value) { + return value ? parseFloat(value) : 0.0; +} + +function isBooleanPresent(value) { + return value; +} + +function getBoolean(value) { + return value ? value.toLowerCase() === 'true' : false; +} + +function setProperty(value) { + if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value); + if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value); + if (properties.objectSharedProperty) { + var attributes = {}; + attributes[properties.objectSharedProperty] = value; + nodeState.mergeShared({ + objectAttributes: attributes + }); + } + if (properties.objectTransientProperty) { + var attributes = {}; + attributes[properties.objectTransientProperty] = value; + nodeState.mergeTransient({ + objectAttributes: attributes + }); + } +} + +function booleanAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getBoolean(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required); + } +} + +function choiceCallback() { + var prompt = getString(properties.options.prompt); + var choices = getArray(properties.options.choices); + var defaultChoice = getInt(properties.options.defaultChoice); + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed); +} + +function confirmationCallback() { + var prompt = getString(properties.options.prompt); + var messageType = getInt(properties.options.messageType); + var options = getArray(properties.options.options); + var optionType = getInt(properties.options.optionType); + var defaultOption = getInt(properties.options.defaultOption); + if (isStringPresent(properties.options.prompt)) { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption); + } + } else { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(messageType, options, defaultOption); + } + } +} + +function consentMappingCallback() { + var config = getObject(properties.options.config); + var message = getString(properties.options.message); + var isRequired = getBoolean(properties.options.isRequired); + var name = getString(properties.options.name); + var displayName = getString(properties.options.displayName); + var icon = getString(properties.options.icon); + var accessLevel = getString(properties.options.accessLevel); + var titles = getArray(properties.options.titles); + if (isObjectPresent(properties.options.prompt)) { + callbacksBuilder.consentMappingCallback(config, message, isRequired); + } else { + callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired); + } +} + +function deviceProfileCallback() { + var metadata = getBoolean(properties.options.metadata); + var location = getBoolean(properties.options.location); + var message = getString(properties.options.message); + callbacksBuilder.deviceProfileCallback(metadata, location, message); +} + +function hiddenValueCallback() { + var id = getString(properties.options.id); + var value = getString(properties.options.value); + callbacksBuilder.hiddenValueCallback(id, value); +} + +function httpCallback() { + var authorizationHeader = getString(properties.options.authorizationHeader); + var negotiationHeader = getString(properties.options.negotiationHeader); + var authRHeader = getString(properties.options.authRHeader); + var negoName = getString(properties.options.negoName); + var negoValue = getString(properties.options.negoValue); + if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) { + var errorCode = getString(properties.options.errorCode); + callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode); + } else { + var errorCode = getInt(properties.options.errorCode); + callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode); + } +} + +function idPCallback() { + var provider = getString(properties.options.provider); + var clientId = getString(properties.options.clientId); + var redirectUri = getString(properties.options.redirectUri); + var scope = getArray(properties.options.scope); + var nonce = getString(properties.options.nonce); + var request = getString(properties.options.request); + var requestUri = getString(properties.options.requestUri); + var acrValues = getArray(properties.options.acrValues); + var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo); + var token = getString(properties.options.token); + var tokenType = getString(properties.options.tokenType); + if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType); + } else { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo); + } +} + +function kbaCreateCallback() { + var prompt = getString(properties.options.prompt); + var predefinedQuestions = getArray(properties.options.predefinedQuestions); + var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions); + callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions); +} + +function languageCallback() { + var language = getString(properties.options.language); + var country = getString(properties.options.country); + callbacksBuilder.languageCallback(language, country); +} + +function metadataCallback() { + var outputValue = getObject(properties.options.outputValue); + callbacksBuilder.metadataCallback(outputValue); +} + +function nameCallback() { + var prompt = getString(properties.options.prompt); + var defaultName = getString(properties.options.defaultName); + if (isStringPresent(properties.options.defaultName)) { + callbacksBuilder.nameCallback(prompt, defaultName); + } else { + callbacksBuilder.nameCallback(prompt); + } +} + +function numberAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getDouble(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required); + } +} + +function passwordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + callbacksBuilder.passwordCallback(prompt, echoOn); +} + +function pollingWaitCallback() { + var waitTime = getString(properties.options.waitTime); + var message = getString(properties.options.message); + callbacksBuilder.pollingWaitCallback(waitTime, message); +} + +function redirectCallback() { + throw new Error('Not Implemented'); +} + +function scriptTextOutputCallback() { + var message = getString(properties.options.message); + callbacksBuilder.scriptTextOutputCallback(message); +} + +function selectIdPCallback() { + var providers = getObject(properties.options.providers); + callbacksBuilder.selectIdPCallback(providers); +} + +function stringAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getString(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required); + } +} + +function suspendedTextOutputCallback() { + var messageType = getInt(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.suspendedTextOutputCallback(messageType, message); +} + +function termsAndConditionsCallback() { + var version = getString(properties.options.version); + var terms = getString(properties.options.terms); + var createDate = getString(properties.options.createDate); + callbacksBuilder.termsAndConditionsCallback(version, terms, createDate); +} + +function textInputCallback() { + var prompt = getString(properties.options.prompt); + var defaultText = getString(properties.options.defaultText); + if (isStringPresent(properties.options.defaultText)) { + callbacksBuilder.textInputCallback(prompt, defaultText); + } else { + callbacksBuilder.textInputCallback(prompt); + } +} + +function textOutputCallback() { + var messageType = getString(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.textOutputCallback(messageType, message); +} + +function validatedPasswordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly); + } +} + +function validatedUsernameCallback() { + var prompt = getString(properties.options.prompt); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly); + } +} + +function x509CertificateCallback() { + throw new Error('Not Implemented'); +} + +function getBooleanAttributeInputCallback() { + setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0)); +} + +function getChoiceCallback() { + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + var selections = callbacks.getChoiceCallbacks().get(0); + setProperty(multipleSelectionsAllowed ? selections : selections[0]); +} + +function getConfirmationCallback() { + setProperty(callbacks.getConfirmationCallbacks().get(0)); +} + +function getConsentMappingCallback() { + setProperty(callbacks.getConsentMappingCallbacks().get(0)); +} + +function getDeviceProfileCallback() { + setProperty(callbacks.getDeviceProfileCallbacks().get(0)); +} + +function getHiddenValueCallback() { + var id = getString(properties.options.id); + setProperty(callbacks.getHiddenValueCallbacks().get(id)); +} + +function getHttpCallback() { + setProperty(callbacks.getHttpCallbacks().get(0)); +} + +function getIdPCallback() { + setProperty(callbacks.getIdpCallbacks().get(0)); +} + +function getKbaCreateCallback() { + setProperty(callbacks.getKbaCreateCallbacks().get(0)); +} + +function getLanguageCallback() { + setProperty(callbacks.getLanguageCallbacks().get(0)); +} + +function getNameCallback() { + setProperty(callbacks.getNameCallbacks().get(0)); +} + +function getNumberAttributeInputCallback() { + setProperty(callbacks.getNumberAttributeInputCallbacks().get(0)); +} + +function getPasswordCallback() { + setProperty(callbacks.getPasswordCallbacks().get(0)); +} + +function getSelectIdPCallback() { + setProperty(callbacks.getSelectIdPCallbacks().get(0)); +} + +function getStringAttributeInputCallback() { + setProperty(callbacks.getStringAttributeInputCallbacks().get(0)); +} + +function getTermsAndConditionsCallback() { + setProperty(callbacks.getTermsAndConditionsCallbacks().get(0)); +} + +function getTextInputCallback() { + setProperty(callbacks.getTextInputCallbacks().get(0)); +} + +function getValidatedPasswordCallback() { + setProperty(callbacks.getValidatedPasswordCallbacks().get(0)); +} + +function getValidatedUsernameCallback() { + setProperty(callbacks.getValidatedUsernameCallbacks().get(0)); +} + +function getX509CertificateCallback() { + setProperty(callbacks.getX509CertificateCallbacks().get(0)); +} + +function main() { + if (!callbacks.isEmpty()) { + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break; + case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break; + case CALLBACKS.NAME_CALLBACK: getNameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break; + default: break; + } + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: httpCallback(); break; + case CALLBACKS.IDP_CALLBACK: idPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break; + case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break; + case CALLBACKS.NAME_CALLBACK: nameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break; + case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break; + case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break; + case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break; + case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break; + case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break; + default: throw new Error('Unknown Callback'); // Should never reach this case + } +} + +main(); +", + "serviceName": "ef81b1a52c914710b3388caebfe7233a", + "tags": [ + "callback", + "utilities", + ], + }, + "session-1": { + "_id": "session-1", + "description": "Checks if the user has a current session.", + "displayName": "Has Session AM", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": {}, + "script": "var SCRIPT_OUTCOMES = { + TRUE: 'True', + FALSE: 'False' +} + +function main() { + action.goTo(typeof existingSession === "undefined" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE); +} + +main(); +", + "serviceName": "session", + "tags": [ + "utilities", + ], + }, + }, + "realm": { + "L2ZpcnN0": { + "_id": "L2ZpcnN0", + "active": true, + "aliases": [ + "one", + "dnsfirst", + ], + "name": "first", + "parentPath": "/", + }, + "L2ZpcnN0L3NlY29uZA": { + "_id": "L2ZpcnN0L3NlY29uZA", + "active": false, + "aliases": [ + "secondDNS", + "second", + ], + "name": "second", + "parentPath": "/first", + }, + "Lw": { + "_id": "Lw", + "active": true, + "aliases": [ + "localhost", + "openam-frodo-dev.classic.com", + "openam", + "testurl.com", + ], + "name": "/", + "parentPath": "", + }, + }, + "scripttype": { + "AUTHENTICATION_CLIENT_SIDE": { + "_id": "AUTHENTICATION_CLIENT_SIDE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "AUTHENTICATION_CLIENT_SIDE", + "allowLists": {}, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "[Empty]", + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "AUTHENTICATION_SERVER_SIDE": { + "_id": "AUTHENTICATION_SERVER_SIDE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "AUTHENTICATION_SERVER_SIDE", + "allowLists": { + "1.0": [ + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.HashMap$KeyIterator", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.openam.authentication.modules.scripted.*", + "org.forgerock.openam.core.rest.devices.deviceprint.DeviceIdDao", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.HashMap$KeyIterator", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.openam.authentication.modules.scripted.*", + "org.forgerock.openam.core.rest.devices.deviceprint.DeviceIdDao", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "7e3d7067-d50f-4674-8c76-a3e13a810c33", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.HashMap$KeyIterator", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.openam.authentication.modules.scripted.*", + "org.forgerock.openam.core.rest.devices.deviceprint.DeviceIdDao", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "AUTHENTICATION_TREE_DECISION_NODE": { + "_id": "AUTHENTICATION_TREE_DECISION_NODE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "AUTHENTICATION_TREE_DECISION_NODE", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.concurrent.TimeUnit", + "java.util.Collections$*", + "java.util.HashSet", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "ch.qos.logback.classic.Logger", + "org.forgerock.util.promise.Promises$*", + "com.sun.proxy.$*", + "java.util.Date", + "java.security.spec.InvalidKeySpecException", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + "2.0", + ], + }, + }, + "defaultScript": "01e1a3c0-038b-4c16-956a-6c9d89328cff", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "CONFIG_PROVIDER_NODE": { + "_id": "CONFIG_PROVIDER_NODE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "CONFIG_PROVIDER_NODE", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "5e854779-6ec1-4c39-aeba-0477e0986646", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "LIBRARY": { + "_id": "LIBRARY", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "LIBRARY", + "allowLists": { + "1.0": [ + "java.lang.Float", + "org.forgerock.http.protocol.Header", + "java.lang.Integer", + "org.forgerock.http.Client", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Long", + "java.lang.Short", + "java.util.Map", + "org.forgerock.http.client.*", + "java.lang.Math", + "org.forgerock.opendj.ldap.Dn", + "java.lang.Byte", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "java.lang.StrictMath", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.http.Context", + "java.lang.Void", + "org.codehaus.groovy.runtime.GStringImpl", + "groovy.json.JsonSlurper", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.context.RootContext", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "java.util.List", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Responses", + "org.forgerock.util.promise.Promise", + "java.util.HashMap$KeyIterator", + "com.sun.identity.shared.debug.Debug", + "java.lang.Double", + "org.forgerock.http.protocol.Headers", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.http.protocol.Status", + "java.util.HashMap", + "java.lang.Character$Subset", + "java.util.TreeSet", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.LinkedHashMap", + "org.forgerock.http.protocol.ResponseException", + "java.util.Collections$UnmodifiableRandomAccessList", + "org.forgerock.http.protocol.Message", + "java.lang.Boolean", + "java.lang.String", + "java.lang.Number", + "java.util.LinkedList", + "java.util.LinkedHashSet", + "org.forgerock.http.protocol.Response", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.TreeMap", + "java.util.Collections$EmptyList", + "org.forgerock.openam.scripting.api.ScriptedSession", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.http.Handler", + "java.lang.Object", + "org.forgerock.http.protocol.Form", + "jdk.proxy*", + ], + "2.0": [ + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "JAVASCRIPT": [ + "2.0", + ], + }, + }, + "defaultScript": "[Empty]", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.lang.Class", + "java.security.AccessController", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Float", + "org.forgerock.http.protocol.Header", + "java.lang.Integer", + "org.forgerock.http.Client", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Long", + "java.lang.Short", + "java.util.Map", + "org.forgerock.http.client.*", + "java.lang.Math", + "org.forgerock.opendj.ldap.Dn", + "java.lang.Byte", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "java.lang.StrictMath", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.http.Context", + "java.lang.Void", + "org.codehaus.groovy.runtime.GStringImpl", + "groovy.json.JsonSlurper", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.context.RootContext", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "java.util.List", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Responses", + "org.forgerock.util.promise.Promise", + "java.util.HashMap$KeyIterator", + "com.sun.identity.shared.debug.Debug", + "java.lang.Double", + "org.forgerock.http.protocol.Headers", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.http.protocol.Status", + "java.util.HashMap", + "java.lang.Character$Subset", + "java.util.TreeSet", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.LinkedHashMap", + "org.forgerock.http.protocol.ResponseException", + "java.util.Collections$UnmodifiableRandomAccessList", + "org.forgerock.http.protocol.Message", + "java.lang.Boolean", + "java.lang.String", + "java.lang.Number", + "java.util.LinkedList", + "java.util.LinkedHashSet", + "org.forgerock.http.protocol.Response", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.TreeMap", + "java.util.Collections$EmptyList", + "org.forgerock.openam.scripting.api.ScriptedSession", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.http.Handler", + "java.lang.Object", + "org.forgerock.http.protocol.Form", + ], + }, + "languages": [ + "JAVASCRIPT", + ], + }, + "OAUTH2_ACCESS_TOKEN_MODIFICATION": { + "_id": "OAUTH2_ACCESS_TOKEN_MODIFICATION", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_ACCESS_TOKEN_MODIFICATION", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "d22f9a0c-426a-4466-b95e-d0f125b0d5fa", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER": { + "_id": "OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "3f93ef6e-e54a-4393-aba1-f322656db28a", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_EVALUATE_SCOPE": { + "_id": "OAUTH2_EVALUATE_SCOPE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_EVALUATE_SCOPE", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "da56fe60-8b38-4c46-a405-d6b306d4b336", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_MAY_ACT": { + "_id": "OAUTH2_MAY_ACT", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_MAY_ACT", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.oauth2.core.tokenexchange.ExchangeableToken", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.OpenIdConnectToken", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.oauth2.core.tokenexchange.ExchangeableToken", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.OpenIdConnectToken", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "[Empty]", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.oauth2.core.tokenexchange.ExchangeableToken", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.OpenIdConnectToken", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_SCRIPTED_JWT_ISSUER": { + "_id": "OAUTH2_SCRIPTED_JWT_ISSUER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_SCRIPTED_JWT_ISSUER", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.TrustedJwtIssuerConfig", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.TrustedJwtIssuerConfig", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "400e48ba-3f13-4144-ac7b-f824ea8e98c5", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.TrustedJwtIssuerConfig", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_VALIDATE_SCOPE": { + "_id": "OAUTH2_VALIDATE_SCOPE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_VALIDATE_SCOPE", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.InvalidScopeException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.InvalidScopeException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "25e6c06d-cf70-473b-bd28-26931edc476b", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.InvalidScopeException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OIDC_CLAIMS": { + "_id": "OIDC_CLAIMS", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OIDC_CLAIMS", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "36863ffb-40ec-48b9-94b1-9a99f71cc3b5", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "POLICY_CONDITION": { + "_id": "POLICY_CONDITION", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "POLICY_CONDITION", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "java.util.Collections$EmptyList", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "9de3eb62-f131-4fac-a294-7bd170fd4acb", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "java.util.Collections$EmptyList", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SAML2_IDP_ADAPTER": { + "_id": "SAML2_IDP_ADAPTER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SAML2_IDP_ADAPTER", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.IdpAdapterScriptHelper", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.sun.identity.common.CaseInsensitiveHashMap", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "org.forgerock.util.promise.PromiseImpl", + "javax.servlet.http.Cookie", + "org.xml.sax.InputSource", + "java.security.cert.CertificateFactory", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "248b8a56-df81-4b1b-b4ba-45d994f6504c", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.IdpAdapterScriptHelper", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SAML2_IDP_ATTRIBUTE_MAPPER": { + "_id": "SAML2_IDP_ATTRIBUTE_MAPPER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SAML2_IDP_ATTRIBUTE_MAPPER", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.impl.AttributeImpl", + "com.sun.identity.saml2.plugins.scripted.IdpAttributeMapperScriptHelper", + "javax.servlet.http.Cookie", + "javax.xml.parsers.DocumentBuilder", + "javax.xml.parsers.DocumentBuilderFactory", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.w3c.dom.Document", + "org.w3c.dom.Element", + "org.xml.sax.InputSource", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.sun.identity.common.CaseInsensitiveHashMap", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "org.forgerock.util.promise.PromiseImpl", + "javax.servlet.http.Cookie", + "org.xml.sax.InputSource", + "java.security.cert.CertificateFactory", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "c4f22465-2368-4e27-8013-e6399974fd48", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.impl.AttributeImpl", + "com.sun.identity.saml2.plugins.scripted.IdpAttributeMapperScriptHelper", + "javax.servlet.http.Cookie", + "javax.xml.parsers.DocumentBuilder", + "javax.xml.parsers.DocumentBuilderFactory", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.w3c.dom.Document", + "org.w3c.dom.Element", + "org.xml.sax.InputSource", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SAML2_SP_ADAPTER": { + "_id": "SAML2_SP_ADAPTER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SAML2_SP_ADAPTER", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.SpAdapterScriptHelper", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.sun.identity.common.CaseInsensitiveHashMap", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "org.forgerock.util.promise.PromiseImpl", + "javax.servlet.http.Cookie", + "org.xml.sax.InputSource", + "java.security.cert.CertificateFactory", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "69f06e63-128c-4e2f-af52-079a8a6f448b", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.SpAdapterScriptHelper", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SOCIAL_IDP_PROFILE_TRANSFORMATION": { + "_id": "SOCIAL_IDP_PROFILE_TRANSFORMATION", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SOCIAL_IDP_PROFILE_TRANSFORMATION", + "allowLists": { + "1.0": [ + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$Node", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Response", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.oauth.clients.oidc.Claim", + "java.util.Locale", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$Node", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Response", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.oauth.clients.oidc.Claim", + "java.util.Locale", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "1d475815-72cb-42eb-aafd-4026989d28a7", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$Node", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Response", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.oauth.clients.oidc.Claim", + "java.util.Locale", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + }, + "secretstore": { + "EnvironmentAndSystemPropertySecretStore": { + "_id": "EnvironmentAndSystemPropertySecretStore", + "_type": { + "_id": "EnvironmentAndSystemPropertySecretStore", + "collection": false, + "name": "Environment and System Property Secrets Store", + }, + "format": "BASE64", + }, + "default-keystore": { + "_id": "default-keystore", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "mappings": [ + { + "_id": "am.applications.agents.remote.consent.request.signing.ES256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES256", + }, + { + "_id": "am.applications.agents.remote.consent.request.signing.ES384", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es384test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES384", + }, + { + "_id": "am.applications.agents.remote.consent.request.signing.ES512", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es512test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES512", + }, + { + "_id": "am.applications.agents.remote.consent.request.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.RSA", + }, + { + "_id": "am.authentication.nodes.persistentcookie.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.authentication.nodes.persistentcookie.encryption", + }, + { + "_id": "am.authn.authid.signing.HMAC", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.authn.authid.signing.HMAC", + }, + { + "_id": "am.authn.trees.transientstate.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.authn.trees.transientstate.encryption", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.idp.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.idp.encryption", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.idp.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.idp.signing", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.sp.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.sp.encryption", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.sp.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.sp.signing", + }, + { + "_id": "am.default.authentication.modules.persistentcookie.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.default.authentication.modules.persistentcookie.encryption", + }, + { + "_id": "am.default.authentication.modules.persistentcookie.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.default.authentication.modules.persistentcookie.signing", + }, + { + "_id": "am.default.authentication.nodes.persistentcookie.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.default.authentication.nodes.persistentcookie.signing", + }, + { + "_id": "am.global.services.oauth2.oidc.agent.idtoken.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.global.services.oauth2.oidc.agent.idtoken.signing", + }, + { + "_id": "am.global.services.saml2.client.storage.jwt.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.global.services.saml2.client.storage.jwt.encryption", + }, + { + "_id": "am.global.services.session.clientbased.encryption.AES", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "aestest", + ], + "secretId": "am.global.services.session.clientbased.encryption.AES", + }, + { + "_id": "am.global.services.session.clientbased.signing.HMAC", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.global.services.session.clientbased.signing.HMAC", + }, + { + "_id": "am.services.iot.jwt.issuer.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.services.iot.jwt.issuer.signing", + }, + { + "_id": "am.services.oauth2.jwt.authenticity.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.services.oauth2.jwt.authenticity.signing", + }, + { + "_id": "am.services.oauth2.oidc.decryption.RSA.OAEP", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.decryption.RSA.OAEP", + }, + { + "_id": "am.services.oauth2.oidc.decryption.RSA.OAEP.256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.decryption.RSA.OAEP.256", + }, + { + "_id": "am.services.oauth2.oidc.decryption.RSA1.5", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.decryption.RSA1.5", + }, + { + "_id": "am.services.oauth2.oidc.rp.idtoken.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.rp.idtoken.encryption", + }, + { + "_id": "am.services.oauth2.oidc.rp.jwt.authenticity.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.oidc.rp.jwt.authenticity.signing", + }, + { + "_id": "am.services.oauth2.oidc.signing.ES256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.services.oauth2.oidc.signing.ES256", + }, + { + "_id": "am.services.oauth2.oidc.signing.ES384", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es384test", + ], + "secretId": "am.services.oauth2.oidc.signing.ES384", + }, + { + "_id": "am.services.oauth2.oidc.signing.ES512", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es512test", + ], + "secretId": "am.services.oauth2.oidc.signing.ES512", + }, + { + "_id": "am.services.oauth2.oidc.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.oidc.signing.RSA", + }, + { + "_id": "am.services.oauth2.remote.consent.request.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "selfserviceenctest", + ], + "secretId": "am.services.oauth2.remote.consent.request.encryption", + }, + { + "_id": "am.services.oauth2.remote.consent.response.decryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.remote.consent.response.decryption", + }, + { + "_id": "am.services.oauth2.remote.consent.response.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.remote.consent.response.signing.RSA", + }, + { + "_id": "am.services.oauth2.stateless.signing.ES256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.services.oauth2.stateless.signing.ES256", + }, + { + "_id": "am.services.oauth2.stateless.signing.ES384", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es384test", + ], + "secretId": "am.services.oauth2.stateless.signing.ES384", + }, + { + "_id": "am.services.oauth2.stateless.signing.ES512", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es512test", + ], + "secretId": "am.services.oauth2.stateless.signing.ES512", + }, + { + "_id": "am.services.oauth2.stateless.signing.HMAC", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.services.oauth2.stateless.signing.HMAC", + }, + { + "_id": "am.services.oauth2.stateless.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.stateless.signing.RSA", + }, + { + "_id": "am.services.oauth2.stateless.token.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.services.oauth2.stateless.token.encryption", + }, + { + "_id": "am.services.saml2.metadata.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.saml2.metadata.signing.RSA", + }, + { + "_id": "am.services.uma.pct.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.services.uma.pct.encryption", + }, + ], + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + "default-passwords-store": { + "_id": "default-passwords-store", + "_type": { + "_id": "FileSystemSecretStore", + "collection": true, + "name": "File System Secret Volumes", + }, + "directory": "/root/am/security/secrets/encrypted", + "format": "ENCRYPTED_PLAIN", + }, + }, + "server": { + "defaultProperties": { + "advanced": { + "_id": "null/properties/advanced", + "com.iplanet.am.buildDate": "2024-March-28 16:00", + "com.iplanet.am.buildRevision": "89116d59a1ebe73ed1931dd3649adb7f217cd06b", + "com.iplanet.am.buildVersion": "ForgeRock Access Management 7.5.0", + "com.iplanet.am.cookie.c66Encode": true, + "com.iplanet.am.daemons": "securid", + "com.iplanet.am.directory.ssl.enabled": false, + "com.iplanet.am.installdir": "%BASE_DIR%", + "com.iplanet.am.jssproxy.SSLTrustHostList": "", + "com.iplanet.am.jssproxy.checkSubjectAltName": false, + "com.iplanet.am.jssproxy.resolveIPAddress": false, + "com.iplanet.am.jssproxy.trustAllServerCerts": false, + "com.iplanet.am.lbcookie.name": "amlbcookie", + "com.iplanet.am.lbcookie.value": "00", + "com.iplanet.am.logstatus": "ACTIVE", + "com.iplanet.am.pcookie.name": "DProPCookie", + "com.iplanet.am.profile.host": "%SERVER_HOST%", + "com.iplanet.am.profile.port": "%SERVER_PORT%", + "com.iplanet.am.serverMode": true, + "com.iplanet.am.session.agentSessionIdleTime": "1440", + "com.iplanet.am.session.client.polling.enable": false, + "com.iplanet.am.session.client.polling.period": "180", + "com.iplanet.am.session.httpSession.enabled": "true", + "com.iplanet.am.version": "ForgeRock Access Management 7.5.0 Build 89116d59a1ebe73ed1931dd3649adb7f217cd06b (2024-March-28 16:00)", + "com.iplanet.security.SSLSocketFactoryImpl": "com.sun.identity.shared.ldap.factory.JSSESocketFactory", + "com.sun.am.event.notification.expire.time": "5", + "com.sun.embedded.sync.servers": "on", + "com.sun.identity.am.cookie.check": false, + "com.sun.identity.auth.cookieName": "AMAuthCookie", + "com.sun.identity.authentication.multiple.tabs.used": false, + "com.sun.identity.authentication.setCookieToAllDomains": true, + "com.sun.identity.authentication.special.users": "cn=dsameuser,ou=DSAME Users,%ROOT_SUFFIX%|cn=amService-UrlAccessAgent,ou=DSAME Users,%ROOT_SUFFIX%", + "com.sun.identity.authentication.super.user": "uid=amAdmin,ou=People,%ROOT_SUFFIX%", + "com.sun.identity.authentication.uniqueCookieName": "sunIdentityServerAuthNServer", + "com.sun.identity.cookie.httponly": true, + "com.sun.identity.cookie.samesite": "off", + "com.sun.identity.enableUniqueSSOTokenCookie": false, + "com.sun.identity.jss.donotInstallAtHighestPriority": true, + "com.sun.identity.monitoring": "off", + "com.sun.identity.monitoring.local.conn.server.url": "service:jmx:rmi://", + "com.sun.identity.password.deploymentDescriptor": "%SERVER_URI%", + "com.sun.identity.plugin.configuration.class": "@CONFIGURATION_PROVIDER_CLASS@", + "com.sun.identity.plugin.datastore.class.default": "@DATASTORE_PROVIDER_CLASS@", + "com.sun.identity.plugin.log.class": "@LOG_PROVIDER_CLASS@", + "com.sun.identity.plugin.monitoring.agent.class": "@MONAGENT_PROVIDER_CLASS@", + "com.sun.identity.plugin.monitoring.saml2.class": "@MONSAML2_PROVIDER_CLASS@", + "com.sun.identity.plugin.session.class": "@SESSION_PROVIDER_CLASS@", + "com.sun.identity.policy.Policy.policy_evaluation_weights": "10:10:10", + "com.sun.identity.policy.resultsCacheMaxSize": "10000", + "com.sun.identity.policy.resultsCacheResourceCap": "20", + "com.sun.identity.saml.xmlsig.keyprovider.class": "@XMLSIG_KEY_PROVIDER@", + "com.sun.identity.saml.xmlsig.passwordDecoder": "@PASSWORD_DECODER_CLASS@", + "com.sun.identity.saml.xmlsig.signatureprovider.class": "@XML_SIGNATURE_PROVIDER@", + "com.sun.identity.security.checkcaller": false, + "com.sun.identity.server.fqdnMap[dnsfirst]": "dnsfirst", + "com.sun.identity.server.fqdnMap[hello]": "hello", + "com.sun.identity.server.fqdnMap[localhost]": "localhost", + "com.sun.identity.server.fqdnMap[openam-frodo-dev.classic.com]": "openam-frodo-dev.classic.com", + "com.sun.identity.server.fqdnMap[openam]": "openam", + "com.sun.identity.server.fqdnMap[secondDNS]": "secondDNS", + "com.sun.identity.session.repository.enableAttributeCompression": false, + "com.sun.identity.session.repository.enableCompression": false, + "com.sun.identity.session.repository.enableEncryption": false, + "com.sun.identity.sm.cache.ttl": "30", + "com.sun.identity.sm.cache.ttl.enable": false, + "com.sun.identity.url.readTimeout": "30000", + "com.sun.identity.webcontainer": "WEB_CONTAINER", + "dynamic.datastore.creation.enabled": false, + "openam.auth.destroy_session_after_upgrade": true, + "openam.auth.distAuthCookieName": "AMDistAuthCookie", + "openam.auth.session_property_upgrader": "org.forgerock.openam.authentication.service.DefaultSessionPropertyUpgrader", + "openam.auth.version.header.enabled": false, + "openam.authentication.ignore_goto_during_logout": false, + "openam.cdm.default.charset": "UTF-8", + "openam.forbidden.to.copy.headers": "connection", + "openam.forbidden.to.copy.request.headers": "connection", + "openam.oauth2.client.jwt.encryption.algorithm.allow.list": "RSA-OAEP,RSA-OAEP-256,ECDH-ES", + "openam.oauth2.client.jwt.unreasonable.lifetime.limit.minutes": "30", + "openam.retained.http.headers": "X-DSAMEVersion", + "openam.retained.http.request.headers": "X-DSAMEVersion", + "openam.serviceattributevalidator.classes.whitelist": "org.forgerock.openam.auth.nodes.validators.GreaterThanZeroValidator,org.forgerock.openam.auth.nodes.validators.HMACKeyLengthValidator,org.forgerock.openam.auth.nodes.validators.HmacSigningKeyValidator,org.forgerock.openam.auth.nodes.validators.PercentageValidator,org.forgerock.openam.auth.nodes.validators.QueryFilterValidator,org.forgerock.openam.auth.nodes.validators.SessionPropertyNameValidator,org.forgerock.openam.auth.nodes.validators.SessionPropertyValidator,org.forgerock.openam.auth.nodes.framework.validators.NodeValueValidator,org.forgerock.openam.audit.validation.PositiveIntegerValidator,org.forgerock.openam.authentication.modules.fr.oath.validators.AlphaNumericValidator,org.forgerock.openam.authentication.modules.fr.oath.validators.CodeLengthValidator,org.forgerock.openam.authentication.modules.persistentcookie.validation.SigningKeyValidator,com.sun.identity.common.configuration.DuplicateKeyMapValueValidator,com.sun.identity.common.configuration.AgentClientIpModeValueValidator,com.sun.identity.common.configuration.FilterModeValueValidator,com.sun.identity.common.configuration.GlobalMapValueValidator,com.sun.identity.common.configuration.ListValueValidator,com.sun.identity.common.configuration.MapValueValidator,com.sun.identity.common.configuration.ServerPropertyValidator,com.sun.identity.policy.ResourceComparatorValidator,com.sun.identity.sm.EmailValidator,com.sun.identity.sm.IPAddressValidator,com.sun.identity.sm.RequiredValueValidator,com.sun.identity.sm.ServerIDValidator,com.sun.identity.sm.SiteIDValidator,org.forgerock.openam.sm.validation.Base64EncodedBinaryValidator,org.forgerock.openam.sm.validation.BlankValueValidator,org.forgerock.openam.sm.validation.DurationValidator,org.forgerock.openam.sm.validation.EndpointValidator,org.forgerock.openam.sm.validation.HostnameValidator,org.forgerock.openam.sm.validation.PortValidator,org.forgerock.openam.sm.validation.SecretIdValidator,org.forgerock.openam.sm.validation.StatelessSessionSigningAlgorithmValidator,org.forgerock.openam.sm.validation.StringMapValidator,org.forgerock.openam.sm.validation.URLValidator,org.forgerock.openam.selfservice.config.KeyAliasValidator,org.forgerock.openam.sm.validation.UniqueIndexedValuesValidator,org.forgerock.openam.webhook.HttpHeaderValidator,org.forgerock.oauth2.core.ClientRedirectUriValidator", + "openam.session.case.sensitive.uuid": false, + "org.forgerock.allow.http.client.debug": false, + "org.forgerock.am.auth.chains.authindexuser.strict": true, + "org.forgerock.am.auth.node.otp.inSharedState": false, + "org.forgerock.am.auth.trees.authenticate.identified.identity": true, + "org.forgerock.openam.audit.additionalSuccessStatusCodesEnabled": true, + "org.forgerock.openam.audit.identity.activity.events.blacklist": "AM-ACCESS-ATTEMPT,AM-IDENTITY-CHANGE,AM-GROUP-CHANGE", + "org.forgerock.openam.auth.transactionauth.returnErrorOnAuthFailure": false, + "org.forgerock.openam.authLevel.excludeRequiredOrRequisite": false, + "org.forgerock.openam.authentication.forceAuth.enabled": false, + "org.forgerock.openam.console.autocomplete.enabled": true, + "org.forgerock.openam.core.resource.lookup.cache.enabled": true, + "org.forgerock.openam.core.sms.placeholder_api_enabled": "OFF", + "org.forgerock.openam.devices.recovery.use_insecure_storage": false, + "org.forgerock.openam.encryption.key.digest": "SHA1", + "org.forgerock.openam.encryption.key.iterations": "10000", + "org.forgerock.openam.encryption.key.size": "128", + "org.forgerock.openam.httpclienthandler.system.clients.connection.timeout": "10 seconds", + "org.forgerock.openam.httpclienthandler.system.clients.max.connections": "64", + "org.forgerock.openam.httpclienthandler.system.clients.pool.ttl": "-1", + "org.forgerock.openam.httpclienthandler.system.clients.response.timeout": "10 seconds", + "org.forgerock.openam.httpclienthandler.system.clients.retry.failed.requests.enabled": true, + "org.forgerock.openam.httpclienthandler.system.clients.reuse.connections.enabled": true, + "org.forgerock.openam.httpclienthandler.system.nonProxyHosts": "localhost,127.*,[::1],0.0.0.0,[::0]", + "org.forgerock.openam.httpclienthandler.system.proxy.enabled": false, + "org.forgerock.openam.httpclienthandler.system.proxy.password": null, + "org.forgerock.openam.httpclienthandler.system.proxy.uri": "", + "org.forgerock.openam.httpclienthandler.system.proxy.username": "", + "org.forgerock.openam.idm.attribute.names.lower.case": false, + "org.forgerock.openam.idrepo.ldapv3.passwordpolicy.allowDiagnosticMessage": false, + "org.forgerock.openam.idrepo.ldapv3.proxyauth.passwordreset.adminRequest": "isAdminPasswordChangeRequest", + "org.forgerock.openam.introspect.token.query.param.allowed": false, + "org.forgerock.openam.ldap.dncache.expire.time": "0", + "org.forgerock.openam.ldap.heartbeat.timeout": "10", + "org.forgerock.openam.ldap.keepalive.search.base": "", + "org.forgerock.openam.ldap.keepalive.search.filter": "(objectClass=*)", + "org.forgerock.openam.ldap.secure.protocol.version": "TLSv1.3,TLSv1.2", + "org.forgerock.openam.notifications.agents.enabled": true, + "org.forgerock.openam.oauth2.checkIssuerForIdTokenInfo": true, + "org.forgerock.openam.radius.server.context.cache.size": "5000", + "org.forgerock.openam.redirecturlvalidator.maxUrlLength": "2000", + "org.forgerock.openam.request.max.bytes.entity.size": "1048576", + "org.forgerock.openam.saml2.authenticatorlookup.skewAllowance": "60", + "org.forgerock.openam.scripting.maxinterpreterstackdepth": "10000", + "org.forgerock.openam.secrets.special.user.passwords.format": "ENCRYPTED_PLAIN", + "org.forgerock.openam.secrets.special.user.secret.refresh.seconds": "900", + "org.forgerock.openam.session.service.persistence.deleteAsynchronously": true, + "org.forgerock.openam.session.stateless.encryption.method": "A128CBC-HS256", + "org.forgerock.openam.session.stateless.rsa.padding": "RSA-OAEP-256", + "org.forgerock.openam.session.stateless.signing.allownone": false, + "org.forgerock.openam.showServletTraceInBrowser": false, + "org.forgerock.openam.slf4j.enableTraceInMessage": false, + "org.forgerock.openam.smtp.system.connect.timeout": "10000", + "org.forgerock.openam.smtp.system.socket.read.timeout": "10000", + "org.forgerock.openam.smtp.system.socket.write.timeout": "10000", + "org.forgerock.openam.sso.providers.list": "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOProvider", + "org.forgerock.openam.timerpool.shutdown.retry.interval": "15000", + "org.forgerock.openam.timerpool.shutdown.retry.limit": "3", + "org.forgerock.openam.timerpool.shutdown.retry.multiplier": "1.5", + "org.forgerock.openam.trees.consumedstatedata.cache.size": "15", + "org.forgerock.openam.trees.ids.cache.size": "50", + "org.forgerock.openam.url.connectTimeout": "1000", + "org.forgerock.openam.xui.user.session.validation.enabled": true, + "org.forgerock.openidconnect.ssoprovider.maxcachesize": "5000", + "org.forgerock.security.entitlement.enforce.realm": true, + "org.forgerock.security.oauth2.enforce.sub.claim.uniqueness": true, + "org.forgerock.services.cts.store.reaper.enabled": true, + "org.forgerock.services.cts.store.ttlsupport.enabled": false, + "org.forgerock.services.cts.store.ttlsupport.exclusionlist": "", + "org.forgerock.services.default.store.max.connections": "", + "org.forgerock.services.default.store.min.connections": "", + "org.forgerock.services.openid.request.object.lifespan": "120000", + "securidHelper.ports": "58943", + }, + "cts": { + "_id": "null/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": "default", + "org.forgerock.services.cts.store.max.connections": "100", + "org.forgerock.services.cts.store.page.size": "0", + "org.forgerock.services.cts.store.root.suffix": "", + "org.forgerock.services.cts.store.vlv.page.size": "1000", + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.directory.name": "", + "org.forgerock.services.cts.store.heartbeat": "10", + "org.forgerock.services.cts.store.loginid": "", + "org.forgerock.services.cts.store.mtls.enabled": "", + "org.forgerock.services.cts.store.password": null, + "org.forgerock.services.cts.store.ssl.enabled": "", + "org.forgerock.services.cts.store.starttls.enabled": "", + }, + }, + "general": { + "_id": "null/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": "%BASE_DIR%/var/debug", + "com.iplanet.services.debug.level": "off", + "com.sun.services.debug.mergeall": "on", + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": "en_US", + "com.iplanet.am.util.xml.validating": "off", + "com.iplanet.services.configpath": "%BASE_DIR%", + "com.sun.identity.client.notification.url": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": "localhost", + "com.iplanet.am.smtpport": "25", + }, + }, + "sdk": { + "_id": "null/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": "10000", + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": false, + "com.sun.identity.sm.notification.threadpool.size": "1", + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": "3000", + "com.iplanet.am.event.connection.ldap.error.codes.retries": "80,81,91", + "com.iplanet.am.event.connection.num.retries": "3", + "com.sun.am.event.connection.disable.list": "aci,um,sm", + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": "1000", + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": "80,81,91", + "com.iplanet.am.ldap.connection.num.retries": "3", + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": "30", + "com.iplanet.am.sdk.cache.entry.expire.enabled": false, + "com.iplanet.am.sdk.cache.entry.user.expire.time": "15", + }, + }, + "security": { + "_id": "null/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": false, + "com.iplanet.am.cookie.name": "iPlanetDirectoryPro", + "com.iplanet.am.cookie.secure": false, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": "", + "com.sun.identity.crl.cache.directory.mtlsenabled": false, + "com.sun.identity.crl.cache.directory.password": null, + "com.sun.identity.crl.cache.directory.port": "", + "com.sun.identity.crl.cache.directory.searchattr": "", + "com.sun.identity.crl.cache.directory.searchlocs": "", + "com.sun.identity.crl.cache.directory.ssl": false, + "com.sun.identity.crl.cache.directory.user": "", + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + "amconfig.header.encryption": { + "am.encryption.pwd": "@AM_ENC_PWD@", + "am.encryption.secret.enabled": false, + "am.encryption.secret.keystoreType": "JCEKS", + "com.iplanet.security.SecureRandomFactoryImpl": "com.iplanet.am.util.SecureRandomFactoryImpl", + "com.iplanet.security.encryptor": "com.iplanet.services.util.JCEEncryption", + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": "", + "com.sun.identity.authentication.ocsp.responder.url": "", + "com.sun.identity.authentication.ocspCheck": false, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": "test", + "com.sun.identity.saml.xmlsig.keypass": "%BASE_DIR%/security/secrets/default/.keypass", + "com.sun.identity.saml.xmlsig.keystore": "%BASE_DIR%/security/keystores/keystore.jceks", + "com.sun.identity.saml.xmlsig.storepass": "%BASE_DIR%/security/secrets/default/.storepass", + "com.sun.identity.saml.xmlsig.storetype": "JCEKS", + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": false, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": "16384", + }, + }, + "session": { + "_id": "null/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": "60", + "com.iplanet.services.stats.directory": "%BASE_DIR%/var/stats", + "com.iplanet.services.stats.state": "file", + "com.sun.am.session.enableHostLookUp": false, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": "10", + "com.iplanet.am.notification.threadpool.threshold": "5000", + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": "3", + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": "5000", + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": true, + }, + }, + "uma": { + "_id": "null/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": "default", + "org.forgerock.services.resourcesets.store.max.connections": "10", + "org.forgerock.services.resourcesets.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": "", + "org.forgerock.services.resourcesets.store.heartbeat": "10", + "org.forgerock.services.resourcesets.store.loginid": "", + "org.forgerock.services.resourcesets.store.mtls.enabled": "", + "org.forgerock.services.resourcesets.store.password": null, + "org.forgerock.services.resourcesets.store.ssl.enabled": "", + "org.forgerock.services.resourcesets.store.starttls.enabled": "", + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": "default", + "org.forgerock.services.uma.labels.store.max.connections": "2", + "org.forgerock.services.uma.labels.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": "", + "org.forgerock.services.uma.labels.store.heartbeat": "10", + "org.forgerock.services.uma.labels.store.loginid": "", + "org.forgerock.services.uma.labels.store.mtls.enabled": "", + "org.forgerock.services.uma.labels.store.password": null, + "org.forgerock.services.uma.labels.store.ssl.enabled": "", + "org.forgerock.services.uma.labels.store.starttls.enabled": "", + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": "default", + "org.forgerock.services.uma.pendingrequests.store.max.connections": "10", + "org.forgerock.services.uma.pendingrequests.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": "", + "org.forgerock.services.uma.pendingrequests.store.heartbeat": "10", + "org.forgerock.services.uma.pendingrequests.store.loginid": "", + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": "", + "org.forgerock.services.uma.pendingrequests.store.password": null, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": "", + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": "", + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": "default", + "org.forgerock.services.umaaudit.store.max.connections": "10", + "org.forgerock.services.umaaudit.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": "", + "org.forgerock.services.umaaudit.store.heartbeat": "10", + "org.forgerock.services.umaaudit.store.loginid": "", + "org.forgerock.services.umaaudit.store.mtls.enabled": "", + "org.forgerock.services.umaaudit.store.password": null, + "org.forgerock.services.umaaudit.store.ssl.enabled": "", + "org.forgerock.services.umaaudit.store.starttls.enabled": "", + }, + }, + }, + "server": { + "01": { + "_id": "01", + "properties": { + "advanced": { + "_id": "01/properties/advanced", + "bootstrap.file": "/root/.openamcfg/AMConfig_usr_local_tomcat_webapps_am_", + "com.iplanet.am.lbcookie.value": "01", + "com.iplanet.am.serverMode": true, + "com.iplanet.security.SSLSocketFactoryImpl": "com.sun.identity.shared.ldap.factory.JSSESocketFactory", + "com.sun.embedded.replicationport": "", + "com.sun.embedded.sync.servers": "on", + "com.sun.identity.common.systemtimerpool.size": "3", + "com.sun.identity.sm.sms_object_class_name": "com.sun.identity.sm.SmsWrapperObject", + "com.sun.identity.urlconnection.useCache": false, + "opensso.protocol.handler.pkgs": "", + "org.forgerock.embedded.dsadminport": "4444", + }, + "cts": { + "_id": "01/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.cts.store.max.connections": { + "inherited": true, + "value": "100", + }, + "org.forgerock.services.cts.store.page.size": { + "inherited": true, + "value": "0", + }, + "org.forgerock.services.cts.store.root.suffix": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.vlv.page.size": { + "inherited": true, + "value": "1000", + }, + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.affinity.enabled": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.cts.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + "directoryConfiguration": { + "_id": "01/properties/directoryConfiguration", + "directoryConfiguration": { + "bindDn": "cn=Directory Manager", + "bindPassword": null, + "maxConnectionPool": 10, + "minConnectionPool": 1, + "mtlsAlias": "", + "mtlsEnabled": false, + "mtlsKeyPasswordFile": "", + "mtlsKeyStoreFile": "", + "mtlsKeyStorePasswordFile": "", + "mtlsKeyStoreType": null, + }, + "directoryServers": [ + { + "connectionType": "SSL", + "hostName": "localhost", + "portNumber": "50636", + "serverName": "Server1", + }, + ], + }, + "general": { + "_id": "01/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/debug", + }, + "com.iplanet.services.debug.level": { + "inherited": true, + "value": "off", + }, + "com.sun.services.debug.mergeall": { + "inherited": true, + "value": "on", + }, + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": { + "inherited": false, + "value": "en_US", + }, + "com.iplanet.am.util.xml.validating": { + "inherited": true, + "value": "off", + }, + "com.iplanet.services.configpath": { + "inherited": false, + "value": "/root/am", + }, + "com.sun.identity.client.notification.url": { + "inherited": true, + "value": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": { + "inherited": true, + "value": "localhost", + }, + "com.iplanet.am.smtpport": { + "inherited": true, + "value": "25", + }, + }, + "amconfig.header.site": { + "singleChoiceSite": "[Empty]", + }, + }, + "sdk": { + "_id": "01/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": { + "inherited": true, + "value": "10000", + }, + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": { + "inherited": false, + "value": true, + }, + "com.sun.identity.sm.notification.threadpool.size": { + "inherited": true, + "value": "1", + }, + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": { + "inherited": true, + "value": "3000", + }, + "com.iplanet.am.event.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.event.connection.num.retries": { + "inherited": true, + "value": "3", + }, + "com.sun.am.event.connection.disable.list": { + "inherited": false, + "value": "aci,um", + }, + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": { + "inherited": true, + "value": "1000", + }, + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": { + "inherited": false, + "value": "80,81,91", + }, + "com.iplanet.am.ldap.connection.num.retries": { + "inherited": true, + "value": "3", + }, + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": { + "inherited": true, + "value": "30", + }, + "com.iplanet.am.sdk.cache.entry.expire.enabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.sdk.cache.entry.user.expire.time": { + "inherited": true, + "value": "15", + }, + }, + }, + "security": { + "_id": "01/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.cookie.name": { + "inherited": true, + "value": "iPlanetDirectoryPro", + }, + "com.iplanet.am.cookie.secure": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.mtlsenabled": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.password": { + "inherited": true, + "value": null, + }, + "com.sun.identity.crl.cache.directory.port": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchattr": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchlocs": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.ssl": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.user": { + "inherited": true, + "value": "", + }, + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": { + "inherited": true, + "value": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + }, + "amconfig.header.encryption": { + "am.encryption.pwd": { + "inherited": false, + "value": "efSYcwIhr7uKH30rgciGTVTFzb63LhYu", + }, + "am.encryption.secret.alias": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.enabled": { + "inherited": true, + "value": false, + }, + "am.encryption.secret.keyPass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreFile": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystorePass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreType": { + "inherited": true, + "value": "JCEKS", + }, + "com.iplanet.security.SecureRandomFactoryImpl": { + "inherited": true, + "value": "com.iplanet.am.util.SecureRandomFactoryImpl", + }, + "com.iplanet.security.encryptor": { + "inherited": true, + "value": "com.iplanet.services.util.JCEEncryption", + }, + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocsp.responder.url": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocspCheck": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": { + "inherited": true, + "value": "test", + }, + "com.sun.identity.saml.xmlsig.keypass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.keypass", + }, + "com.sun.identity.saml.xmlsig.keystore": { + "inherited": true, + "value": "%BASE_DIR%/security/keystores/keystore.jceks", + }, + "com.sun.identity.saml.xmlsig.storepass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.storepass", + }, + "com.sun.identity.saml.xmlsig.storetype": { + "inherited": true, + "value": "JCEKS", + }, + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": { + "inherited": true, + "value": "16384", + }, + }, + }, + "session": { + "_id": "01/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": { + "inherited": true, + "value": "60", + }, + "com.iplanet.services.stats.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/stats", + }, + "com.iplanet.services.stats.state": { + "inherited": true, + "value": "file", + }, + "com.sun.am.session.enableHostLookUp": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": { + "inherited": true, + "value": "10", + }, + "com.iplanet.am.notification.threadpool.threshold": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": { + "inherited": true, + "value": "3", + }, + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": { + "inherited": true, + "value": true, + }, + }, + }, + "uma": { + "_id": "01/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.resourcesets.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.resourcesets.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.labels.store.max.connections": { + "inherited": true, + "value": "2", + }, + "org.forgerock.services.uma.labels.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.labels.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.labels.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.pendingrequests.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.umaaudit.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.umaaudit.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + }, + "siteName": null, + "url": "http://localhost:8080/am", + }, + "03": { + "_id": "03", + "properties": { + "advanced": { + "_id": "03/properties/advanced", + "com.iplanet.am.lbcookie.value": "03", + }, + "cts": { + "_id": "03/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.cts.store.max.connections": { + "inherited": true, + "value": "100", + }, + "org.forgerock.services.cts.store.page.size": { + "inherited": true, + "value": "0", + }, + "org.forgerock.services.cts.store.root.suffix": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.vlv.page.size": { + "inherited": true, + "value": "1000", + }, + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.affinity.enabled": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.cts.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + "directoryConfiguration": { + "_id": "03/properties/directoryConfiguration", + "directoryConfiguration": { + "bindDn": "cn=Directory Manager", + "bindPassword": null, + "maxConnectionPool": 10, + "minConnectionPool": 1, + "mtlsAlias": "", + "mtlsEnabled": false, + "mtlsKeyPasswordFile": "", + "mtlsKeyStoreFile": "", + "mtlsKeyStorePasswordFile": "", + "mtlsKeyStoreType": null, + }, + "directoryServers": [ + { + "connectionType": "SSL", + "hostName": "localhost", + "portNumber": "50636", + "serverName": "Server1", + }, + ], + }, + "general": { + "_id": "03/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/debug", + }, + "com.iplanet.services.debug.level": { + "inherited": true, + "value": "off", + }, + "com.sun.services.debug.mergeall": { + "inherited": true, + "value": "on", + }, + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": { + "inherited": true, + "value": "en_US", + }, + "com.iplanet.am.util.xml.validating": { + "inherited": true, + "value": "off", + }, + "com.iplanet.services.configpath": { + "inherited": true, + "value": "%BASE_DIR%", + }, + "com.sun.identity.client.notification.url": { + "inherited": true, + "value": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": { + "inherited": true, + "value": "localhost", + }, + "com.iplanet.am.smtpport": { + "inherited": true, + "value": "25", + }, + }, + "amconfig.header.site": { + "singleChoiceSite": "testsite", + }, + }, + "sdk": { + "_id": "03/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": { + "inherited": true, + "value": "10000", + }, + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": { + "inherited": true, + "value": false, + }, + "com.sun.identity.sm.notification.threadpool.size": { + "inherited": true, + "value": "1", + }, + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": { + "inherited": true, + "value": "3000", + }, + "com.iplanet.am.event.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.event.connection.num.retries": { + "inherited": true, + "value": "3", + }, + "com.sun.am.event.connection.disable.list": { + "inherited": true, + "value": "aci,um,sm", + }, + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": { + "inherited": true, + "value": "1000", + }, + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.ldap.connection.num.retries": { + "inherited": true, + "value": "3", + }, + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": { + "inherited": true, + "value": "30", + }, + "com.iplanet.am.sdk.cache.entry.expire.enabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.sdk.cache.entry.user.expire.time": { + "inherited": true, + "value": "15", + }, + }, + }, + "security": { + "_id": "03/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.cookie.name": { + "inherited": true, + "value": "iPlanetDirectoryPro", + }, + "com.iplanet.am.cookie.secure": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.mtlsenabled": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.password": { + "inherited": true, + "value": null, + }, + "com.sun.identity.crl.cache.directory.port": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchattr": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchlocs": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.ssl": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.user": { + "inherited": true, + "value": "", + }, + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": { + "inherited": true, + "value": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + }, + "amconfig.header.encryption": { + "am.encryption.pwd": { + "inherited": true, + "value": "@AM_ENC_PWD@", + }, + "am.encryption.secret.alias": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.enabled": { + "inherited": true, + "value": false, + }, + "am.encryption.secret.keyPass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreFile": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystorePass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreType": { + "inherited": true, + "value": "JCEKS", + }, + "com.iplanet.security.SecureRandomFactoryImpl": { + "inherited": true, + "value": "com.iplanet.am.util.SecureRandomFactoryImpl", + }, + "com.iplanet.security.encryptor": { + "inherited": true, + "value": "com.iplanet.services.util.JCEEncryption", + }, + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocsp.responder.url": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocspCheck": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": { + "inherited": true, + "value": "test", + }, + "com.sun.identity.saml.xmlsig.keypass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.keypass", + }, + "com.sun.identity.saml.xmlsig.keystore": { + "inherited": true, + "value": "%BASE_DIR%/security/keystores/keystore.jceks", + }, + "com.sun.identity.saml.xmlsig.storepass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.storepass", + }, + "com.sun.identity.saml.xmlsig.storetype": { + "inherited": true, + "value": "JCEKS", + }, + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": { + "inherited": true, + "value": "16384", + }, + }, + }, + "session": { + "_id": "03/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": { + "inherited": true, + "value": "60", + }, + "com.iplanet.services.stats.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/stats", + }, + "com.iplanet.services.stats.state": { + "inherited": true, + "value": "file", + }, + "com.sun.am.session.enableHostLookUp": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": { + "inherited": true, + "value": "10", + }, + "com.iplanet.am.notification.threadpool.threshold": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": { + "inherited": true, + "value": "3", + }, + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": { + "inherited": true, + "value": true, + }, + }, + }, + "uma": { + "_id": "03/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.resourcesets.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.resourcesets.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.labels.store.max.connections": { + "inherited": true, + "value": "2", + }, + "org.forgerock.services.uma.labels.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.labels.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.labels.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.pendingrequests.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.umaaudit.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.umaaudit.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + }, + "siteName": "testsite", + "url": "http://localhost:8081/am", + }, + "04": { + "_id": "04", + "properties": { + "advanced": { + "_id": "04/properties/advanced", + "com.iplanet.am.lbcookie.value": "04", + }, + "cts": { + "_id": "04/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.cts.store.max.connections": { + "inherited": true, + "value": "100", + }, + "org.forgerock.services.cts.store.page.size": { + "inherited": true, + "value": "0", + }, + "org.forgerock.services.cts.store.root.suffix": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.vlv.page.size": { + "inherited": true, + "value": "1000", + }, + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.affinity.enabled": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.cts.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + "directoryConfiguration": { + "_id": "04/properties/directoryConfiguration", + "directoryConfiguration": { + "bindDn": "cn=Directory Manager", + "bindPassword": null, + "maxConnectionPool": 10, + "minConnectionPool": 1, + "mtlsAlias": "", + "mtlsEnabled": false, + "mtlsKeyPasswordFile": "", + "mtlsKeyStoreFile": "", + "mtlsKeyStorePasswordFile": "", + "mtlsKeyStoreType": null, + }, + "directoryServers": [ + { + "connectionType": "SSL", + "hostName": "localhost", + "portNumber": "50636", + "serverName": "Server1", + }, + ], + }, + "general": { + "_id": "04/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/debug", + }, + "com.iplanet.services.debug.level": { + "inherited": true, + "value": "off", + }, + "com.sun.services.debug.mergeall": { + "inherited": true, + "value": "on", + }, + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": { + "inherited": true, + "value": "en_US", + }, + "com.iplanet.am.util.xml.validating": { + "inherited": true, + "value": "off", + }, + "com.iplanet.services.configpath": { + "inherited": true, + "value": "%BASE_DIR%", + }, + "com.sun.identity.client.notification.url": { + "inherited": true, + "value": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": { + "inherited": true, + "value": "localhost", + }, + "com.iplanet.am.smtpport": { + "inherited": true, + "value": "25", + }, + }, + "amconfig.header.site": { + "singleChoiceSite": "[Empty]", + }, + }, + "sdk": { + "_id": "04/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": { + "inherited": true, + "value": "10000", + }, + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": { + "inherited": true, + "value": false, + }, + "com.sun.identity.sm.notification.threadpool.size": { + "inherited": true, + "value": "1", + }, + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": { + "inherited": true, + "value": "3000", + }, + "com.iplanet.am.event.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.event.connection.num.retries": { + "inherited": true, + "value": "3", + }, + "com.sun.am.event.connection.disable.list": { + "inherited": true, + "value": "aci,um,sm", + }, + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": { + "inherited": true, + "value": "1000", + }, + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.ldap.connection.num.retries": { + "inherited": true, + "value": "3", + }, + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": { + "inherited": true, + "value": "30", + }, + "com.iplanet.am.sdk.cache.entry.expire.enabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.sdk.cache.entry.user.expire.time": { + "inherited": true, + "value": "15", + }, + }, + }, + "security": { + "_id": "04/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.cookie.name": { + "inherited": true, + "value": "iPlanetDirectoryPro", + }, + "com.iplanet.am.cookie.secure": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.mtlsenabled": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.password": { + "inherited": true, + "value": null, + }, + "com.sun.identity.crl.cache.directory.port": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchattr": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchlocs": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.ssl": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.user": { + "inherited": true, + "value": "", + }, + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": { + "inherited": true, + "value": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + }, + "amconfig.header.encryption": { + "am.encryption.pwd": { + "inherited": true, + "value": "@AM_ENC_PWD@", + }, + "am.encryption.secret.alias": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.enabled": { + "inherited": true, + "value": false, + }, + "am.encryption.secret.keyPass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreFile": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystorePass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreType": { + "inherited": true, + "value": "JCEKS", + }, + "com.iplanet.security.SecureRandomFactoryImpl": { + "inherited": true, + "value": "com.iplanet.am.util.SecureRandomFactoryImpl", + }, + "com.iplanet.security.encryptor": { + "inherited": true, + "value": "com.iplanet.services.util.JCEEncryption", + }, + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocsp.responder.url": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocspCheck": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": { + "inherited": true, + "value": "test", + }, + "com.sun.identity.saml.xmlsig.keypass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.keypass", + }, + "com.sun.identity.saml.xmlsig.keystore": { + "inherited": true, + "value": "%BASE_DIR%/security/keystores/keystore.jceks", + }, + "com.sun.identity.saml.xmlsig.storepass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.storepass", + }, + "com.sun.identity.saml.xmlsig.storetype": { + "inherited": true, + "value": "JCEKS", + }, + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": { + "inherited": true, + "value": "16384", + }, + }, + }, + "session": { + "_id": "04/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": { + "inherited": true, + "value": "60", + }, + "com.iplanet.services.stats.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/stats", + }, + "com.iplanet.services.stats.state": { + "inherited": true, + "value": "file", + }, + "com.sun.am.session.enableHostLookUp": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": { + "inherited": true, + "value": "10", + }, + "com.iplanet.am.notification.threadpool.threshold": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": { + "inherited": true, + "value": "3", + }, + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": { + "inherited": true, + "value": true, + }, + }, + }, + "uma": { + "_id": "04/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.resourcesets.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.resourcesets.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.labels.store.max.connections": { + "inherited": true, + "value": "2", + }, + "org.forgerock.services.uma.labels.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.labels.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.labels.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.pendingrequests.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.umaaudit.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.umaaudit.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + }, + "siteName": null, + "url": "http://localhost:8082/am", + }, + }, + }, + "service": { + "ConfigurationVersionService": { + "_id": "", + "_type": { + "_id": "ConfigurationVersionService", + "collection": false, + "name": "Configuration Version Service", + }, + "appliedRuleIds": [ + "AME-23273", + "AME-21032", + "AME-21768", + ], + "configurationVersion": "8.0.0.0", + "location": "global", + "nextDescendents": [], + }, + "CorsService": { + "_id": "", + "_type": { + "_id": "CorsService", + "collection": false, + "name": "CORS Service", + }, + "enabled": true, + "location": "global", + "nextDescendents": [], + }, + "DataStoreService": { + "_id": "", + "_type": { + "_id": "DataStoreService", + "collection": false, + "name": "External Data Stores", + }, + "defaults": { + "applicationDataStoreId": "fd270e31-1788-4193-8734-eb2d500c47f3", + "policyDataStoreId": "fd270e31-1788-4193-8734-eb2d500c47f3", + }, + "location": "global", + "nextDescendents": [], + }, + "GoogleCloudServiceAccountService": { + "_id": "", + "_type": { + "_id": "GoogleCloudServiceAccountService", + "collection": false, + "name": "Google Cloud Platform Service Accounts", + }, + "enabled": true, + "location": "global", + "nextDescendents": [ + { + "_id": "default", + "_type": { + "_id": "serviceAccounts", + "collection": true, + "name": "GCP Service Account", + }, + "allowedRealms": [ + "*", + ], + "allowedSecretNamePatterns": [ + "*", + ], + "disallowedSecretNamePatterns": [], + }, + ], + }, + "IdentityAssertionService": { + "_id": "", + "_type": { + "_id": "IdentityAssertionService", + "collection": false, + "name": "Identity Assertion Service", + }, + "cacheDuration": 120, + "defaults": { + "cacheDuration": 120, + "enable": true, + }, + "enable": true, + "location": "global", + "nextDescendents": [], + }, + "RadiusServerService": { + "_id": "", + "_type": { + "_id": "RadiusServerService", + "collection": false, + "name": "RADIUS Server", + }, + "location": "global", + "nextDescendents": [], + "radiusListenerEnabled": "NO", + "radiusServerPort": 1812, + "radiusThreadPoolCoreSize": 1, + "radiusThreadPoolKeepaliveSeconds": 10, + "radiusThreadPoolMaxSize": 10, + "radiusThreadPoolQueueSize": 20, + }, + "RemoteConsentService": { + "_id": "", + "_type": { + "_id": "RemoteConsentService", + "collection": false, + "name": "Remote Consent Service", + }, + "defaults": { + "consentResponseTimeLimit": 2, + "jwkStoreCacheMissCacheTime": 1, + "jwkStoreCacheTimeout": 5, + }, + "location": "global", + "nextDescendents": [], + }, + "SocialIdentityProviders": { + "_id": "", + "_type": { + "_id": "SocialIdentityProviders", + "collection": false, + "name": "Social Identity Provider Service", + }, + "defaults": { + "enabled": true, + }, + "location": "global", + "nextDescendents": [], + }, + "amSessionPropertyWhitelist": { + "_id": "", + "_type": { + "_id": "amSessionPropertyWhitelist", + "collection": false, + "name": "Session Property Whitelist Service", + }, + "defaults": { + "sessionPropertyWhitelist": [ + "AMCtxId", + ], + "whitelistedQueryProperties": [], + }, + "location": "global", + "nextDescendents": [], + }, + "androidKeyAttestation": { + "_id": "", + "_type": { + "_id": "androidKeyAttestation", + "collection": false, + "name": "Android Key Attestation", + }, + "cacheDuration": 24, + "defaults": { + "crlUrl": "https://android.googleapis.com/attestation/status", + }, + "location": "global", + "nextDescendents": [], + }, + "audit": { + "_id": "", + "_type": { + "_id": "audit", + "collection": false, + "name": "Audit Logging", + }, + "auditEnabled": true, + "blacklistFieldFilters": [], + "defaults": { + "auditEnabled": true, + "blacklistFieldFilters": [], + "whitelistFieldFilters": [], + }, + "location": "global", + "nextDescendents": [ + { + "_id": "Global JSON Handler", + "_type": { + "_id": "JSON", + "collection": true, + "name": "JSON", + }, + "commonHandler": { + "enabled": true, + "topics": [ + "access", + "activity", + "config", + "authentication", + ], + }, + "commonHandlerPlugin": { + "handlerFactory": "org.forgerock.openam.audit.events.handlers.JsonAuditEventHandlerFactory", + }, + "jsonBuffering": { + "bufferingMaxSize": "100000", + "bufferingWriteInterval": "5", + }, + "jsonConfig": { + "elasticsearchCompatible": false, + "location": "%BASE_DIR%/var/audit/", + "rotationRetentionCheckInterval": "5", + }, + "jsonFileRetention": { + "retentionMaxDiskSpaceToUse": "-1", + "retentionMaxNumberOfHistoryFiles": "1", + "retentionMinFreeSpaceRequired": "-1", + }, + "jsonFileRotation": { + "rotationEnabled": true, + "rotationFileSuffix": "-yyyy.MM.dd-HH.mm.ss", + "rotationInterval": "-1", + "rotationMaxFileSize": "100000000", + "rotationTimes": [], + }, + }, + ], + "whitelistFieldFilters": [], + }, + "authenticatorOathService": { + "_id": "", + "_type": { + "_id": "authenticatorOathService", + "collection": false, + "name": "ForgeRock Authenticator (OATH) Service", + }, + "defaults": { + "authenticatorOATHDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "authenticatorOATHDeviceSettingsEncryptionKeystoreKeyPairAlias": "pushDeviceProfiles", + "authenticatorOATHDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorOATHDeviceSettingsEncryptionKeystoreType": "JKS", + "authenticatorOATHDeviceSettingsEncryptionScheme": "NONE", + "authenticatorOATHSkippableName": "oath2faEnabled", + "oathAttrName": "oathDeviceProfiles", + }, + "location": "global", + "nextDescendents": [], + }, + "authenticatorPushService": { + "_id": "", + "_type": { + "_id": "authenticatorPushService", + "collection": false, + "name": "ForgeRock Authenticator (Push) Service", + }, + "defaults": { + "authenticatorPushDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "authenticatorPushDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorPushDeviceSettingsEncryptionKeystoreType": "JKS", + "authenticatorPushDeviceSettingsEncryptionScheme": "NONE", + "authenticatorPushSkippableName": "push2faEnabled", + "pushAttrName": "pushDeviceProfiles", + }, + "location": "global", + "nextDescendents": [], + }, + "authenticatorWebAuthnService": { + "_id": "", + "_type": { + "_id": "authenticatorWebAuthnService", + "collection": false, + "name": "WebAuthn Profile Encryption Service", + }, + "defaults": { + "authenticatorWebAuthnDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jceks", + "authenticatorWebAuthnDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorWebAuthnDeviceSettingsEncryptionKeystoreType": "JCEKS", + "authenticatorWebAuthnDeviceSettingsEncryptionScheme": "NONE", + "webauthnAttrName": "webauthnDeviceProfiles", + }, + "location": "global", + "nextDescendents": [], + }, + "baseurl": { + "_id": "", + "_type": { + "_id": "baseurl", + "collection": false, + "name": "Base URL Source", + }, + "defaults": { + "contextPath": "/am", + "source": "REQUEST_VALUES", + }, + "location": "global", + "nextDescendents": [], + }, + "dashboard": { + "_id": "", + "_type": { + "_id": "dashboard", + "collection": false, + "name": "Dashboard", + }, + "defaults": { + "assignedDashboard": [], + }, + "location": "global", + "nextDescendents": [ + { + "_id": "Google", + "_type": { + "_id": "instances", + "collection": true, + "name": "instance", + }, + "className": "SAML2ApplicationClass", + "displayName": "Google", + "icfIdentifier": "idm magic 34", + "icon": "images/logos/googleplus.png", + "login": "http://www.google.com", + "name": "Google", + }, + { + "_id": "SalesForce", + "_type": { + "_id": "instances", + "collection": true, + "name": "instance", + }, + "className": "SAML2ApplicationClass", + "displayName": "SalesForce", + "icfIdentifier": "idm magic 12", + "icon": "images/logos/salesforce.png", + "login": "http://www.salesforce.com", + "name": "SalesForce", + }, + { + "_id": "ZenDesk", + "_type": { + "_id": "instances", + "collection": true, + "name": "instance", + }, + "className": "SAML2ApplicationClass", + "displayName": "ZenDesk", + "icfIdentifier": "idm magic 56", + "icon": "images/logos/zendesk.png", + "login": "http://www.ZenDesk.com", + "name": "ZenDesk", + }, + ], + }, + "deviceBindingService": { + "_id": "", + "_type": { + "_id": "deviceBindingService", + "collection": false, + "name": "Device Binding Service", + }, + "defaults": { + "deviceBindingAttrName": "boundDevices", + "deviceBindingSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceBindingSettingsEncryptionKeystorePassword": null, + "deviceBindingSettingsEncryptionKeystoreType": "JKS", + "deviceBindingSettingsEncryptionScheme": "NONE", + }, + "location": "global", + "nextDescendents": [], + }, + "deviceIdService": { + "_id": "", + "_type": { + "_id": "deviceIdService", + "collection": false, + "name": "Device ID Service", + }, + "defaults": { + "deviceIdAttrName": "devicePrintProfiles", + "deviceIdSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceIdSettingsEncryptionKeystorePassword": null, + "deviceIdSettingsEncryptionKeystoreType": "JKS", + "deviceIdSettingsEncryptionScheme": "NONE", + }, + "location": "global", + "nextDescendents": [], + }, + "deviceProfilesService": { + "_id": "", + "_type": { + "_id": "deviceProfilesService", + "collection": false, + "name": "Device Profiles Service", + }, + "defaults": { + "deviceProfilesAttrName": "deviceProfiles", + "deviceProfilesSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceProfilesSettingsEncryptionKeystorePassword": null, + "deviceProfilesSettingsEncryptionKeystoreType": "JKS", + "deviceProfilesSettingsEncryptionScheme": "NONE", + }, + "location": "global", + "nextDescendents": [], + }, + "email": { + "_id": "", + "_type": { + "_id": "email", + "collection": false, + "name": "Email Service", + }, + "defaults": { + "emailAddressAttribute": "mail", + "emailImplClassName": "org.forgerock.openam.services.email.MailServerImpl", + "emailRateLimitSeconds": 1, + "port": 465, + "sslState": "SSL", + }, + "location": "global", + "nextDescendents": [], + }, + "federation/common": { + "_id": "", + "_type": { + "_id": "federation/common", + "collection": false, + "name": "Common Federation Configuration", + }, + "algorithms": { + "DigestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha256", + "QuerySignatureAlgorithmDSA": "http://www.w3.org/2009/xmldsig11#dsa-sha256", + "QuerySignatureAlgorithmEC": "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512", + "QuerySignatureAlgorithmRSA": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", + "aesKeyWrapAlgorithm": "http://www.w3.org/2001/04/xmlenc#kw-aes256", + "canonicalizationAlgorithm": "http://www.w3.org/2001/10/xml-exc-c14n#", + "maskGenerationFunction": "http://www.w3.org/2009/xmlenc11#mgf1sha256", + "rsaKeyTransportAlgorithm": "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p", + "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", + "transformationAlgorithm": "http://www.w3.org/2001/10/xml-exc-c14n#", + }, + "generalConfig": { + "certificateChecking": "on", + "maxContentLength": 20480, + "samlErrorPageHttpBinding": "HTTP-POST", + "samlErrorPageUrl": "/saml2/jsp/saml2error.jsp", + }, + "implementationClasses": { + "configurationClass": "com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl", + "datastoreClass": "com.sun.identity.plugin.datastore.impl.IdRepoDataStoreProvider", + "keyProviderClass": "com.sun.identity.saml.xmlsig.JKSKeyProvider", + "loggerClass": "com.sun.identity.plugin.log.impl.LogProvider", + "passwordDecoderClass": "com.sun.identity.saml.xmlsig.FMPasswordDecoder", + "rootUrlProviderClass": "org.forgerock.openam.federation.plugin.rooturl.impl.FmRootUrlProvider", + "sessionProviderClass": "com.sun.identity.plugin.session.impl.FMSessionProvider", + "signatureProviderClass": "com.sun.identity.saml.xmlsig.AMSignatureProvider", + }, + "location": "global", + "montoring": { + "monitoringAgentClass": "com.sun.identity.plugin.monitoring.impl.AgentProvider", + "monitoringSaml2Class": "com.sun.identity.plugin.monitoring.impl.FedMonSAML2SvcProvider", + }, + "nextDescendents": [], + }, + "federation/multi": { + "_id": "", + "_type": { + "_id": "federation/multi", + "collection": false, + "name": "Multi-Federation Protocol", + }, + "location": "global", + "nextDescendents": [], + "singleLogoutHandlerList": [ + "key=WSFED|class=com.sun.identity.multiprotocol.WSFederationSingleLogoutHandler", + "key=SAML2|class=com.sun.identity.multiprotocol.SAML2SingleLogoutHandler", + ], + }, + "federation/saml2soapbinding": { + "_id": "", + "_type": { + "_id": "federation/saml2soapbinding", + "collection": false, + "name": "SAML v2.0 SOAP Binding", + }, + "location": "global", + "nextDescendents": [], + "requestHandlers": [], + }, + "globalization": { + "_id": "", + "_type": { + "_id": "globalization", + "collection": false, + "name": "Globalization Settings", + }, + "charsetMappings": [ + "locale=zh|charset=UTF-8;GB2312", + "locale=ar|charset=UTF-8;ISO-8859-6", + "locale=es|charset=UTF-8;ISO-8859-15", + "locale=de|charset=UTF-8;ISO-8859-15", + "locale=zh_TW|charset=UTF-8;BIG5", + "locale=fr|charset=UTF-8;ISO-8859-15", + "locale=ko|charset=UTF-8;EUC-KR", + "locale=en|charset=UTF-8;ISO-8859-1", + "locale=th|charset=UTF-8;TIS-620", + "locale=ja|charset=UTF-8;Shift_JIS;EUC-JP", + ], + "defaults": { + "commonNameFormats": [ + "zh={sn}{givenname}", + ], + }, + "location": "global", + "nextDescendents": [], + "sun-identity-g11n-settings-charset-alias-mapping": [ + "mimeName=EUC-KR|javaName=EUC_KR", + "mimeName=EUC-JP|javaName=EUC_JP", + "mimeName=Shift_JIS|javaName=SJIS", + ], + }, + "id-repositories": { + "_id": "", + "_type": { + "_id": "id-repositories", + "collection": false, + "name": "sunIdentityRepositoryService", + }, + "defaults": { + "sunIdRepoAttributeCombiner": "com.iplanet.am.sdk.AttributeCombiner", + "sunIdRepoAttributeValidator": [ + "class=com.sun.identity.idm.server.IdRepoAttributeValidatorImpl", + "minimumPasswordLength=8", + "usernameInvalidChars=*|(|)|&|!", + ], + }, + "location": "global", + "nextDescendents": [ + { + "_id": "agent", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "agentgroup", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "agentonly", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "filteredrole", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "group", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "realm", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "role", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "user", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "amAdmin", + "_type": { + "_id": "user", + "collection": true, + "name": "User", + }, + "cn": "amAdmin", + "dn": "uid=amAdmin,ou=people,", + "givenName": "amAdmin", + "inetUserStatus": "Active", + "iplanet-am-user-auth-config": "[Empty]", + "roles": [], + "sn": "amAdmin", + "userPassword": null, + }, + { + "_id": "anonymous", + "_type": { + "_id": "user", + "collection": true, + "name": "User", + }, + "cn": "anonymous", + "dn": "uid=anonymous,ou=people,", + "givenName": "anonymous", + "inetUserStatus": "Inactive", + "iplanet-am-user-auth-config": "[Empty]", + "roles": [], + "sn": "anonymous", + "userPassword": null, + }, + { + "_id": "dsameuser", + "_type": { + "_id": "user", + "collection": true, + "name": "User", + }, + "dn": "cn=dsameuser,ou=DSAME Users,", + "inetUserStatus": "Active", + "iplanet-am-user-auth-config": "[Empty]", + "roles": [], + "userPassword": null, + }, + ], + }, + "idm-integration": { + "_id": "", + "_type": { + "_id": "idm-integration", + "collection": false, + "name": "IDM Provisioning", + }, + "configurationCacheDuration": 0, + "enabled": false, + "idmProvisioningClient": "idm-provisioning", + "jwtSigningCompatibilityMode": false, + "location": "global", + "nextDescendents": [], + "provisioningClientScopes": [ + "fr:idm:*", + ], + "useInternalOAuth2Provider": false, + }, + "iot": { + "_id": "", + "_type": { + "_id": "iot", + "collection": false, + "name": "IoT Service", + }, + "defaults": { + "attributeAllowlist": [ + "thingConfig", + ], + "createOAuthClient": false, + "createOAuthJwtIssuer": false, + "oauthClientName": "forgerock-iot-oauth2-client", + "oauthJwtIssuerName": "forgerock-iot-jwt-issuer", + }, + "location": "global", + "nextDescendents": [], + }, + "logging": { + "_id": "", + "_type": { + "_id": "logging", + "collection": false, + "name": "Logging", + }, + "database": { + "databaseFailureMemoryBufferSize": 2, + "driver": "oracle.jdbc.driver.OracleDriver", + "maxRecords": 500, + "user": "dbuser", + }, + "file": { + "location": "%BASE_DIR%/var/audit/", + "maxFileSize": 100000000, + "numberHistoryFiles": 1, + "rotationEnabled": true, + "rotationInterval": -1, + "suffix": "-MM.dd.yy-kk.mm", + }, + "general": { + "bufferSize": 25, + "bufferTime": 60, + "buffering": "ON", + "certificateStore": "%BASE_DIR%/var/audit/Logger.jks", + "fields": [ + "IPAddr", + "LoggedBy", + "LoginID", + "NameID", + "ModuleName", + "ContextID", + "Domain", + "LogLevel", + "HostName", + "MessageID", + ], + "filesPerKeystore": 5, + "jdkLoggingLevel": "INFO", + "security": "OFF", + "signaturePeriod": 900, + "signingAlgorithm": "SHA1withRSA", + "status": "INACTIVE", + "type": "File", + "verifyPeriod": 3600, + }, + "location": "global", + "nextDescendents": [], + "resolveHostName": false, + "syslog": { + "facility": "local5", + "host": "localhost", + "port": 514, + "protocol": "UDP", + "timeout": 30, + }, + }, + "monitoring": { + "_id": "", + "_type": { + "_id": "monitoring", + "collection": false, + "name": "Monitoring", + }, + "authfilePath": "%BASE_DIR%/security/openam_mon_auth", + "enabled": true, + "httpEnabled": false, + "httpPort": 8082, + "location": "global", + "nextDescendents": [ + { + "_id": "crest", + "_type": { + "_id": "crest", + "collection": true, + "name": "CREST Reporter", + }, + "enabled": false, + }, + { + "_id": "prometheus", + "_type": { + "_id": "prometheus", + "collection": true, + "name": "Prometheus Reporter", + }, + "authenticationType": "BASIC", + "enabled": false, + "password": null, + "username": "prometheus", + }, + ], + "policyHistoryWindowSize": 10000, + "rmiEnabled": false, + "rmiPort": 9999, + "sessionHistoryWindowSize": 10000, + "snmpEnabled": false, + "snmpPort": 8085, + }, + "naming": { + "_id": "", + "_type": { + "_id": "naming", + "collection": false, + "name": "Naming", + }, + "endpointConfig": { + "jaxwsUrl": "%protocol://%host:%port%uri/identityservices/", + "stsMexUrl": "%protocol://%host:%port%uri/sts/mex", + "stsUrl": "%protocol://%host:%port%uri/sts", + }, + "federationConfig": { + "jaxrpcUrl": "%protocol://%host:%port%uri/jaxrpc/", + "samlAssertionManagerUrl": "%protocol://%host:%port%uri/AssertionManagerServlet/AssertionManagerIF", + "samlAwareServletUrl": "%protocol://%host:%port%uri/SAMLAwareServlet", + "samlPostServletUrl": "%protocol://%host:%port%uri/SAMLPOSTProfileServlet", + "samlSoapReceiverUrl": "%protocol://%host:%port%uri/SAMLSOAPReceiver", + }, + "generalConfig": { + "authUrl": "%protocol://%host:%port%uri/authservice", + "loggingUrl": "%protocol://%host:%port%uri/loggingservice", + "policyUrl": "%protocol://%host:%port%uri/policyservice", + "profileUrl": "%protocol://%host:%port%uri/profileservice", + "sessionUrl": "%protocol://%host:%port%uri/sessionservice", + }, + "location": "global", + "nextDescendents": [], + }, + "oauth-oidc": { + "_id": "", + "_type": { + "_id": "oauth-oidc", + "collection": false, + "name": "OAuth2 Provider", + }, + "allowUnauthorisedAccessToUserCodeForm": false, + "blacklistCacheSize": 10000, + "blacklistPollInterval": 60, + "blacklistPurgeDelay": 1, + "defaults": { + "advancedOAuth2Config": { + "allowClientCredentialsInTokenRequestQueryParameters": false, + "allowedAudienceValues": [], + "authenticationAttributes": [ + "uid", + ], + "codeVerifierEnforced": "false", + "defaultScopes": [], + "displayNameAttribute": "cn", + "expClaimRequiredInRequestObject": false, + "grantTypes": [ + "implicit", + "urn:ietf:params:oauth:grant-type:saml2-bearer", + "refresh_token", + "password", + "client_credentials", + "urn:ietf:params:oauth:grant-type:device_code", + "authorization_code", + "urn:openid:params:grant-type:ciba", + "urn:ietf:params:oauth:grant-type:uma-ticket", + "urn:ietf:params:oauth:grant-type:token-exchange", + "urn:ietf:params:oauth:grant-type:jwt-bearer", + ], + "hashSalt": "changeme", + "includeSubnameInTokenClaims": true, + "macaroonTokenFormat": "V2", + "maxAgeOfRequestObjectNbfClaim": 0, + "maxDifferenceBetweenRequestObjectNbfAndExp": 0, + "moduleMessageEnabledInPasswordGrant": false, + "nbfClaimRequiredInRequestObject": false, + "parRequestUriLifetime": 90, + "persistentClaims": [], + "refreshTokenGracePeriod": 0, + "requestObjectProcessing": "OIDC", + "requirePushedAuthorizationRequests": false, + "responseTypeClasses": [ + "code|org.forgerock.oauth2.core.AuthorizationCodeResponseTypeHandler", + "id_token|org.forgerock.openidconnect.IdTokenResponseTypeHandler", + "token|org.forgerock.oauth2.core.TokenResponseTypeHandler", + ], + "supportedScopes": [], + "supportedSubjectTypes": [ + "public", + "pairwise", + ], + "tlsCertificateBoundAccessTokensEnabled": true, + "tlsCertificateRevocationCheckingEnabled": false, + "tlsClientCertificateHeaderFormat": "URLENCODED_PEM", + "tokenCompressionEnabled": false, + "tokenEncryptionEnabled": false, + "tokenExchangeClasses": [ + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToAccessTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToAccessTokenExchanger", + ], + "tokenSigningAlgorithm": "HS256", + "tokenValidatorClasses": [ + "urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.OidcIdTokenValidator", + "urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.OAuth2AccessTokenValidator", + ], + }, + "advancedOIDCConfig": { + "alwaysAddClaimsToToken": false, + "amrMappings": {}, + "authorisedIdmDelegationClients": [], + "authorisedOpenIdConnectSSOClients": [], + "claimsParameterSupported": false, + "defaultACR": [], + "idTokenInfoClientAuthenticationEnabled": true, + "includeAllKtyAlgCombinationsInJwksUri": false, + "loaMapping": {}, + "storeOpsTokens": true, + "supportedAuthorizationResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedAuthorizationResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedAuthorizationResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRequestParameterEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRequestParameterEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRequestParameterSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenEndpointAuthenticationSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenIntrospectionResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedTokenIntrospectionResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedTokenIntrospectionResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedUserInfoEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedUserInfoEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedUserInfoSigningAlgorithms": [ + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + ], + "useForceAuthnForMaxAge": false, + "useForceAuthnForPromptLogin": false, + }, + "cibaConfig": { + "cibaAuthReqIdLifetime": 600, + "cibaMinimumPollingInterval": 2, + "supportedCibaSigningAlgorithms": [ + "ES256", + "PS256", + ], + }, + "clientDynamicRegistrationConfig": { + "allowDynamicRegistration": false, + "dynamicClientRegistrationScope": "dynamic_client_registration", + "dynamicClientRegistrationSoftwareStatementRequired": false, + "generateRegistrationAccessTokens": true, + "requiredSoftwareStatementAttestedAttributes": [ + "redirect_uris", + ], + }, + "consent": { + "clientsCanSkipConsent": false, + "enableRemoteConsent": false, + "supportedRcsRequestEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsRequestEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsRequestSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRcsResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsResponseEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsResponseSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "coreOAuth2Config": { + "accessTokenLifetime": 3600, + "accessTokenMayActScript": "[Empty]", + "codeLifetime": 120, + "issueRefreshToken": true, + "issueRefreshTokenOnRefreshedToken": true, + "macaroonTokensEnabled": false, + "oidcMayActScript": "[Empty]", + "refreshTokenLifetime": 604800, + "scopesPolicySet": "oauth2Scopes", + "statelessTokensEnabled": false, + "usePolicyEngineForScope": false, + }, + "coreOIDCConfig": { + "jwtTokenLifetime": 3600, + "oidcDiscoveryEndpointEnabled": false, + "overrideableOIDCClaims": [], + "supportedClaims": [], + "supportedIDTokenEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedIDTokenEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedIDTokenSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "deviceCodeConfig": { + "deviceCodeLifetime": 300, + "devicePollInterval": 5, + "deviceUserCodeCharacterSet": "234567ACDEFGHJKLMNPQRSTWXYZabcdefhijkmnopqrstwxyz", + "deviceUserCodeLength": 8, + }, + "pluginsConfig": { + "accessTokenEnricherClass": "org.forgerock.oauth2.core.plugins.registry.DefaultAccessTokenEnricher", + "accessTokenModificationPluginType": "SCRIPTED", + "accessTokenModificationScript": "d22f9a0c-426a-4466-b95e-d0f125b0d5fa", + "authorizeEndpointDataProviderClass": "org.forgerock.oauth2.core.plugins.registry.DefaultEndpointDataProvider", + "authorizeEndpointDataProviderPluginType": "JAVA", + "authorizeEndpointDataProviderScript": "3f93ef6e-e54a-4393-aba1-f322656db28a", + "evaluateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeEvaluator", + "evaluateScopePluginType": "JAVA", + "evaluateScopeScript": "da56fe60-8b38-4c46-a405-d6b306d4b336", + "oidcClaimsPluginType": "SCRIPTED", + "oidcClaimsScript": "36863ffb-40ec-48b9-94b1-9a99f71cc3b5", + "userCodeGeneratorClass": "org.forgerock.oauth2.core.plugins.registry.DefaultUserCodeGenerator", + "validateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeValidator", + "validateScopePluginType": "JAVA", + "validateScopeScript": "25e6c06d-cf70-473b-bd28-26931edc476b", + }, + }, + "jwtTokenLifetimeValidationEnabled": true, + "jwtTokenRequiredClaims": [], + "jwtTokenUnreasonableLifetime": 86400, + "location": "global", + "nextDescendents": [], + "statelessGrantTokenUpgradeCompatibilityMode": false, + "storageScheme": "CTS_ONE_TO_ONE_MODEL", + }, + "pingOneWorkerService": { + "_id": "", + "_type": { + "_id": "pingOneWorkerService", + "collection": false, + "name": "PingOne Worker Service", + }, + "defaults": { + "enabled": true, + }, + "location": "global", + "nextDescendents": [], + }, + "platform": { + "_id": "", + "_type": { + "_id": "platform", + "collection": false, + "name": "Platform", + }, + "cookieDomains": [], + "locale": "en_US", + "location": "global", + "nextDescendents": [], + }, + "policyconfiguration": { + "_id": "", + "_type": { + "_id": "policyconfiguration", + "collection": false, + "name": "Policy Configuration", + }, + "continueEvaluationOnDeny": false, + "defaults": { + "bindDn": "cn=Directory Manager", + "checkIfResourceTypeExists": true, + "connectionPoolMaximumSize": 10, + "connectionPoolMinimumSize": 1, + "ldapServer": [ + "localhost:50636", + ], + "maximumSearchResults": 100, + "mtlsEnabled": false, + "policyHeartbeatInterval": 10, + "policyHeartbeatTimeUnit": "SECONDS", + "realmSearchFilter": "(objectclass=sunismanagedorganization)", + "searchTimeout": 5, + "sslEnabled": true, + "subjectsResultTTL": 10, + "userAliasEnabled": false, + "usersBaseDn": "dc=openam,dc=forgerock,dc=org", + "usersSearchAttribute": "uid", + "usersSearchFilter": "(objectclass=inetorgperson)", + "usersSearchScope": "SCOPE_SUB", + }, + "location": "global", + "nextDescendents": [], + "realmAliasReferrals": false, + "resourceComparators": [ + "serviceType=iPlanetAMWebAgentService|class=com.sun.identity.policy.plugins.HttpURLResourceName|wildcard=*|oneLevelWildcard=-*-|delimiter=/|caseSensitive=false", + ], + }, + "pushNotification": { + "_id": "", + "_type": { + "_id": "pushNotification", + "collection": false, + "name": "Push Notification Service", + }, + "defaults": { + "delegateFactory": "org.forgerock.openam.services.push.sns.SnsHttpDelegateFactory", + "mdCacheSize": 10000, + "mdConcurrency": 16, + "mdDuration": 120, + "region": "us-east-1", + }, + "location": "global", + "nextDescendents": [], + }, + "rest": { + "_id": "", + "_type": { + "_id": "rest", + "collection": false, + "name": "REST APIs", + }, + "csrfFilterEnabled": true, + "defaultProtocolVersion": "Latest", + "defaultVersion": "Latest", + "descriptionsState": "STATIC", + "location": "global", + "nextDescendents": [], + "warningHeader": true, + }, + "saml2": { + "_id": "", + "_type": { + "_id": "saml2", + "collection": false, + "name": "SAML v2.0 Service Configuration", + }, + "bufferLength": 2048, + "caCertValidation": false, + "cacheCleanupInterval": 600, + "encryptedKeyInKeyInfo": true, + "idpDiscoveryCookieType": "PERSISTENT", + "idpDiscoveryUrlSchema": "HTTPS", + "location": "global", + "nameIDInfoAttribute": "sun-fm-saml2-nameid-info", + "nameIDInfoKeyAttribute": "sun-fm-saml2-nameid-infokey", + "nextDescendents": [], + "signingCertValidation": false, + "xmlEncryptionClass": "com.sun.identity.saml2.xmlenc.FMEncProvider", + "xmlSigningClass": "com.sun.identity.saml2.xmlsig.FMSigProvider", + }, + "security": { + "_id": "", + "_type": { + "_id": "security", + "collection": false, + "name": "Legacy User Self Service", + }, + "defaults": { + "confirmationIdHmacKey": "YcGfeuzSM14OG5djEcxEnvPydX28nsuxAZyDX1VA8iY=", + "forgotPasswordConfirmationUrl": "http://localhost:8080/am/XUI/confirm.html", + "forgotPasswordEnabled": false, + "forgotPasswordTokenLifetime": 900, + "protectedUserAttributes": [], + "selfRegistrationConfirmationUrl": "http://localhost:8080/am/XUI/confirm.html", + "selfRegistrationEnabled": false, + "selfRegistrationTokenLifetime": 900, + "selfServiceEnabled": false, + "userRegisteredDestination": "default", + }, + "location": "global", + "nextDescendents": [], + }, + "selfService": { + "_id": "", + "_type": { + "_id": "selfService", + "collection": false, + "name": "User Self-Service", + }, + "defaults": { + "advancedConfig": { + "forgottenPasswordConfirmationUrl": "http://localhost:8080/am/XUI/?realm=\${realm}#passwordReset/", + "forgottenPasswordServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.ForgottenPasswordConfigProvider", + "forgottenUsernameServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.ForgottenUsernameConfigProvider", + "userRegistrationConfirmationUrl": "http://localhost:8080/am/XUI/?realm=\${realm}#register/", + "userRegistrationServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.UserRegistrationConfigProvider", + }, + "forgottenPassword": { + "forgottenPasswordCaptchaEnabled": false, + "forgottenPasswordEmailBody": [ + "en|

Click on this link to reset your password.

", + ], + "forgottenPasswordEmailSubject": [ + "en|Forgotten password email", + ], + "forgottenPasswordEmailVerificationEnabled": true, + "forgottenPasswordEnabled": false, + "forgottenPasswordKbaEnabled": false, + "forgottenPasswordTokenPaddingLength": 450, + "forgottenPasswordTokenTTL": 300, + "numberOfAllowedAttempts": 1, + "numberOfAttemptsEnforced": false, + }, + "forgottenUsername": { + "forgottenUsernameCaptchaEnabled": false, + "forgottenUsernameEmailBody": [ + "en|

Your username is %username%.

", + ], + "forgottenUsernameEmailSubject": [ + "en|Forgotten username email", + ], + "forgottenUsernameEmailUsernameEnabled": true, + "forgottenUsernameEnabled": false, + "forgottenUsernameKbaEnabled": false, + "forgottenUsernameShowUsernameEnabled": false, + "forgottenUsernameTokenTTL": 300, + }, + "generalConfig": { + "captchaVerificationUrl": "https://www.google.com/recaptcha/api/siteverify", + "kbaQuestions": [ + "4|en|What is your mother's maiden name?", + "3|en|What was the name of your childhood pet?", + "2|en|What was the model of your first car?", + "1|en|What is the name of your favourite restaurant?", + ], + "minimumAnswersToDefine": 1, + "minimumAnswersToVerify": 1, + "validQueryAttributes": [ + "uid", + "mail", + "givenName", + "sn", + ], + }, + "profileManagement": { + "profileAttributeWhitelist": [ + "uid", + "telephoneNumber", + "mail", + "kbaInfo", + "givenName", + "sn", + "cn", + ], + "profileProtectedUserAttributes": [ + "telephoneNumber", + "mail", + ], + }, + "userRegistration": { + "userRegisteredDestination": "default", + "userRegistrationCaptchaEnabled": false, + "userRegistrationEmailBody": [ + "en|

Click on this link to register.

", + ], + "userRegistrationEmailSubject": [ + "en|Registration email", + ], + "userRegistrationEmailVerificationEnabled": true, + "userRegistrationEmailVerificationFirstEnabled": false, + "userRegistrationEnabled": false, + "userRegistrationKbaEnabled": false, + "userRegistrationTokenTTL": 300, + "userRegistrationValidUserAttributes": [ + "userPassword", + "mail", + "givenName", + "kbaInfo", + "inetUserStatus", + "sn", + "username", + ], + }, + }, + "location": "global", + "nextDescendents": [], + }, + "selfServiceTrees": { + "_id": "", + "_type": { + "_id": "selfServiceTrees", + "collection": false, + "name": "Self Service Trees", + }, + "defaults": { + "enabled": true, + "treeMapping": {}, + }, + "location": "global", + "nextDescendents": [], + }, + "session": { + "_id": "", + "_type": { + "_id": "session", + "collection": false, + "name": "Session", + }, + "dynamic": { + "maxCachingTime": 3, + "maxIdleTime": 30, + "maxSessionTime": 120, + "quotaLimit": 5, + }, + "general": { + "crossUpgradeReferenceFlag": false, + "dnRestrictionOnly": false, + "latestAccessTimeUpdateFrequency": 60, + "timeoutHandlers": [], + }, + "location": "global", + "nextDescendents": [], + "notifications": { + "notificationPropertyList": [], + "propertyChangeNotifications": "OFF", + }, + "quotas": { + "behaviourWhenQuotaExhausted": "org.forgerock.openam.session.service.DestroyNextExpiringAction", + "denyLoginWhenRepoDown": "NO", + "iplanet-am-session-enable-session-constraint": "OFF", + "quotaConstraintMaxWaitTime": 6000, + }, + "search": { + "maxSessionListSize": 120, + "sessionListRetrievalTimeout": 5, + }, + "stateless": { + "openam-session-stateless-blacklist-cache-size": 10000, + "openam-session-stateless-blacklist-poll-interval": 60, + "openam-session-stateless-blacklist-purge-delay": 1, + "openam-session-stateless-enable-session-blacklisting": false, + "openam-session-stateless-logout-poll-interval": 60, + "statelessCompressionType": "NONE", + "statelessEncryptionAesKey": null, + "statelessEncryptionType": "DIRECT", + "statelessLogoutByUser": false, + "statelessSigningHmacSecret": null, + "statelessSigningType": "HS256", + }, + }, + "socialauthentication": { + "_id": "", + "_type": { + "_id": "socialauthentication", + "collection": false, + "name": "Social Authentication Implementations", + }, + "defaults": { + "authenticationChains": {}, + "displayNames": {}, + "enabledKeys": [], + "icons": {}, + }, + "location": "global", + "nextDescendents": [], + }, + "transaction": { + "_id": "", + "_type": { + "_id": "transaction", + "collection": false, + "name": "Transaction Authentication Service", + }, + "defaults": { + "timeToLive": "180", + }, + "location": "global", + "nextDescendents": [], + }, + "uma": { + "_id": "", + "_type": { + "_id": "uma", + "collection": false, + "name": "UMA Provider", + }, + "defaults": { + "claimsGathering": { + "claimsGatheringService": "[Empty]", + "interactiveClaimsGatheringEnabled": false, + "pctLifetime": 604800, + }, + "generalSettings": { + "deletePoliciesOnDeleteRS": true, + "deleteResourceSetsOnDeleteRS": true, + "emailRequestingPartyOnPendingRequestApproval": true, + "emailResourceOwnerOnPendingRequestCreation": true, + "grantResourceOwnerImplicitConsent": true, + "grantRptConditions": [ + "REQUEST_PARTIAL", + "REQUEST_NONE", + "TICKET_PARTIAL", + ], + "pendingRequestsEnabled": true, + "permissionTicketLifetime": 120, + "resharingMode": "IMPLICIT", + "userProfileLocaleAttribute": "inetOrgPerson", + }, + }, + "location": "global", + "nextDescendents": [], + "umaPolicyUpgradeCompatibilityMode": false, + }, + "user": { + "_id": "", + "_type": { + "_id": "user", + "collection": false, + "name": "User", + }, + "dynamic": { + "defaultUserStatus": "Active", + }, + "location": "global", + "nextDescendents": [], + }, + "validation": { + "_id": "", + "_type": { + "_id": "validation", + "collection": false, + "name": "Validation Service", + }, + "defaults": { + "validGotoDestinations": [], + }, + "location": "global", + "nextDescendents": [], + "validGotoDestinations": [], + }, + }, + "site": { + "testsite": { + "_id": "testsite", + "secondaryURLs": [], + "servers": [ + { + "id": "03", + "url": "http://localhost:8081/am", + }, + ], + "url": "http://testurl.com:8080", + }, + }, + "webhookService": { + "webhooks": { + "_id": "", + "_type": { + "_id": "webhooks", + "collection": false, + "name": "Webhook Service", + }, + }, + }, + }, + "meta": Any, + "realm": {}, +} +`; + exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10 1`] = `0`; exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10 2`] = `""`; +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agent/Test-IG.agent.json 1`] = ` +{ + "agent": { + "Test IG": { + "_id": "Test IG", + "_type": { + "_id": "IdentityGatewayAgent", + "collection": true, + "name": "Identity Gateway Agents", + }, + "agentgroup": null, + "igCdssoLoginUrlTemplate": null, + "igCdssoRedirectUrls": [], + "igTokenIntrospection": "None", + "secretLabelIdentifier": null, + "status": "Active", + "userpassword": null, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agent/Test-SOAP-STS.agent.json 1`] = ` +{ + "agent": { + "Test SOAP STS": { + "_id": "Test SOAP STS", + "_type": { + "_id": "SoapSTSAgent", + "collection": true, + "name": "SOAP STS Agents", + }, + "agentgroup": null, + "publishServicePollInterval": 300, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agent/Test-Web.agent.json 1`] = ` +{ + "agent": { + "Test Web": { + "_id": "Test Web", + "_type": { + "_id": "WebAgent", + "collection": true, + "name": "Web Agents", + }, + "advancedWebAgentConfig": { + "apacheAuthDirectives": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "fragmentRedirectEnabled": false, + "hostnameToIpAddress": [], + "logonAndImpersonation": false, + "overrideRequestHost": false, + "overrideRequestPort": false, + "overrideRequestProtocol": false, + "pdpJavascriptRepost": false, + "pdpSkipPostUrl": [ + "", + ], + "pdpStickySessionCookieName": null, + "pdpStickySessionMode": "OFF", + "pdpStickySessionValue": null, + "postDataCachePeriod": 10, + "postDataPreservation": false, + "replayPasswordKey": null, + "retainSessionCache": false, + "showPasswordInHeader": false, + }, + "amServicesWebAgent": { + "amLoginUrl": [], + "amLogoutUrl": [ + "http://testurl.com:8080/UI/Logout", + ], + "applicationLogoutUrls": [ + "", + ], + "conditionalLoginUrl": [ + "", + ], + "customLoginMode": 0, + "enableLogoutRegex": false, + "fetchPoliciesFromRootResource": false, + "invalidateLogoutSession": true, + "logoutRedirectDisabled": false, + "logoutRedirectUrl": null, + "logoutResetCookies": [ + "", + ], + "logoutUrlRegex": null, + "policyCachePollingInterval": 3, + "policyClockSkew": 0, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "publicAmUrl": null, + "regexConditionalLoginPattern": [ + "", + ], + "regexConditionalLoginUrl": [ + "", + ], + "retrieveClientHostname": false, + "ssoCachePollingInterval": 3, + "userIdParameter": "UserToken", + "userIdParameterType": "session", + }, + "applicationWebAgentConfig": { + "attributeMultiValueSeparator": "|", + "clientIpValidation": false, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "fetchAttributesForNotEnforcedUrls": false, + "ignorePathInfoForNotEnforcedUrls": true, + "invertNotEnforcedUrls": false, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsList": [ + "", + ], + "notEnforcedIpsRegex": false, + "notEnforcedUrls": [ + "", + ], + "notEnforcedUrlsRegex": false, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalWebAgentConfig": { + "accessDeniedUrl": null, + "agentConfigChangeNotificationsEnabled": true, + "agentDebugLevel": "Error", + "agentUriPrefix": "http://testurl.com:8080/amagent", + "agentgroup": null, + "amLbCookieEnable": false, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [ + "agentRootURL=http://testurl.com:8080/", + ], + "configurationPollingInterval": 60, + "disableJwtAudit": false, + "fqdnCheck": false, + "fqdnDefault": "testurl.com", + "fqdnMapping": {}, + "jwtAuditWhitelist": null, + "jwtName": "am-auth-jwt", + "notificationsEnabled": true, + "repositoryLocation": "centralized", + "resetIdleTime": false, + "secretLabelIdentifier": null, + "ssoOnlyMode": false, + "status": "Active", + "userpassword": null, + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscWebAgentConfig": { + "addCacheControlHeader": false, + "anonymousUserEnabled": false, + "anonymousUserId": "anonymous", + "caseInsensitiveUrlComparison": true, + "compositeAdviceEncode": false, + "compositeAdviceRedirect": false, + "encodeSpecialCharsInCookies": false, + "encodeUrlSpecialCharacters": false, + "gotoParameterName": "goto", + "headerJsonResponse": {}, + "ignorePathInfo": false, + "invalidUrlRegex": null, + "invertUrlJsonResponse": false, + "mineEncodeHeader": 0, + "profileAttributesCookieMaxAge": 300, + "profileAttributesCookiePrefix": "HTTP_", + "statusCodeJsonResponse": 202, + "urlJsonResponse": [ + "", + ], + }, + "ssoWebAgentConfig": { + "acceptSsoToken": false, + "cdssoCookieDomain": [ + "", + ], + "cdssoRedirectUri": "agent/cdsso-oauth2", + "cookieName": "iPlanetDirectoryPro", + "cookieResetEnabled": false, + "cookieResetList": [ + "", + ], + "cookieResetOnRedirect": false, + "httpOnly": true, + "multivaluePreAuthnCookie": false, + "persistentJwtCookie": false, + "sameSite": null, + "secureCookies": false, + }, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agent/my-policy-agent.agent.json 1`] = ` +{ + "agent": { + "my-policy-agent": { + "_id": "my-policy-agent", + "_type": { + "_id": "2.2_Agent", + "collection": true, + "name": "Policy Agents", + }, + "cdssoRootUrl": [], + "description": null, + "status": "Active", + "userpassword": null, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agent/test.agent.json 1`] = ` +{ + "agent": { + "test": { + "_id": "test", + "_type": { + "_id": "RemoteConsentAgent", + "collection": true, + "name": "OAuth2 Remote Consent Service", + }, + "agentgroup": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "remoteConsentRedirectUrl": null, + "remoteConsentRequestEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentRequestEncryptionEnabled": true, + "remoteConsentRequestEncryptionMethod": "A128GCM", + "remoteConsentRequestSigningAlgorithm": "RS256", + "remoteConsentResponseEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentResponseEncryptionMethod": "A128GCM", + "remoteConsentResponseSigningAlg": "RS256", + "requestTimeLimit": 180, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agent/test-java.agent.json 1`] = ` +{ + "agent": { + "test java": { + "_id": "test java", + "_type": { + "_id": "J2EEAgent", + "collection": true, + "name": "J2EE Agents", + }, + "advancedJ2EEAgentConfig": { + "alternativeAgentHostname": null, + "alternativeAgentPort": null, + "alternativeAgentProtocol": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "expiredSessionCacheSize": 500, + "expiredSessionCacheTTL": 20, + "fragmentRelayUri": null, + "idleTimeRefreshWindow": 1, + "jwtCacheSize": 5000, + "jwtCacheTTL": 30, + "missingPostDataPreservationEntryUri": [ + "", + ], + "monitoringToCSV": false, + "policyCachePerUser": 50, + "policyCacheSize": 5000, + "policyClientPollingInterval": 3, + "possibleXssCodeElements": [ + "", + ], + "postDataCacheTtlMin": 5, + "postDataPreservation": false, + "postDataPreserveCacheEntryMaxEntries": 1000, + "postDataPreserveCacheEntryMaxTotalSizeMb": -1, + "postDataPreserveMultipartLimitBytes": 104857600, + "postDataPreserveMultipartParameterLimitBytes": 104857600, + "postDataStickySessionKeyValue": null, + "postDataStickySessionMode": "URL", + "retainPreviousOverrideBehavior": true, + "sessionCacheTTL": 15, + "ssoExchangeCacheSize": 100, + "ssoExchangeCacheTTL": 5, + "xssDetectionRedirectUri": {}, + }, + "amServicesJ2EEAgent": { + "agentAdviceEncode": false, + "amLoginUrl": [], + "authServiceHost": "testurl.com", + "authServicePort": 8080, + "authServiceProtocol": "http", + "authSuccessRedirectUrl": false, + "conditionalLoginUrl": [ + "", + ], + "conditionalLogoutUrl": [ + "", + ], + "customLoginEnabled": false, + "legacyLoginUrlList": [ + "", + ], + "overridePolicyEvaluationRealmEnabled": false, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "policyNotifications": true, + "restrictToRealm": {}, + "strategyWhenAMUnavailable": "EVAL_NER_USE_CACHE_UNTIL_EXPIRED_ELSE_503", + "urlPolicyEnvGetParameters": [ + "", + ], + "urlPolicyEnvJsessionParameters": [ + "", + ], + "urlPolicyEnvPostParameters": [ + "", + ], + }, + "applicationJ2EEAgentConfig": { + "applicationLogoutUris": {}, + "clientIpValidationMode": { + "": "OFF", + }, + "clientIpValidationRange": {}, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "cookieAttributeMultiValueSeparator": "|", + "cookieAttributeUrlEncoded": true, + "headerAttributeDateFormat": "EEE, d MMM yyyy hh:mm:ss z", + "invertNotEnforcedIps": false, + "invertNotEnforcedUris": false, + "logoutEntryUri": {}, + "logoutIntrospection": false, + "logoutRequestParameters": {}, + "notEnforcedFavicon": true, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsCacheEnabled": true, + "notEnforcedIpsCacheSize": 1000, + "notEnforcedRuleCompoundSeparator": "|", + "notEnforcedUris": [ + "", + ], + "notEnforcedUrisCacheEnabled": true, + "notEnforcedUrisCacheSize": 1000, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "resourceAccessDeniedUri": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalJ2EEAgentConfig": { + "agentConfigChangeNotificationsEnabled": true, + "agentgroup": "Test Java Group", + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [ + "agentRootURL=http://testurl.com:8080/", + ], + "configurationReloadInterval": 0, + "customResponseHeader": {}, + "debugLevel": "error", + "debugLogfilePrefix": null, + "debugLogfileRetentionCount": -1, + "debugLogfileRotationMinutes": -1, + "debugLogfileRotationSize": 52428800, + "debugLogfileSuffix": "-yyyy.MM.dd-HH.mm.ss", + "filterMode": { + "": "ALL", + }, + "fqdnCheck": false, + "fqdnDefault": "testurl.com", + "fqdnMapping": {}, + "httpSessionBinding": true, + "jwtName": "am-auth-jwt", + "lbCookieEnabled": false, + "lbCookieName": "amlbcookie", + "localAuditLogRotation": false, + "localAuditLogfileRetentionCount": -1, + "localAuditRotationSize": 52428800, + "loginAttemptLimit": 0, + "loginAttemptLimitCookieName": "amFilterParam", + "preAuthCookieMaxAge": 300, + "preAuthCookieName": "amFilterCDSSORequest", + "recheckAmUnavailabilityInSeconds": 5, + "redirectAttemptLimit": 0, + "redirectAttemptLimitCookieName": "amFilterRDParam", + "repositoryLocation": "centralized", + "secretLabelIdentifier": null, + "status": "Active", + "userAttributeName": "employeenumber", + "userMappingMode": "USER_ID", + "userPrincipalFlag": false, + "userTokenName": "UserToken", + "userpassword": null, + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscJ2EEAgentConfig": { + "agent302RedirectContentType": "application/json", + "agent302RedirectEnabled": true, + "agent302RedirectHttpData": "{redirect:{requestUri:%REQUEST_URI%,requestUrl:%REQUEST_URL%,targetUrl:%TARGET%}}", + "agent302RedirectInvertEnabled": false, + "agent302RedirectNerList": [ + "", + ], + "agent302RedirectStatusCode": 200, + "authFailReasonParameterName": null, + "authFailReasonParameterRemapper": {}, + "authFailReasonUrl": null, + "gotoParameterName": "goto", + "gotoUrl": null, + "ignorePathInfo": false, + "legacyRedirectUri": "/test/sunwLegacySupportURI", + "legacyUserAgentList": [ + "Mozilla/4.7*", + ], + "legacyUserAgentSupport": false, + "localeCountry": "US", + "localeLanguage": "en", + "loginReasonMap": {}, + "loginReasonParameterName": null, + "portCheckEnabled": false, + "portCheckFile": "PortCheckContent.txt", + "portCheckSetting": { + "8080": "http", + }, + "unwantedHttpUrlParams": [ + "", + ], + "unwantedHttpUrlRegexParams": [ + "", + ], + "wantedHttpUrlParams": [ + "", + ], + "wantedHttpUrlRegexParams": [ + "", + ], + }, + "ssoJ2EEAgentConfig": { + "acceptIPDPCookie": false, + "acceptSsoTokenDomainList": [ + "", + ], + "acceptSsoTokenEnabled": false, + "authExchangeCookieName": null, + "authExchangeUri": null, + "cdssoDomainList": [ + "", + ], + "cdssoRedirectUri": "/test/post-authn-redirect", + "cdssoSecureCookies": false, + "cookieResetDomains": {}, + "cookieResetEnabled": false, + "cookieResetNames": [ + "", + ], + "cookieResetPaths": {}, + "encodeCookies": false, + "excludedUserAgentsList": [], + "httpOnly": true, + "setCookieAttributeMap": {}, + "setCookieInternalMap": {}, + }, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agent/test-software-publisher.agent.json 1`] = ` +{ + "agent": { + "test software publisher": { + "_id": "test software publisher", + "_type": { + "_id": "SoftwarePublisher", + "collection": true, + "name": "OAuth2 Software Publisher", + }, + "agentgroup": null, + "issuer": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "softwareStatementSigningAlgorithm": "RS256", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Oauth2-group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Oauth2 group": { + "_id": "Oauth2 group", + "_type": { + "_id": "OAuth2Client", + "collection": true, + "name": "OAuth2 Clients", + }, + "advancedOAuth2ClientConfig": { + "clientUri": [], + "contacts": [], + "customProperties": [], + "descriptions": [], + "grantTypes": [ + "authorization_code", + ], + "isConsentImplied": false, + "javascriptOrigins": [], + "logoUri": [], + "mixUpMitigation": false, + "name": [], + "policyUri": [], + "refreshTokenGracePeriod": 0, + "requestUris": [], + "require_pushed_authorization_requests": false, + "responseTypes": [ + "code", + "token", + "id_token", + "code token", + "token id_token", + "code id_token", + "code token id_token", + "device_code", + "device_code id_token", + ], + "sectorIdentifierUri": null, + "softwareIdentity": null, + "softwareVersion": null, + "subjectType": "public", + "tokenEndpointAuthMethod": "client_secret_basic", + "tokenExchangeAuthLevel": 0, + "tosURI": [], + "updateAccessToken": null, + }, + "coreOAuth2ClientConfig": { + "accessTokenLifetime": 0, + "authorizationCodeLifetime": 0, + "clientName": [], + "clientType": "Confidential", + "defaultScopes": [], + "loopbackInterfaceRedirection": false, + "redirectionUris": [], + "refreshTokenLifetime": 0, + "scopes": [], + "status": "Active", + }, + "coreOpenIDClientConfig": { + "backchannel_logout_session_required": false, + "backchannel_logout_uri": null, + "claims": [], + "clientSessionUri": null, + "defaultAcrValues": [], + "defaultMaxAge": 600, + "defaultMaxAgeEnabled": false, + "jwtTokenLifetime": 0, + "postLogoutRedirectUri": [], + }, + "coreUmaClientConfig": { + "claimsRedirectionUris": [], + }, + "signEncOAuth2ClientConfig": { + "authorizationResponseEncryptionAlgorithm": null, + "authorizationResponseEncryptionMethod": null, + "authorizationResponseSigningAlgorithm": "RS256", + "clientJwtPublicKey": null, + "idTokenEncryptionAlgorithm": "RSA-OAEP-256", + "idTokenEncryptionEnabled": false, + "idTokenEncryptionMethod": "A128CBC-HS256", + "idTokenPublicEncryptionKey": null, + "idTokenSignedResponseAlg": "RS256", + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "mTLSCertificateBoundAccessTokens": false, + "mTLSSubjectDN": null, + "mTLSTrustedCert": null, + "publicKeyLocation": "jwks_uri", + "requestParameterEncryptedAlg": null, + "requestParameterEncryptedEncryptionAlgorithm": "A128CBC-HS256", + "requestParameterSignedAlg": null, + "tokenEndpointAuthSigningAlgorithm": "RS256", + "tokenIntrospectionEncryptedResponseAlg": "RSA-OAEP-256", + "tokenIntrospectionEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "tokenIntrospectionResponseFormat": "JSON", + "tokenIntrospectionSignedResponseAlg": "RS256", + "userinfoEncryptedResponseAlg": null, + "userinfoEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "userinfoResponseFormat": "JSON", + "userinfoSignedResponseAlg": null, + }, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Remote-consent-group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Remote consent group": { + "_id": "Remote consent group", + "_type": { + "_id": "RemoteConsentAgent", + "collection": true, + "name": "OAuth2 Remote Consent Service", + }, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "remoteConsentRedirectUrl": null, + "remoteConsentRequestEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentRequestEncryptionEnabled": true, + "remoteConsentRequestEncryptionMethod": "A128GCM", + "remoteConsentRequestSigningAlgorithm": "RS256", + "remoteConsentResponseEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentResponseEncryptionMethod": "A128GCM", + "remoteConsentResponseSigningAlg": "RS256", + "requestTimeLimit": 180, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Software-publisher-group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Software publisher group": { + "_id": "Software publisher group", + "_type": { + "_id": "SoftwarePublisher", + "collection": true, + "name": "OAuth2 Software Publisher", + }, + "issuer": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "softwareStatementSigningAlgorithm": "RS256", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Test-IG-Group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Test IG Group": { + "_id": "Test IG Group", + "_type": { + "_id": "IdentityGatewayAgent", + "collection": true, + "name": "Identity Gateway Agents", + }, + "igCdssoLoginUrlTemplate": null, + "igCdssoRedirectUrls": [], + "igTokenIntrospection": "None", + "status": "Active", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Test-Java-Group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Test Java Group": { + "_id": "Test Java Group", + "_type": { + "_id": "J2EEAgent", + "collection": true, + "name": "J2EE Agents", + }, + "advancedJ2EEAgentConfig": { + "alternativeAgentHostname": null, + "alternativeAgentPort": null, + "alternativeAgentProtocol": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "expiredSessionCacheSize": 500, + "expiredSessionCacheTTL": 20, + "fragmentRelayUri": null, + "idleTimeRefreshWindow": 1, + "jwtCacheSize": 5000, + "jwtCacheTTL": 30, + "missingPostDataPreservationEntryUri": [ + "", + ], + "monitoringToCSV": false, + "policyCachePerUser": 50, + "policyCacheSize": 5000, + "policyClientPollingInterval": 3, + "possibleXssCodeElements": [ + "", + ], + "postDataCacheTtlMin": 5, + "postDataPreservation": false, + "postDataPreserveCacheEntryMaxEntries": 1000, + "postDataPreserveCacheEntryMaxTotalSizeMb": -1, + "postDataPreserveMultipartLimitBytes": 104857600, + "postDataPreserveMultipartParameterLimitBytes": 104857600, + "postDataStickySessionKeyValue": null, + "postDataStickySessionMode": "URL", + "retainPreviousOverrideBehavior": true, + "sessionCacheTTL": 15, + "ssoExchangeCacheSize": 100, + "ssoExchangeCacheTTL": 5, + "xssDetectionRedirectUri": {}, + }, + "amServicesJ2EEAgent": { + "agentAdviceEncode": false, + "amLoginUrl": [], + "authServiceHost": "testurl.com", + "authServicePort": 8080, + "authServiceProtocol": "http", + "authSuccessRedirectUrl": false, + "conditionalLoginUrl": [ + "", + ], + "conditionalLogoutUrl": [ + "", + ], + "customLoginEnabled": false, + "legacyLoginUrlList": [ + "", + ], + "overridePolicyEvaluationRealmEnabled": false, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "policyNotifications": true, + "restrictToRealm": {}, + "strategyWhenAMUnavailable": "EVAL_NER_USE_CACHE_UNTIL_EXPIRED_ELSE_503", + "urlPolicyEnvGetParameters": [ + "", + ], + "urlPolicyEnvJsessionParameters": [ + "", + ], + "urlPolicyEnvPostParameters": [ + "", + ], + }, + "applicationJ2EEAgentConfig": { + "applicationLogoutUris": {}, + "clientIpValidationMode": { + "": "OFF", + }, + "clientIpValidationRange": {}, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "cookieAttributeMultiValueSeparator": "|", + "cookieAttributeUrlEncoded": true, + "headerAttributeDateFormat": "EEE, d MMM yyyy hh:mm:ss z", + "invertNotEnforcedIps": false, + "invertNotEnforcedUris": false, + "logoutEntryUri": {}, + "logoutIntrospection": false, + "logoutRequestParameters": {}, + "notEnforcedFavicon": true, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsCacheEnabled": true, + "notEnforcedIpsCacheSize": 1000, + "notEnforcedRuleCompoundSeparator": "|", + "notEnforcedUris": [ + "", + ], + "notEnforcedUrisCacheEnabled": true, + "notEnforcedUrisCacheSize": 1000, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "resourceAccessDeniedUri": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalJ2EEAgentConfig": { + "agentConfigChangeNotificationsEnabled": true, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [], + "configurationReloadInterval": 0, + "customResponseHeader": {}, + "debugLevel": "error", + "debugLogfilePrefix": null, + "debugLogfileRetentionCount": -1, + "debugLogfileRotationMinutes": -1, + "debugLogfileRotationSize": 52428800, + "debugLogfileSuffix": "-yyyy.MM.dd-HH.mm.ss", + "filterMode": { + "": "ALL", + }, + "fqdnCheck": false, + "fqdnDefault": null, + "fqdnMapping": {}, + "httpSessionBinding": true, + "jwtName": "am-auth-jwt", + "lbCookieEnabled": false, + "lbCookieName": "amlbcookie", + "localAuditLogRotation": false, + "localAuditLogfileRetentionCount": -1, + "localAuditRotationSize": 52428800, + "loginAttemptLimit": 0, + "loginAttemptLimitCookieName": "amFilterParam", + "preAuthCookieMaxAge": 300, + "preAuthCookieName": "amFilterCDSSORequest", + "recheckAmUnavailabilityInSeconds": 5, + "redirectAttemptLimit": 0, + "redirectAttemptLimitCookieName": "amFilterRDParam", + "status": "Active", + "userAttributeName": "employeenumber", + "userMappingMode": "USER_ID", + "userPrincipalFlag": false, + "userTokenName": "UserToken", + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscJ2EEAgentConfig": { + "agent302RedirectContentType": "application/json", + "agent302RedirectEnabled": true, + "agent302RedirectHttpData": "{redirect:{requestUri:%REQUEST_URI%,requestUrl:%REQUEST_URL%,targetUrl:%TARGET%}}", + "agent302RedirectInvertEnabled": false, + "agent302RedirectNerList": [ + "", + ], + "agent302RedirectStatusCode": 200, + "authFailReasonParameterName": null, + "authFailReasonParameterRemapper": {}, + "authFailReasonUrl": null, + "gotoParameterName": "goto", + "gotoUrl": null, + "ignorePathInfo": false, + "legacyRedirectUri": null, + "legacyUserAgentList": [ + "Mozilla/4.7*", + ], + "legacyUserAgentSupport": false, + "localeCountry": "US", + "localeLanguage": "en", + "loginReasonMap": {}, + "loginReasonParameterName": null, + "portCheckEnabled": false, + "portCheckFile": "PortCheckContent.txt", + "portCheckSetting": {}, + "unwantedHttpUrlParams": [ + "", + ], + "unwantedHttpUrlRegexParams": [ + "", + ], + "wantedHttpUrlParams": [ + "", + ], + "wantedHttpUrlRegexParams": [ + "", + ], + }, + "ssoJ2EEAgentConfig": { + "acceptIPDPCookie": false, + "acceptSsoTokenDomainList": [ + "", + ], + "acceptSsoTokenEnabled": false, + "authExchangeCookieName": null, + "authExchangeUri": null, + "cdssoDomainList": [ + "", + ], + "cdssoRedirectUri": null, + "cdssoSecureCookies": false, + "cookieResetDomains": {}, + "cookieResetEnabled": false, + "cookieResetNames": [ + "", + ], + "cookieResetPaths": {}, + "encodeCookies": false, + "excludedUserAgentsList": [], + "httpOnly": true, + "setCookieAttributeMap": {}, + "setCookieInternalMap": {}, + }, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Test-SOAP-STS-group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Test SOAP STS group": { + "_id": "Test SOAP STS group", + "_type": { + "_id": "SoapSTSAgent", + "collection": true, + "name": "SOAP STS Agents", + }, + "publishServicePollInterval": 300, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Test-Web-Group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Test Web Group": { + "_id": "Test Web Group", + "_type": { + "_id": "WebAgent", + "collection": true, + "name": "Web Agents", + }, + "advancedWebAgentConfig": { + "apacheAuthDirectives": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "fragmentRedirectEnabled": false, + "hostnameToIpAddress": [], + "logonAndImpersonation": false, + "overrideRequestHost": false, + "overrideRequestPort": false, + "overrideRequestProtocol": false, + "pdpJavascriptRepost": false, + "pdpSkipPostUrl": [ + "", + ], + "pdpStickySessionCookieName": null, + "pdpStickySessionMode": "OFF", + "pdpStickySessionValue": null, + "postDataCachePeriod": 10, + "postDataPreservation": false, + "replayPasswordKey": null, + "retainSessionCache": false, + "showPasswordInHeader": false, + }, + "amServicesWebAgent": { + "amLoginUrl": [], + "amLogoutUrl": [ + "http://testurl.com:8080/UI/Logout", + ], + "applicationLogoutUrls": [ + "", + ], + "conditionalLoginUrl": [ + "", + ], + "customLoginMode": 0, + "enableLogoutRegex": false, + "fetchPoliciesFromRootResource": false, + "invalidateLogoutSession": true, + "logoutRedirectDisabled": false, + "logoutRedirectUrl": null, + "logoutResetCookies": [ + "", + ], + "logoutUrlRegex": null, + "policyCachePollingInterval": 3, + "policyClockSkew": 0, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "publicAmUrl": null, + "regexConditionalLoginPattern": [ + "", + ], + "regexConditionalLoginUrl": [ + "", + ], + "retrieveClientHostname": false, + "ssoCachePollingInterval": 3, + "userIdParameter": "UserToken", + "userIdParameterType": "session", + }, + "applicationWebAgentConfig": { + "attributeMultiValueSeparator": "|", + "clientIpValidation": false, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "fetchAttributesForNotEnforcedUrls": false, + "ignorePathInfoForNotEnforcedUrls": true, + "invertNotEnforcedUrls": false, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsList": [ + "", + ], + "notEnforcedIpsRegex": false, + "notEnforcedUrls": [ + "", + ], + "notEnforcedUrlsRegex": false, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalWebAgentConfig": { + "accessDeniedUrl": null, + "agentConfigChangeNotificationsEnabled": true, + "agentDebugLevel": "Error", + "agentUriPrefix": null, + "amLbCookieEnable": false, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [], + "configurationPollingInterval": 60, + "disableJwtAudit": false, + "fqdnCheck": false, + "fqdnDefault": null, + "fqdnMapping": {}, + "jwtAuditWhitelist": null, + "jwtName": "am-auth-jwt", + "notificationsEnabled": true, + "resetIdleTime": false, + "ssoOnlyMode": false, + "status": "Active", + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscWebAgentConfig": { + "addCacheControlHeader": false, + "anonymousUserEnabled": false, + "anonymousUserId": "anonymous", + "caseInsensitiveUrlComparison": true, + "compositeAdviceEncode": false, + "compositeAdviceRedirect": false, + "encodeSpecialCharsInCookies": false, + "encodeUrlSpecialCharacters": false, + "gotoParameterName": "goto", + "headerJsonResponse": {}, + "ignorePathInfo": false, + "invalidUrlRegex": null, + "invertUrlJsonResponse": false, + "mineEncodeHeader": 0, + "profileAttributesCookieMaxAge": 300, + "profileAttributesCookiePrefix": "HTTP_", + "statusCodeJsonResponse": 202, + "urlJsonResponse": [ + "", + ], + }, + "ssoWebAgentConfig": { + "acceptSsoToken": false, + "cdssoCookieDomain": [ + "", + ], + "cdssoRedirectUri": "agent/cdsso-oauth2", + "cookieName": "iPlanetDirectoryPro", + "cookieResetEnabled": false, + "cookieResetList": [ + "", + ], + "cookieResetOnRedirect": false, + "httpOnly": true, + "multivaluePreAuthnCookie": false, + "persistentJwtCookie": false, + "sameSite": null, + "secureCookies": false, + }, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/Trusted-JWT-group.agentGroup.json 1`] = ` +{ + "agentGroup": { + "Trusted JWT group": { + "_id": "Trusted JWT group", + "_type": { + "_id": "TrustedJwtIssuer", + "collection": true, + "name": "OAuth2 Trusted JWT Issuer", + }, + "allowedSubjects": [], + "consentedScopesClaim": "scope", + "issuer": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "resourceOwnerIdentityClaim": "sub", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/agentGroup/testwebgroup.agentGroup.json 1`] = ` +{ + "agentGroup": { + "testwebgroup": { + "_id": "testwebgroup", + "_type": { + "_id": "WebAgent", + "collection": true, + "name": "Web Agents", + }, + "advancedWebAgentConfig": { + "apacheAuthDirectives": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "fragmentRedirectEnabled": false, + "hostnameToIpAddress": [], + "logonAndImpersonation": false, + "overrideRequestHost": false, + "overrideRequestPort": false, + "overrideRequestProtocol": false, + "pdpJavascriptRepost": false, + "pdpSkipPostUrl": [ + "", + ], + "pdpStickySessionCookieName": null, + "pdpStickySessionMode": "OFF", + "pdpStickySessionValue": null, + "postDataCachePeriod": 10, + "postDataPreservation": false, + "replayPasswordKey": null, + "retainSessionCache": false, + "showPasswordInHeader": false, + }, + "amServicesWebAgent": { + "amLoginUrl": [], + "amLogoutUrl": [ + "http://test.com:8080/cool/UI/Logout", + ], + "applicationLogoutUrls": [ + "", + ], + "conditionalLoginUrl": [ + "", + ], + "customLoginMode": 0, + "enableLogoutRegex": false, + "fetchPoliciesFromRootResource": false, + "invalidateLogoutSession": true, + "logoutRedirectDisabled": false, + "logoutRedirectUrl": null, + "logoutResetCookies": [ + "", + ], + "logoutUrlRegex": null, + "policyCachePollingInterval": 3, + "policyClockSkew": 0, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "publicAmUrl": null, + "regexConditionalLoginPattern": [ + "", + ], + "regexConditionalLoginUrl": [ + "", + ], + "retrieveClientHostname": false, + "ssoCachePollingInterval": 3, + "userIdParameter": "UserToken", + "userIdParameterType": "session", + }, + "applicationWebAgentConfig": { + "attributeMultiValueSeparator": "|", + "clientIpValidation": false, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "fetchAttributesForNotEnforcedUrls": false, + "ignorePathInfoForNotEnforcedUrls": true, + "invertNotEnforcedUrls": false, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsList": [ + "", + ], + "notEnforcedIpsRegex": false, + "notEnforcedUrls": [ + "", + ], + "notEnforcedUrlsRegex": false, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalWebAgentConfig": { + "accessDeniedUrl": null, + "agentConfigChangeNotificationsEnabled": true, + "agentDebugLevel": "Error", + "agentUriPrefix": null, + "amLbCookieEnable": false, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [], + "configurationPollingInterval": 60, + "disableJwtAudit": false, + "fqdnCheck": false, + "fqdnDefault": null, + "fqdnMapping": {}, + "jwtAuditWhitelist": null, + "jwtName": "am-auth-jwt", + "notificationsEnabled": true, + "resetIdleTime": false, + "ssoOnlyMode": false, + "status": "Active", + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscWebAgentConfig": { + "addCacheControlHeader": false, + "anonymousUserEnabled": false, + "anonymousUserId": "anonymous", + "caseInsensitiveUrlComparison": true, + "compositeAdviceEncode": false, + "compositeAdviceRedirect": false, + "encodeSpecialCharsInCookies": false, + "encodeUrlSpecialCharacters": false, + "gotoParameterName": "goto", + "headerJsonResponse": {}, + "ignorePathInfo": false, + "invalidUrlRegex": null, + "invertUrlJsonResponse": false, + "mineEncodeHeader": 0, + "profileAttributesCookieMaxAge": 300, + "profileAttributesCookiePrefix": "HTTP_", + "statusCodeJsonResponse": 202, + "urlJsonResponse": [ + "", + ], + }, + "ssoWebAgentConfig": { + "acceptSsoToken": false, + "cdssoCookieDomain": [ + "", + ], + "cdssoRedirectUri": "agent/cdsso-oauth2", + "cookieName": "iPlanetDirectoryPro", + "cookieResetEnabled": false, + "cookieResetList": [ + "", + ], + "cookieResetOnRedirect": false, + "httpOnly": true, + "multivaluePreAuthnCookie": false, + "persistentJwtCookie": false, + "sameSite": null, + "secureCookies": false, + }, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/authentication/root.authentication.settings.json 1`] = ` +{ + "authentication": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Core", + }, + "accountlockout": { + "lockoutDuration": 0, + "lockoutDurationMultiplier": 1, + "lockoutWarnUserCount": 0, + "loginFailureCount": 5, + "loginFailureDuration": 300, + "loginFailureLockoutMode": false, + "storeInvalidAttemptsInDataStore": true, + }, + "core": { + "adminAuthModule": "ldapService", + "orgConfig": "ldapService", + }, + "general": { + "defaultAuthLevel": 0, + "identityType": [ + "agent", + "user", + ], + "locale": "en_US", + "statelessSessionsEnabled": false, + "twoFactorRequired": false, + "userStatusCallbackPlugins": [], + }, + "postauthprocess": { + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [ + "/am/console", + ], + "userAttributeSessionMapping": [], + "usernameGeneratorClass": "com.sun.identity.authentication.spi.DefaultUserIDGenerator", + "usernameGeneratorEnabled": true, + }, + "security": { + "addClearSiteDataHeader": true, + "moduleBasedAuthEnabled": true, + "sharedSecret": null, + "zeroPageLoginAllowedWithoutReferrer": true, + "zeroPageLoginEnabled": false, + "zeroPageLoginReferrerWhiteList": [], + }, + "trees": { + "authenticationSessionsMaxDuration": 5, + "authenticationSessionsStateManagement": "JWT", + "authenticationSessionsWhitelist": false, + "authenticationTreeCookieHttpOnly": true, + "suspendedAuthenticationTimeout": 5, + }, + "userprofile": { + "aliasAttributeName": [ + "uid", + ], + "defaultRole": [], + "dynamicProfileCreation": "false", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/authenticationChains/amsterService.authenticationChains.json 1`] = ` +{ + "authenticationChains": { + "amsterService": { + "_id": "amsterService", + "_type": { + "_id": "EMPTY", + "collection": true, + "name": "Authentication Configuration", + }, + "authChainConfiguration": [ + { + "criteria": "REQUIRED", + "module": "Amster", + "options": {}, + }, + ], + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [], + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/authenticationChains/ldapService.authenticationChains.json 1`] = ` +{ + "authenticationChains": { + "ldapService": { + "_id": "ldapService", + "_type": { + "_id": "EMPTY", + "collection": true, + "name": "Authentication Configuration", + }, + "authChainConfiguration": [ + { + "criteria": "REQUIRED", + "module": "DataStore", + "options": {}, + }, + ], + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [], + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/cot/Test-COT.cot.saml.json 1`] = ` +{ + "meta": Any, + "saml": { + "cot": { + "Test COT": { + "_id": "Test COT", + "_type": { + "_id": "circlesoftrust", + "collection": true, + "name": "Circle of Trust", + }, + "status": "active", + "trustedProviders": [], + }, + }, + "hosted": {}, + "metadata": {}, + "remote": {}, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Amazon.idp.json 1`] = ` +{ + "idp": { + "Amazon": { + "_id": "Amazon", + "_type": { + "_id": "amazonConfig", + "collection": true, + "name": "Client configuration for Amazon.", + }, + "authenticationIdKey": "user_id", + "authorizationEndpoint": "https://www.amazon.com/ap/oa", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "profile", + ], + "tokenEndpoint": "https://api.amazon.com/auth/o2/token", + "transform": "6b3cfd48-62d3-48ff-a96f-fe8f3a22ab30", + "uiConfig": { + "buttonClass": "fa-amazon", + "buttonCustomStyle": "background: linear-gradient(to bottom, #f7e09f 15%,#f5c646 85%);color: black;border-color: #b48c24;", + "buttonCustomStyleHover": "background: linear-gradient(to bottom, #f6c94e 15%,#f6c94e 85%);color: black;border-color: #b48c24;", + "buttonDisplayName": "Amazon", + "buttonImage": "", + "iconBackground": "#f0c14b", + "iconClass": "fa-amazon", + "iconFontColor": "black", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://api.amazon.com/user/profile", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Apple.idp.json 1`] = ` +{ + "idp": { + "Apple": { + "_id": "Apple", + "_type": { + "_id": "appleConfig", + "collection": true, + "name": "Client configuration for Apple.", + }, + "acrValues": [], + "authenticationIdKey": "sub", + "authorizationEndpoint": "https://appleid.apple.com/auth/authorize", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enableNativeNonce": true, + "enabled": true, + "encryptJwtRequestParameter": false, + "encryptedIdTokens": false, + "issuer": "https://appleid.apple.com", + "issuerComparisonCheckType": "EXACT", + "jwksUriEndpoint": "https://appleid.apple.com/auth/keys", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtRequestParameterOption": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "requestNativeAppForUserInfo": false, + "responseMode": "FORM_POST", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "name", + "email", + ], + "tokenEndpoint": "https://appleid.apple.com/auth/token", + "transform": "484e6246-dbc6-4288-97e6-54e55431402e", + "uiConfig": { + "buttonClass": "", + "buttonCustomStyle": "background-color: #000000; color: #ffffff; border-color: #000000;", + "buttonCustomStyleHover": "background-color: #000000; color: #ffffff; border-color: #000000;", + "buttonDisplayName": "Apple", + "buttonImage": "images/apple-logo.png", + "iconBackground": "#000000", + "iconClass": "fa-apple", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoResponseType": "JSON", + "wellKnownEndpoint": "https://appleid.apple.com/.well-known/openid-configuration", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Facebook.idp.json 1`] = ` +{ + "idp": { + "Facebook": { + "_id": "Facebook", + "_type": { + "_id": "facebookConfig", + "collection": true, + "name": "Client configuration for Facebook.", + }, + "authenticationIdKey": "id", + "authorizationEndpoint": "https://www.facebook.com/dialog/oauth", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "introspectEndpoint": "https://graph.facebook.com/debug_token", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "email", + "user_birthday", + ], + "tokenEndpoint": "https://graph.facebook.com/v2.7/oauth/access_token", + "transform": "bae1d54a-e97d-4997-aa5d-c027f21af82c", + "uiConfig": { + "buttonClass": "fa-facebook-official", + "buttonCustomStyle": "background-color: #3b5998;border-color: #3b5998; color: white;", + "buttonCustomStyleHover": "background-color: #334b7d;border-color: #334b7d; color: white;", + "buttonDisplayName": "Facebook", + "buttonImage": "", + "iconBackground": "#3b5998", + "iconClass": "fa-facebook", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://graph.facebook.com/me?fields=id,name,picture,email,first_name,last_name,locale", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Google.idp.json 1`] = ` +{ + "idp": { + "Google": { + "_id": "Google", + "_type": { + "_id": "googleConfig", + "collection": true, + "name": "Client configuration for Google.", + }, + "acrValues": [], + "authenticationIdKey": "sub", + "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enableNativeNonce": true, + "enabled": true, + "encryptJwtRequestParameter": false, + "encryptedIdTokens": false, + "issuer": "https://accounts.google.com", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtRequestParameterOption": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "openid", + "profile", + "email", + ], + "tokenEndpoint": "https://www.googleapis.com/oauth2/v4/token", + "transform": "58d29080-4563-480b-89bb-1e7719776a21", + "uiConfig": { + "buttonClass": "", + "buttonCustomStyle": "background-color: #fff; color: #757575; border-color: #ddd;", + "buttonCustomStyleHover": "color: #6d6d6d; background-color: #eee; border-color: #ccc;", + "buttonDisplayName": "Google", + "buttonImage": "images/g-logo.png", + "iconBackground": "#4184f3", + "iconClass": "fa-google", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://www.googleapis.com/oauth2/v3/userinfo", + "userInfoResponseType": "JSON", + "wellKnownEndpoint": "https://accounts.google.com/.well-known/openid-configuration", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Google-Test.idp.json 1`] = ` +{ + "idp": { + "Google Test": { + "_id": "Google Test", + "_type": { + "_id": "googleConfig", + "collection": true, + "name": "Client configuration for Google.", + }, + "acrValues": [], + "authenticationIdKey": "sub", + "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "test", + "enableNativeNonce": true, + "enabled": true, + "encryptJwtRequestParameter": false, + "encryptedIdTokens": false, + "issuer": "https://accounts.google.com", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtRequestParameterOption": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "https://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "openid", + "profile", + "email", + ], + "tokenEndpoint": "https://www.googleapis.com/oauth2/v4/token", + "transform": "58d29080-4563-480b-89bb-1e7719776a21", + "uiConfig": { + "buttonClass": "", + "buttonCustomStyle": "background-color: #fff; color: #757575; border-color: #ddd;", + "buttonCustomStyleHover": "color: #6d6d6d; background-color: #eee; border-color: #ccc;", + "buttonDisplayName": "Google", + "buttonImage": "images/g-logo.png", + "iconBackground": "#4184f3", + "iconClass": "fa-google", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://www.googleapis.com/oauth2/v3/userinfo", + "userInfoResponseType": "JSON", + "wellKnownEndpoint": "https://accounts.google.com/.well-known/openid-configuration", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Instagram.idp.json 1`] = ` +{ + "idp": { + "Instagram": { + "_id": "Instagram", + "_type": { + "_id": "instagramConfig", + "collection": true, + "name": "Client configuration for Instagram.", + }, + "authenticationIdKey": "id", + "authorizationEndpoint": "https://api.instagram.com/oauth/authorize/", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "introspectEndpoint": "https://graph.instagram.com/debug_token", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "user_profile", + ], + "tokenEndpoint": "https://api.instagram.com/oauth/access_token", + "transform": "1244e639-4a31-401d-ab61-d75133d8dc9e", + "uiConfig": { + "buttonClass": "fa-instagram", + "buttonCustomStyle": "background-color: #3f729b; border-color: #3f729b;color: white;", + "buttonCustomStyleHover": "background-color: #305777; border-color: #305777;color: white;", + "buttonDisplayName": "Instagram", + "buttonImage": "", + "iconBackground": "#3f729b", + "iconClass": "fa-instagram", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://graph.instagram.com/me?fields=id,username", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/LinkedIn.idp.json 1`] = ` +{ + "idp": { + "LinkedIn": { + "_id": "LinkedIn", + "_type": { + "_id": "linkedInConfig", + "collection": true, + "name": "Client configuration for LinkedIn.", + }, + "authenticationIdKey": "id", + "authorizationEndpoint": "https://www.linkedin.com/oauth/v2/authorization", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "emailAddressEndpoint": "https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))", + "enabled": true, + "introspectEndpoint": "https://www.linkedin.com/oauth/v2/introspectToken", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "r_liteprofile", + "r_emailaddress", + ], + "tokenEndpoint": "https://www.linkedin.com/oauth/v2/accessToken", + "transform": "8862ca8f-7770-4af5-a888-ac0df0947f36", + "uiConfig": { + "buttonClass": "fa-linkedin", + "buttonCustomStyle": "background-color:#0077b5;border-color:#0077b5;color:white;", + "buttonCustomStyleHover": "background-color:#006ea9; border-color:#006ea9;color:white;", + "buttonDisplayName": "LinkedIn", + "buttonImage": "", + "iconBackground": "#0077b5", + "iconClass": "fa-linkedin", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture)", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Microsoft.idp.json 1`] = ` +{ + "idp": { + "Microsoft": { + "_id": "Microsoft", + "_type": { + "_id": "microsoftConfig", + "collection": true, + "name": "Client configuration for Microsoft.", + }, + "authenticationIdKey": "id", + "authorizationEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "User.Read", + ], + "tokenEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/token", + "transform": "73cecbfc-dad0-4395-be6a-6858ee3a80e5", + "uiConfig": { + "buttonClass": "", + "buttonCustomStyle": "background-color: #fff; border-color: #8b8b8b; color: #8b8b8b;", + "buttonCustomStyleHover": "background-color: #fff; border-color: #8b8b8b; color: #8b8b8b;", + "buttonDisplayName": "Microsoft", + "buttonImage": "images/microsoft-logo.png", + "iconBackground": "#0078d7", + "iconClass": "fa-windows", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://graph.microsoft.com/v1.0/me", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/OAuth2Basic.idp.json 1`] = ` +{ + "idp": { + "OAuth2Basic": { + "_id": "OAuth2Basic", + "_type": { + "_id": "oauth2Config", + "collection": true, + "name": "Client configuration for providers that implement the OAuth2 specification.", + }, + "authenticationIdKey": "authid", + "authorizationEndpoint": "http://testurl.com/auth", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "id", + ], + "tokenEndpoint": "http://testurl.com/token", + "transform": "1244e639-4a31-401d-ab61-d75133d8dc9e", + "uiConfig": {}, + "useCustomTrustStore": false, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/OAuth2Test.idp.json 1`] = ` +{ + "idp": { + "OAuth2Test": { + "_id": "OAuth2Test", + "_type": { + "_id": "oauth2Config", + "collection": true, + "name": "Client configuration for providers that implement the OAuth2 specification.", + }, + "authenticationIdKey": "authid", + "authorizationEndpoint": "http://testurl.com/auth", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "clientSecret": null, + "clientSecretLabelIdentifier": "labelid", + "enabled": true, + "introspectEndpoint": "http://testurl.com/introspect", + "issuerComparisonCheckType": "REGEX", + "jwksUriEndpoint": "http://testurl.com/jwk", + "jwtEncryptionAlgorithm": "ECDH-ES", + "jwtEncryptionMethod": "AES_128_CBC_HMAC_SHA_256", + "jwtSigningAlgorithm": "HS256", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectAfterFormPostURI": "http://testurl.com/after", + "redirectURI": "http://testurl.com", + "responseMode": "FORM_POST", + "revocationCheckOptions": [ + "ONLY_END_ENTITY", + "NO_FALLBACK", + ], + "scopeDelimiter": " ", + "scopes": [ + "id", + ], + "tokenEndpoint": "http://testurl.com/token", + "transform": "1244e639-4a31-401d-ab61-d75133d8dc9e", + "uiConfig": { + "prop1": "val1", + "prop2": "val2", + }, + "useCustomTrustStore": true, + "userInfoEndpoint": "http://testurl.com/user", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/OIDCTest.idp.json 1`] = ` +{ + "idp": { + "OIDCTest": { + "_id": "OIDCTest", + "_type": { + "_id": "oidcConfig", + "collection": true, + "name": "Client configuration for providers that implement the OpenID Connect specification.", + }, + "acrValues": [ + "acr", + ], + "authenticationIdKey": "authid", + "authorizationEndpoint": "http://testurl.com/auth", + "claims": "{ + "userinfo": + { + "given_name": {"essential": true}, + "nickname": null, + "email": {"essential": true}, + "email_verified": {"essential": true}, + "picture": null, + "http://example.info/claims/groups": null + }, + "id_token": + { + "auth_time": {"essential": true}, + "acr": {"values": ["urn:mace:incommon:iap:silver"] } + } + }", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "clientSecret": null, + "clientSecretLabelIdentifier": "labelid", + "enableNativeNonce": true, + "enabled": true, + "encryptJwtRequestParameter": true, + "encryptedIdTokens": true, + "introspectEndpoint": "http://testurl.com/instrospect", + "issuer": "testurl", + "issuerComparisonCheckType": "REGEX", + "jwksUriEndpoint": "http://testurl.com/jwk", + "jwtEncryptionAlgorithm": "RSA-OAEP", + "jwtEncryptionMethod": "AES_128_GCM", + "jwtRequestParameterOption": "REFERENCE", + "jwtSigningAlgorithm": "RS256", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectAfterFormPostURI": "http://testurl.com/after", + "redirectURI": "http://testurl.com", + "requestObjectAudience": "audience", + "responseMode": "FORM_POST", + "revocationCheckOptions": [ + "DISABLE_REVOCATION_CHECKING", + "SOFT_FAIL", + ], + "scopeDelimiter": " ", + "scopes": [ + "id", + ], + "tokenEndpoint": "http://testurl.com/token", + "transform": "1244e639-4a31-401d-ab61-d75133d8dc9e", + "uiConfig": { + "prop1": "val1", + "prop2": "val2", + }, + "useCustomTrustStore": true, + "userInfoEndpoint": "http://testurl.com/user", + "userInfoResponseType": "SIGNED_JWT", + "wellKnownEndpoint": "http://testurl.com/.well-known", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Salesforce.idp.json 1`] = ` +{ + "idp": { + "Salesforce": { + "_id": "Salesforce", + "_type": { + "_id": "salesforceConfig", + "collection": true, + "name": "Client configuration for Salesforce.", + }, + "authenticationIdKey": "user_id", + "authorizationEndpoint": "https://login.salesforce.com/services/oauth2/authorize", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "introspectEndpoint": "https://login.salesforce.com/services/oauth2/introspect", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "id", + "api", + "web", + ], + "tokenEndpoint": "https://login.salesforce.com/services/oauth2/token", + "transform": "312e951f-70c5-49d2-a9ae-93aef909d5df", + "uiConfig": { + "buttonClass": "fa-cloud", + "buttonCustomStyle": "background-color: #21a0df; border-color: #21a0df; color: white;", + "buttonCustomStyleHover": "background-color: #21a0df; border-color: #21a0df; color: white;", + "buttonDisplayName": "Salesforce", + "buttonImage": "", + "iconBackground": "#21a0df", + "iconClass": "fa-cloud", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://login.salesforce.com/services/oauth2/userinfo", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Twitter.idp.json 1`] = ` +{ + "idp": { + "Twitter": { + "_id": "Twitter", + "_type": { + "_id": "twitterConfig", + "collection": true, + "name": "Client configuration for Twitter.", + }, + "authenticationIdKey": "id_str", + "authorizationEndpoint": "https://api.twitter.com/oauth/authenticate", + "clientId": "clientid", + "clientSecret": null, + "enabled": true, + "issuerComparisonCheckType": "EXACT", + "redirectURI": "http://testurl.com", + "requestTokenEndpoint": "https://api.twitter.com/oauth/request_token", + "tokenEndpoint": "https://api.twitter.com/oauth/access_token", + "transform": "8e298710-b55e-4085-a464-88a375a4004b", + "uiConfig": { + "buttonClass": "fa-twitter", + "buttonCustomStyle": "background-color: #00b6e9; border-color: #00b6e9; color: #fff;", + "buttonCustomStyleHover": "background-color: #01abda; border-color: #01abda; color: #fff;", + "buttonDisplayName": "Twitter", + "buttonImage": "", + "iconBackground": "#00b6e9", + "iconClass": "fa-twitter", + "iconFontColor": "white", + }, + "userInfoEndpoint": "https://api.twitter.com/1.1/account/verify_credentials.json", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Vkontakte.idp.json 1`] = ` +{ + "idp": { + "Vkontakte": { + "_id": "Vkontakte", + "_type": { + "_id": "vkConfig", + "collection": true, + "name": "Client configuration for Vkontakte.", + }, + "apiVersion": "5.73", + "authenticationIdKey": "id", + "authorizationEndpoint": "https://oauth.vk.com/authorize", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "email", + ], + "tokenEndpoint": "https://oauth.vk.com/access_token", + "transform": "403cf226-6051-4368-8b72-9ba14f9a5140", + "uiConfig": { + "buttonClass": "fa-vk", + "buttonCustomStyle": "background-color: #4c75a3; border-color: #4c75a3;color: white;", + "buttonCustomStyleHover": "background-color: #43658c; border-color: #43658c;color: white;", + "buttonDisplayName": "VK", + "buttonImage": "", + "iconBackground": "#4c75a3", + "iconClass": "fa-vk", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://api.vk.com/method/users.get?fields=photo_50", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/WeChat.idp.json 1`] = ` +{ + "idp": { + "WeChat": { + "_id": "WeChat", + "_type": { + "_id": "weChatConfig", + "collection": true, + "name": "Client configuration for WeChat.", + }, + "authenticationIdKey": "openid", + "authorizationEndpoint": "https://open.weixin.qq.com/connect/qrconnect", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "refreshTokenEndpoint": "https://api.wechat.com/sns/oauth2/refresh_token", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "snsapi_login", + ], + "tokenEndpoint": "https://api.wechat.com/sns/oauth2/access_token", + "transform": "472534ec-a25f-468d-a606-3fb1935190df", + "uiConfig": { + "buttonClass": "fa-weixin", + "buttonCustomStyle": "background-color: #09b507; border-color: #09b507;color: white;", + "buttonCustomStyleHover": "background-color: #09a007; border-color: #09a007;color: white;", + "buttonDisplayName": "WeChat", + "buttonImage": "", + "iconBackground": "#09b507", + "iconClass": "fa-weixin", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://api.wechat.com/sns/userinfo", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Wordpress.idp.json 1`] = ` +{ + "idp": { + "Wordpress": { + "_id": "Wordpress", + "_type": { + "_id": "wordpressConfig", + "collection": true, + "name": "Client configuration for Wordpress.", + }, + "authenticationIdKey": "username", + "authorizationEndpoint": "https://public-api.wordpress.com/oauth2/authorize", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enabled": true, + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "auth", + ], + "tokenEndpoint": "https://public-api.wordpress.com/oauth2/token", + "transform": "91d197de-5916-4dca-83b5-9a4df26e7159", + "uiConfig": { + "buttonClass": "fa-wordpress", + "buttonCustomStyle": "background-color: #0095cc; border-color: #0095cc; color:white;", + "buttonCustomStyleHover": "background-color: #0095cc; border-color: #0095cc; color:white;", + "buttonDisplayName": "WordPress", + "buttonImage": "", + "iconBackground": "#0095cc", + "iconClass": "fa-wordpress", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://public-api.wordpress.com/rest/v1.1/me/", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/Yahoo.idp.json 1`] = ` +{ + "idp": { + "Yahoo": { + "_id": "Yahoo", + "_type": { + "_id": "yahooConfig", + "collection": true, + "name": "Client configuration for Yahoo.", + }, + "acrValues": [], + "authenticationIdKey": "sub", + "authorizationEndpoint": "https://api.login.yahoo.com/oauth2/request_auth", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "clientid", + "enableNativeNonce": true, + "enabled": true, + "encryptJwtRequestParameter": false, + "encryptedIdTokens": false, + "issuer": "https://api.login.yahoo.com", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtRequestParameterOption": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "openid", + "sdpp-w", + ], + "tokenEndpoint": "https://api.login.yahoo.com/oauth2/get_token", + "transform": "424da748-82cc-4b54-be6f-82bd64d82a74", + "uiConfig": { + "buttonClass": "fa-yahoo", + "buttonCustomStyle": "background-color: #7B0099; border-color: #7B0099; color:white;", + "buttonCustomStyleHover": "background-color: #7B0099; border-color: #7B0099; color:white;", + "buttonDisplayName": "Yahoo", + "buttonImage": "", + "iconBackground": "#7B0099", + "iconClass": "fa-yahoo", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoResponseType": "JSON", + "wellKnownEndpoint": "https://api.login.yahoo.com/.well-known/openid-configuration", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/idp/itsme.idp.json 1`] = ` +{ + "idp": { + "itsme": { + "_id": "itsme", + "_type": { + "_id": "itsmeConfig", + "collection": true, + "name": "Client configuration for itsme.", + }, + "acrValues": [], + "authenticationIdKey": "sub", + "authorizationEndpoint": "https://idp.prd.itsme.services/v2/authorization", + "clientAuthenticationMethod": "ENCRYPTED_PRIVATE_KEY_JWT", + "clientId": "itsme", + "enableNativeNonce": true, + "enabled": true, + "encryptJwtRequestParameter": true, + "encryptedIdTokens": true, + "issuer": "https://idp.prd.itsme.services/v2", + "issuerComparisonCheckType": "EXACT", + "jwksUriEndpoint": "https://idp.prd.itsme.services/v2/jwkSet", + "jwtEncryptionAlgorithm": "RSA-OAEP", + "jwtEncryptionMethod": "AES_128_CBC_HMAC_SHA_256", + "jwtRequestParameterOption": "NONE", + "jwtSigningAlgorithm": "RS256", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "http://testurl.com", + "requestObjectAudience": "https://idp.prd.itsme.services/v2/authorization", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "openid", + "profile", + "email", + ], + "tokenEndpoint": "https://idp.prd.itsme.services/v2/token", + "transform": "3d97c436-42c0-4dd0-a571-ea6f34f752b3", + "uiConfig": { + "buttonClass": "", + "buttonCustomStyle": "background-color: #fff; color: #757575; border-color: #ddd;", + "buttonCustomStyleHover": "color: #6d6d6d; background-color: #eee; border-color: #ccc;", + "buttonDisplayName": "itsme", + "buttonImage": "images/itsme_logo_primary.png", + "iconBackground": "#4184f3", + "iconClass": "fa-itsme", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://idp.prd.itsme.services/v2/userinfo", + "userInfoResponseType": "SIGNED_THEN_ENCRYPTED_JWT", + "wellKnownEndpoint": "https://idp.prd.itsme.services/v2/.well-known/openid-configuration", + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/Agent.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "Agent": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "a87ff679-a2f3-371d-9181-a67b7542122c": { + "_id": "a87ff679-a2f3-371d-9181-a67b7542122c", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "AgentDataStoreDecisionNode", + "collection": true, + "name": "Agent Data Store Decision", + }, + }, + "e4da3b7f-bbce-3345-9777-2b0674a318d5": { + "_id": "e4da3b7f-bbce-3345-9777-2b0674a318d5", + "_outcomes": [ + { + "displayName": "Has Credentials", + "id": "true", + }, + { + "displayName": "No Credentials", + "id": "false", + }, + ], + "_type": { + "_id": "ZeroPageLoginNode", + "collection": true, + "name": "Zero Page Login Collector", + }, + "allowWithoutReferer": true, + "passwordHeader": "X-OpenAM-Password", + "referrerWhiteList": [], + "usernameHeader": "X-OpenAM-Username", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "Agent", + "description": "null", + "enabled": true, + "entryNodeId": "e4da3b7f-bbce-3345-9777-2b0674a318d5", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "a87ff679-a2f3-371d-9181-a67b7542122c": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Agent Data Store Decision", + "nodeType": "AgentDataStoreDecisionNode", + "x": 0, + "y": 0, + }, + "e4da3b7f-bbce-3345-9777-2b0674a318d5": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "a87ff679-a2f3-371d-9181-a67b7542122c", + }, + "displayName": "Zero Page Login Collector", + "nodeType": "ZeroPageLoginNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/Example.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "Example": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "c4ca4238-a0b9-3382-8dcc-509a6f75849b": { + "_id": "c4ca4238-a0b9-3382-8dcc-509a6f75849b", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PasswordCollectorNode", + "collection": true, + "name": "Password Collector", + }, + }, + "c81e728d-9d4c-3f63-af06-7f89cc14862c": { + "_id": "c81e728d-9d4c-3f63-af06-7f89cc14862c", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "cfcd2084-95d5-35ef-a6e7-dff9f98764da": { + "_id": "cfcd2084-95d5-35ef-a6e7-dff9f98764da", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "UsernameCollectorNode", + "collection": true, + "name": "Username Collector", + }, + }, + "eccbc87e-4b5c-32fe-a830-8fd9f2a7baf3": { + "_id": "eccbc87e-4b5c-32fe-a830-8fd9f2a7baf3", + "_outcomes": [ + { + "displayName": "Has Credentials", + "id": "true", + }, + { + "displayName": "No Credentials", + "id": "false", + }, + ], + "_type": { + "_id": "ZeroPageLoginNode", + "collection": true, + "name": "Zero Page Login Collector", + }, + "allowWithoutReferer": true, + "passwordHeader": "X-OpenAM-Password", + "referrerWhiteList": [], + "usernameHeader": "X-OpenAM-Username", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "Example", + "description": "null", + "enabled": true, + "entryNodeId": "eccbc87e-4b5c-32fe-a830-8fd9f2a7baf3", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "c4ca4238-a0b9-3382-8dcc-509a6f75849b": { + "connections": { + "outcome": "c81e728d-9d4c-3f63-af06-7f89cc14862c", + }, + "displayName": "Password Collector", + "nodeType": "PasswordCollectorNode", + "x": 0, + "y": 0, + }, + "c81e728d-9d4c-3f63-af06-7f89cc14862c": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 0, + "y": 0, + }, + "cfcd2084-95d5-35ef-a6e7-dff9f98764da": { + "connections": { + "outcome": "c4ca4238-a0b9-3382-8dcc-509a6f75849b", + }, + "displayName": "User Name Collector", + "nodeType": "UsernameCollectorNode", + "x": 0, + "y": 0, + }, + "eccbc87e-4b5c-32fe-a830-8fd9f2a7baf3": { + "connections": { + "false": "cfcd2084-95d5-35ef-a6e7-dff9f98764da", + "true": "c81e728d-9d4c-3f63-af06-7f89cc14862c", + }, + "displayName": "Zero Page Login Collector", + "nodeType": "ZeroPageLoginNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/Facebook-ProvisionIDMAccount.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "Facebook-ProvisionIDMAccount": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "37693cfc-7480-39e4-9d87-b8c7d8b9aacd": { + "_id": "37693cfc-7480-39e4-9d87-b8c7d8b9aacd", + "_outcomes": [ + { + "displayName": "Account exists", + "id": "ACCOUNT_EXISTS", + }, + { + "displayName": "No account exists", + "id": "NO_ACCOUNT", + }, + ], + "_type": { + "_id": "SocialFacebookNode", + "collection": true, + "name": "Social Facebook", + }, + "authenticationIdKey": "id", + "authorizeEndpoint": "https://www.facebook.com/dialog/oauth", + "basicAuth": true, + "cfgAccountMapperClass": "org.forgerock.openam.authentication.modules.common.mapping.JsonAttributeMapper|*|facebook-", + "cfgAccountMapperConfiguration": { + "id": "iplanet-am-user-alias-list", + }, + "cfgAccountProviderClass": "org.forgerock.openam.authentication.modules.common.mapping.DefaultAccountProvider", + "cfgAttributeMappingClasses": [ + "org.forgerock.openam.authentication.modules.common.mapping.JsonAttributeMapper|iplanet-am-user-alias-list|facebook-", + ], + "cfgAttributeMappingConfiguration": { + "email": "mail", + "first_name": "givenName", + "id": "iplanet-am-user-alias-list", + "last_name": "sn", + "name": "cn", + }, + "cfgMixUpMitigation": false, + "clientId": "aClientId", + "clientSecret": null, + "provider": "facebook", + "redirectURI": "http://localhost:8080/am", + "saveUserAttributesToSession": true, + "scopeString": "public_profile,email", + "tokenEndpoint": "https://graph.facebook.com/v2.12/oauth/access_token", + "userInfoEndpoint": "https://graph.facebook.com/v2.6/me?fields=name%2Cemail%2Cfirst_name%2Clast_name", + }, + "b6d767d2-f8ed-3d21-a44b-0e5886680cb9": { + "_id": "b6d767d2-f8ed-3d21-a44b-0e5886680cb9", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ProvisionIdmAccountNode", + "collection": true, + "name": "Provision IDM Account", + }, + "accountProviderClass": "org.forgerock.openam.authentication.modules.common.mapping.DefaultAccountProvider", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "Facebook-ProvisionIDMAccount", + "description": "null", + "enabled": true, + "entryNodeId": "37693cfc-7480-39e4-9d87-b8c7d8b9aacd", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "37693cfc-7480-39e4-9d87-b8c7d8b9aacd": { + "connections": { + "ACCOUNT_EXISTS": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + "NO_ACCOUNT": "b6d767d2-f8ed-3d21-a44b-0e5886680cb9", + }, + "displayName": "Facebook Social Authentication", + "nodeType": "SocialFacebookNode", + "x": 0, + "y": 0, + }, + "b6d767d2-f8ed-3d21-a44b-0e5886680cb9": { + "connections": { + "outcome": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Provision IDM Account", + "nodeType": "ProvisionIdmAccountNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/Google-AnonymousUser.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "Google-AnonymousUser": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "1ff1de77-4005-38da-93f4-2943881c655f": { + "_id": "1ff1de77-4005-38da-93f4-2943881c655f", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "SetSuccessUrlNode", + "collection": true, + "name": "Success URL", + }, + "successUrl": "https://www.forgerock.com/", + }, + "4e732ced-3463-306d-a0ca-9a15b6153677": { + "_id": "4e732ced-3463-306d-a0ca-9a15b6153677", + "_outcomes": [ + { + "displayName": "Account exists", + "id": "ACCOUNT_EXISTS", + }, + { + "displayName": "No account exists", + "id": "NO_ACCOUNT", + }, + ], + "_type": { + "_id": "SocialGoogleNode", + "collection": true, + "name": "Social Google", + }, + "authenticationIdKey": "sub", + "authorizeEndpoint": "https://accounts.google.com/o/oauth2/v2/auth", + "basicAuth": true, + "cfgAccountMapperClass": "org.forgerock.openam.authentication.modules.common.mapping.JsonAttributeMapper|*|google-", + "cfgAccountMapperConfiguration": { + "sub": "iplanet-am-user-alias-list", + }, + "cfgAccountProviderClass": "org.forgerock.openam.authentication.modules.common.mapping.DefaultAccountProvider", + "cfgAttributeMappingClasses": [ + "org.forgerock.openam.authentication.modules.common.mapping.JsonAttributeMapper|iplanet-am-user-alias-list|google-", + ], + "cfgAttributeMappingConfiguration": { + "email": "mail", + "family_name": "sn", + "given_name": "givenName", + "name": "cn", + "sub": "iplanet-am-user-alias-list", + }, + "cfgMixUpMitigation": false, + "clientId": "aClientId", + "clientSecret": null, + "provider": "google", + "redirectURI": "http://localhost:8080/am", + "saveUserAttributesToSession": true, + "scopeString": "profile email", + "tokenEndpoint": "https://www.googleapis.com/oauth2/v4/token", + "userInfoEndpoint": "https://www.googleapis.com/oauth2/v3/userinfo", + }, + "8e296a06-7a37-3633-b0de-d05f5a3bf3ec": { + "_id": "8e296a06-7a37-3633-b0de-d05f5a3bf3ec", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "AnonymousUserNode", + "collection": true, + "name": "Anonymous User Mapping", + }, + "anonymousUserName": "anonymous", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "Google-AnonymousUser", + "description": "null", + "enabled": true, + "entryNodeId": "4e732ced-3463-306d-a0ca-9a15b6153677", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "1ff1de77-4005-38da-93f4-2943881c655f": { + "connections": { + "outcome": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Set Success URL", + "nodeType": "SetSuccessUrlNode", + "x": 0, + "y": 0, + }, + "4e732ced-3463-306d-a0ca-9a15b6153677": { + "connections": { + "ACCOUNT_EXISTS": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + "NO_ACCOUNT": "8e296a06-7a37-3633-b0de-d05f5a3bf3ec", + }, + "displayName": "Google Social Authentication", + "nodeType": "SocialGoogleNode", + "x": 0, + "y": 0, + }, + "8e296a06-7a37-3633-b0de-d05f5a3bf3ec": { + "connections": { + "outcome": "1ff1de77-4005-38da-93f4-2943881c655f", + }, + "displayName": "Map to Anonymous User", + "nodeType": "AnonymousUserNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/Google-DynamicAccountCreation.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "Google-DynamicAccountCreation": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "02e74f10-e032-3ad8-a8d1-38f2b4fdd6f0": { + "_id": "02e74f10-e032-3ad8-a8d1-38f2b4fdd6f0", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ProvisionDynamicAccountNode", + "collection": true, + "name": "Provision Dynamic Account", + }, + "accountProviderClass": "org.forgerock.openam.authentication.modules.common.mapping.DefaultAccountProvider", + }, + "182be0c5-cdcd-3072-bb18-64cdee4d3d6e": { + "_id": "182be0c5-cdcd-3072-bb18-64cdee4d3d6e", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "CreatePasswordNode", + "collection": true, + "name": "Create Password", + }, + "minPasswordLength": 0, + }, + "33e75ff0-9dd6-31bb-a69f-351039152189": { + "_id": "33e75ff0-9dd6-31bb-a69f-351039152189", + "_outcomes": [ + { + "displayName": "Account exists", + "id": "ACCOUNT_EXISTS", + }, + { + "displayName": "No account exists", + "id": "NO_ACCOUNT", + }, + ], + "_type": { + "_id": "SocialGoogleNode", + "collection": true, + "name": "Social Google", + }, + "authenticationIdKey": "sub", + "authorizeEndpoint": "https://accounts.google.com/o/oauth2/v2/auth", + "basicAuth": true, + "cfgAccountMapperClass": "org.forgerock.openam.authentication.modules.common.mapping.JsonAttributeMapper|*|google-", + "cfgAccountMapperConfiguration": { + "sub": "iplanet-am-user-alias-list", + }, + "cfgAccountProviderClass": "org.forgerock.openam.authentication.modules.common.mapping.DefaultAccountProvider", + "cfgAttributeMappingClasses": [ + "org.forgerock.openam.authentication.modules.common.mapping.JsonAttributeMapper|iplanet-am-user-alias-list|google-", + ], + "cfgAttributeMappingConfiguration": { + "email": "mail", + "family_name": "sn", + "given_name": "givenName", + "name": "cn", + "sub": "iplanet-am-user-alias-list", + }, + "cfgMixUpMitigation": false, + "clientId": "aClientId", + "clientSecret": null, + "provider": "google", + "redirectURI": "http://localhost:8080/am", + "saveUserAttributesToSession": true, + "scopeString": "profile email", + "tokenEndpoint": "https://www.googleapis.com/oauth2/v4/token", + "userInfoEndpoint": "https://www.googleapis.com/oauth2/v3/userinfo", + }, + "34173cb3-8f07-389d-9beb-c2ac9128303f": { + "_id": "34173cb3-8f07-389d-9beb-c2ac9128303f", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "OneTimePasswordSmtpSenderNode", + "collection": true, + "name": "OTP Email Sender", + }, + "emailAttribute": "mail", + "emailContent": { + "en": "Here is your One Time Password: '{{OTP}}'.

If you did not request this, please contact support.", + }, + "emailSubject": { + "en": "Your One Time Password", + }, + "fromEmailAddress": "admin@example.com", + "hostName": "mail.example.com", + "hostPort": 25, + "password": null, + "smsGatewayImplementationClass": "com.sun.identity.authentication.modules.hotp.DefaultSMSGatewayImpl", + "sslOption": "SSL", + "username": "admin@example.com", + }, + "6364d3f0-f495-36ab-9dcf-8d3b5c6e0b01": { + "_id": "6364d3f0-f495-36ab-9dcf-8d3b5c6e0b01", + "_outcomes": [ + { + "displayName": "Retry", + "id": "Retry", + }, + { + "displayName": "Reject", + "id": "Reject", + }, + ], + "_type": { + "_id": "RetryLimitDecisionNode", + "collection": true, + "name": "Retry Limit Decision", + }, + "incrementUserAttributeOnFailure": true, + "retryLimit": 3, + }, + "6ea9ab1b-aa0e-3b9e-9909-4440c317e21b": { + "_id": "6ea9ab1b-aa0e-3b9e-9909-4440c317e21b", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "OneTimePasswordGeneratorNode", + "collection": true, + "name": "HOTP Generator", + }, + "length": 8, + }, + "c16a5320-fa47-3530-9958-3c34fd356ef5": { + "_id": "c16a5320-fa47-3530-9958-3c34fd356ef5", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "OneTimePasswordCollectorDecisionNode", + "collection": true, + "name": "OTP Collector Decision", + }, + "passwordExpiryTime": 5, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "Google-DynamicAccountCreation", + "description": "null", + "enabled": true, + "entryNodeId": "33e75ff0-9dd6-31bb-a69f-351039152189", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "02e74f10-e032-3ad8-a8d1-38f2b4fdd6f0": { + "connections": { + "outcome": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Provision Dynamic Account", + "nodeType": "ProvisionDynamicAccountNode", + "x": 0, + "y": 0, + }, + "182be0c5-cdcd-3072-bb18-64cdee4d3d6e": { + "connections": { + "outcome": "02e74f10-e032-3ad8-a8d1-38f2b4fdd6f0", + }, + "displayName": "Create Password", + "nodeType": "CreatePasswordNode", + "x": 0, + "y": 0, + }, + "33e75ff0-9dd6-31bb-a69f-351039152189": { + "connections": { + "ACCOUNT_EXISTS": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + "NO_ACCOUNT": "6ea9ab1b-aa0e-3b9e-9909-4440c317e21b", + }, + "displayName": "Google Social Authentication", + "nodeType": "SocialGoogleNode", + "x": 0, + "y": 0, + }, + "34173cb3-8f07-389d-9beb-c2ac9128303f": { + "connections": { + "outcome": "c16a5320-fa47-3530-9958-3c34fd356ef5", + }, + "displayName": "OTP Email Sender", + "nodeType": "OneTimePasswordSmtpSenderNode", + "x": 0, + "y": 0, + }, + "6364d3f0-f495-36ab-9dcf-8d3b5c6e0b01": { + "connections": { + "Reject": "e301438c-0bd0-429c-ab0c-66126501069a", + "Retry": "c16a5320-fa47-3530-9958-3c34fd356ef5", + }, + "displayName": "Retry Limit Decision", + "nodeType": "RetryLimitDecisionNode", + "x": 0, + "y": 0, + }, + "6ea9ab1b-aa0e-3b9e-9909-4440c317e21b": { + "connections": { + "outcome": "34173cb3-8f07-389d-9beb-c2ac9128303f", + }, + "displayName": "HOTP Generator", + "nodeType": "OneTimePasswordGeneratorNode", + "x": 0, + "y": 0, + }, + "c16a5320-fa47-3530-9958-3c34fd356ef5": { + "connections": { + "false": "6364d3f0-f495-36ab-9dcf-8d3b5c6e0b01", + "true": "182be0c5-cdcd-3072-bb18-64cdee4d3d6e", + }, + "displayName": "OTP Collector Decision", + "nodeType": "OneTimePasswordCollectorDecisionNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/HmacOneTimePassword.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "HmacOneTimePassword": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "1f0e3dad-9990-3345-b743-9f8ffabdffc4": { + "_id": "1f0e3dad-9990-3345-b743-9f8ffabdffc4", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "OneTimePasswordGeneratorNode", + "collection": true, + "name": "HOTP Generator", + }, + "length": 8, + }, + "3c59dc04-8e88-3024-bbe8-079a5c74d079": { + "_id": "3c59dc04-8e88-3024-bbe8-079a5c74d079", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "OneTimePasswordCollectorDecisionNode", + "collection": true, + "name": "OTP Collector Decision", + }, + "passwordExpiryTime": 5, + }, + "6f4922f4-5568-361a-8cdf-4ad2299f6d23": { + "_id": "6f4922f4-5568-361a-8cdf-4ad2299f6d23", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "70efdf2e-c9b0-3607-9795-c442636b55fb": { + "_id": "70efdf2e-c9b0-3607-9795-c442636b55fb", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PasswordCollectorNode", + "collection": true, + "name": "Password Collector", + }, + }, + "98f13708-2101-34c4-b568-7be6106a3b84": { + "_id": "98f13708-2101-34c4-b568-7be6106a3b84", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "OneTimePasswordSmtpSenderNode", + "collection": true, + "name": "OTP Email Sender", + }, + "emailAttribute": "mail", + "emailContent": { + "en": "Here is your One Time Password: '{{OTP}}'.

If you did not request this, please contact support.", + }, + "emailSubject": { + "en": "Your One Time Password", + }, + "fromEmailAddress": "admin@example.com", + "hostName": "mail.example.com", + "hostPort": 25, + "password": null, + "smsGatewayImplementationClass": "com.sun.identity.authentication.modules.hotp.DefaultSMSGatewayImpl", + "sslOption": "SSL", + "username": "admin@example.com", + }, + "c74d97b0-1eae-357e-84aa-9d5bade97baf": { + "_id": "c74d97b0-1eae-357e-84aa-9d5bade97baf", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "UsernameCollectorNode", + "collection": true, + "name": "Username Collector", + }, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "HmacOneTimePassword", + "description": "null", + "enabled": true, + "entryNodeId": "c74d97b0-1eae-357e-84aa-9d5bade97baf", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "1f0e3dad-9990-3345-b743-9f8ffabdffc4": { + "connections": { + "outcome": "98f13708-2101-34c4-b568-7be6106a3b84", + }, + "displayName": "HOTP Generator", + "nodeType": "OneTimePasswordGeneratorNode", + "x": 743.0625, + "y": 58.5, + }, + "3c59dc04-8e88-3024-bbe8-079a5c74d079": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "OTP Collector Decision", + "nodeType": "OneTimePasswordCollectorDecisionNode", + "x": 1109.09375, + "y": 35.859375, + }, + "6f4922f4-5568-361a-8cdf-4ad2299f6d23": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "1f0e3dad-9990-3345-b743-9f8ffabdffc4", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 546.546875, + "y": 35.859375, + }, + "70efdf2e-c9b0-3607-9795-c442636b55fb": { + "connections": { + "outcome": "6f4922f4-5568-361a-8cdf-4ad2299f6d23", + }, + "displayName": "Password Collector", + "nodeType": "PasswordCollectorNode", + "x": 353.9375, + "y": 58.5, + }, + "98f13708-2101-34c4-b568-7be6106a3b84": { + "connections": { + "outcome": "3c59dc04-8e88-3024-bbe8-079a5c74d079", + }, + "displayName": "OTP Email Sender", + "nodeType": "OneTimePasswordSmtpSenderNode", + "x": 920.625, + "y": 58.5, + }, + "c74d97b0-1eae-357e-84aa-9d5bade97baf": { + "connections": { + "outcome": "70efdf2e-c9b0-3607-9795-c442636b55fb", + }, + "displayName": "User Name Collector", + "nodeType": "UsernameCollectorNode", + "x": 152, + "y": 58.5, + }, + }, + "staticNodes": { + "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": { + "x": 1326.34375, + "y": 92, + }, + "e301438c-0bd0-429c-ab0c-66126501069a": { + "x": 1326.34375, + "y": 25, + }, + "startNode": { + "x": 50, + "y": 58.5, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/PersistentCookie.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "PersistentCookie": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "6512bd43-d9ca-36e0-ac99-0b0a82652dca": { + "_id": "6512bd43-d9ca-36e0-ac99-0b0a82652dca", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "UsernameCollectorNode", + "collection": true, + "name": "Username Collector", + }, + }, + "9bf31c7f-f062-336a-96d3-c8bd1f8f2ff3": { + "_id": "9bf31c7f-f062-336a-96d3-c8bd1f8f2ff3", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "SetPersistentCookieNode", + "collection": true, + "name": "Set Persistent Cookie", + }, + "hmacSigningKey": null, + "idleTimeout": 5, + "maxLife": 5, + "persistentCookieName": "session-jwt", + "useHttpOnlyCookie": true, + "useSecureCookie": false, + }, + "aab32389-22bc-325a-af60-6eb525ffdc56": { + "_id": "aab32389-22bc-325a-af60-6eb525ffdc56", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "PersistentCookieDecisionNode", + "collection": true, + "name": "Persistent Cookie Decision", + }, + "enforceClientIp": false, + "hmacSigningKey": null, + "idleTimeout": 5, + "persistentCookieName": "session-jwt", + "useHttpOnlyCookie": true, + "useSecureCookie": false, + }, + "c20ad4d7-6fe9-3759-aa27-a0c99bff6710": { + "_id": "c20ad4d7-6fe9-3759-aa27-a0c99bff6710", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PasswordCollectorNode", + "collection": true, + "name": "Password Collector", + }, + }, + "c51ce410-c124-310e-8db5-e4b97fc2af39": { + "_id": "c51ce410-c124-310e-8db5-e4b97fc2af39", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "PersistentCookie", + "description": "null", + "enabled": true, + "entryNodeId": "aab32389-22bc-325a-af60-6eb525ffdc56", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "6512bd43-d9ca-36e0-ac99-0b0a82652dca": { + "connections": { + "outcome": "c20ad4d7-6fe9-3759-aa27-a0c99bff6710", + }, + "displayName": "User Name Collector", + "nodeType": "UsernameCollectorNode", + "x": 0, + "y": 0, + }, + "9bf31c7f-f062-336a-96d3-c8bd1f8f2ff3": { + "connections": { + "outcome": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Set Persistent Cookie", + "nodeType": "SetPersistentCookieNode", + "x": 0, + "y": 0, + }, + "aab32389-22bc-325a-af60-6eb525ffdc56": { + "connections": { + "false": "6512bd43-d9ca-36e0-ac99-0b0a82652dca", + "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Persistent Cookie Decision", + "nodeType": "PersistentCookieDecisionNode", + "x": 0, + "y": 0, + }, + "c20ad4d7-6fe9-3759-aa27-a0c99bff6710": { + "connections": { + "outcome": "c51ce410-c124-310e-8db5-e4b97fc2af39", + }, + "displayName": "Password Collector", + "nodeType": "PasswordCollectorNode", + "x": 0, + "y": 0, + }, + "c51ce410-c124-310e-8db5-e4b97fc2af39": { + "connections": { + "false": "6512bd43-d9ca-36e0-ac99-0b0a82652dca", + "true": "9bf31c7f-f062-336a-96d3-c8bd1f8f2ff3", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/PlatformForgottenUsername.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "PlatformForgottenUsername": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "d82c8d16-19ad-3176-9665-453cfb2e55f0": { + "_id": "d82c8d16-19ad-3176-9665-453cfb2e55f0", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "AttributeCollectorNode", + "collection": true, + "name": "Attribute Collector", + }, + "attributesToCollect": [ + "mail", + ], + "identityAttribute": "mail", + "required": true, + "validateInputs": false, + }, + }, + "nodes": { + "72b32a1f-754b-31c0-9b36-95e0cb6cde7f": { + "_id": "72b32a1f-754b-31c0-9b36-95e0cb6cde7f", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "InnerTreeEvaluatorNode", + "collection": true, + "name": "Inner Tree Evaluator", + }, + "tree": "PlatformLogin", + }, + "9f61408e-3afb-333e-90cd-f1b20de6f466": { + "_id": "9f61408e-3afb-333e-90cd-f1b20de6f466", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "EmailSuspendNode", + "collection": true, + "name": "Email Suspend Node", + }, + "emailAttribute": "mail", + "emailSuspendMessage": { + "en": "An email has been sent to the address you entered. Click the link in that email to proceed.", + }, + "emailTemplateName": "forgottenUsername", + "identityAttribute": "mail", + "objectLookup": true, + }, + "a684ecee-e76f-3522-b732-86a895bc8436": { + "_id": "a684ecee-e76f-3522-b732-86a895bc8436", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "d82c8d16-19ad-3176-9665-453cfb2e55f0", + "displayName": "Attribute Collector", + "nodeType": "AttributeCollectorNode", + }, + ], + "pageDescription": { + "en": "Enter your email address or Sign in", + }, + "pageHeader": { + "en": "Forgotten Username", + }, + "stage": "null", + }, + "b53b3a3d-6ab9-3ce0-a682-29151c9bde11": { + "_id": "b53b3a3d-6ab9-3ce0-a682-29151c9bde11", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "IdentifyExistingUserNode", + "collection": true, + "name": "Identify Existing User", + }, + "identityAttribute": "mail", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "PlatformForgottenUsername", + "description": "Forgotten Username Tree", + "enabled": true, + "entryNodeId": "a684ecee-e76f-3522-b732-86a895bc8436", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "72b32a1f-754b-31c0-9b36-95e0cb6cde7f": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Inner Tree Evaluator", + "nodeType": "InnerTreeEvaluatorNode", + "x": 0, + "y": 0, + }, + "9f61408e-3afb-333e-90cd-f1b20de6f466": { + "connections": { + "outcome": "72b32a1f-754b-31c0-9b36-95e0cb6cde7f", + }, + "displayName": "Email Suspend", + "nodeType": "EmailSuspendNode", + "x": 0, + "y": 0, + }, + "a684ecee-e76f-3522-b732-86a895bc8436": { + "connections": { + "outcome": "b53b3a3d-6ab9-3ce0-a682-29151c9bde11", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + "b53b3a3d-6ab9-3ce0-a682-29151c9bde11": { + "connections": { + "false": "9f61408e-3afb-333e-90cd-f1b20de6f466", + "true": "9f61408e-3afb-333e-90cd-f1b20de6f466", + }, + "displayName": "Identify Existing User", + "nodeType": "IdentifyExistingUserNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/PlatformLogin.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "PlatformLogin": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "642e92ef-b794-3173-8881-b53e1e1b18b6": { + "_id": "642e92ef-b794-3173-8881-b53e1e1b18b6", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": false, + }, + "67c6a1e7-ce56-33d6-ba74-8ab6d9af3fd7": { + "_id": "67c6a1e7-ce56-33d6-ba74-8ab6d9af3fd7", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + }, + "nodes": { + "2838023a-778d-3aec-9c21-2708f721b788": { + "_id": "2838023a-778d-3aec-9c21-2708f721b788", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "IncrementLoginCountNode", + "collection": true, + "name": "Increment Login Count", + }, + "identityAttribute": "userName", + }, + "9a115815-4dfa-32ca-9dbd-0694a4e9bdc8": { + "_id": "9a115815-4dfa-32ca-9dbd-0694a4e9bdc8", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "InnerTreeEvaluatorNode", + "collection": true, + "name": "Inner Tree Evaluator", + }, + "tree": "PlatformProgressiveProfile", + }, + "c0c7c76d-30bd-3dca-afc9-6f40275bdc0a": { + "_id": "c0c7c76d-30bd-3dca-afc9-6f40275bdc0a", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "f457c545-a9de-388f-98ec-ee47145a72c0": { + "_id": "f457c545-a9de-388f-98ec-ee47145a72c0", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "67c6a1e7-ce56-33d6-ba74-8ab6d9af3fd7", + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + }, + { + "_id": "642e92ef-b794-3173-8881-b53e1e1b18b6", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + ], + "pageDescription": { + "en": "New here? Create an account
Forgot username? Forgot password?", + }, + "pageHeader": { + "en": "Sign In", + }, + "stage": "null", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "PlatformLogin", + "description": "Platform Login Tree", + "enabled": true, + "entryNodeId": "f457c545-a9de-388f-98ec-ee47145a72c0", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "2838023a-778d-3aec-9c21-2708f721b788": { + "connections": { + "outcome": "9a115815-4dfa-32ca-9dbd-0694a4e9bdc8", + }, + "displayName": "Increment Login Count", + "nodeType": "IncrementLoginCountNode", + "x": 0, + "y": 0, + }, + "9a115815-4dfa-32ca-9dbd-0694a4e9bdc8": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Inner Tree Evaluator", + "nodeType": "InnerTreeEvaluatorNode", + "x": 0, + "y": 0, + }, + "c0c7c76d-30bd-3dca-afc9-6f40275bdc0a": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "2838023a-778d-3aec-9c21-2708f721b788", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 0, + "y": 0, + }, + "f457c545-a9de-388f-98ec-ee47145a72c0": { + "connections": { + "outcome": "c0c7c76d-30bd-3dca-afc9-6f40275bdc0a", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/PlatformProgressiveProfile.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "PlatformProgressiveProfile": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "f7177163-c833-3ff4-b38f-c8d2872f1ec6": { + "_id": "f7177163-c833-3ff4-b38f-c8d2872f1ec6", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "AttributeCollectorNode", + "collection": true, + "name": "Attribute Collector", + }, + "attributesToCollect": [ + "preferences/updates", + "preferences/marketing", + ], + "identityAttribute": "userName", + "required": false, + "validateInputs": false, + }, + }, + "nodes": { + "17e62166-fc85-36df-a4d1-bc0e1742c08b": { + "_id": "17e62166-fc85-36df-a4d1-bc0e1742c08b", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "QueryFilterDecisionNode", + "collection": true, + "name": "Query Filter Decision", + }, + "identityAttribute": "userName", + "queryFilter": "!(/preferences pr) or /preferences/marketing eq false or /preferences/updates eq false", + }, + "6c8349cc-7260-3e62-a3b1-396831a8398f": { + "_id": "6c8349cc-7260-3e62-a3b1-396831a8398f", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "f7177163-c833-3ff4-b38f-c8d2872f1ec6", + "displayName": "Attribute Collector", + "nodeType": "AttributeCollectorNode", + }, + ], + "pageDescription": {}, + "pageHeader": { + "en": "Please select your preferences", + }, + "stage": "null", + }, + "a1d0c6e8-3f02-3327-9846-1063f4ac58a6": { + "_id": "a1d0c6e8-3f02-3327-9846-1063f4ac58a6", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "LoginCountDecisionNode", + "collection": true, + "name": "Login Count Decision", + }, + "amount": 3, + "identityAttribute": "userName", + "interval": "AT", + }, + "d9d4f495-e875-32e0-b5a1-a4a6e1b9770f": { + "_id": "d9d4f495-e875-32e0-b5a1-a4a6e1b9770f", + "_outcomes": [ + { + "displayName": "Patched", + "id": "PATCHED", + }, + { + "displayName": "Failed", + "id": "FAILURE", + }, + ], + "_type": { + "_id": "PatchObjectNode", + "collection": true, + "name": "Patch Object", + }, + "identityAttribute": "userName", + "identityResource": "managed/user", + "ignoredFields": [], + "patchAsObject": false, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "PlatformProgressiveProfile", + "description": "Prompt for missing preferences on 3rd login", + "enabled": true, + "entryNodeId": "a1d0c6e8-3f02-3327-9846-1063f4ac58a6", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "17e62166-fc85-36df-a4d1-bc0e1742c08b": { + "connections": { + "false": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + "true": "6c8349cc-7260-3e62-a3b1-396831a8398f", + }, + "displayName": "Query Filter Decision", + "nodeType": "QueryFilterDecisionNode", + "x": 0, + "y": 0, + }, + "6c8349cc-7260-3e62-a3b1-396831a8398f": { + "connections": { + "outcome": "d9d4f495-e875-32e0-b5a1-a4a6e1b9770f", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + "a1d0c6e8-3f02-3327-9846-1063f4ac58a6": { + "connections": { + "false": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + "true": "17e62166-fc85-36df-a4d1-bc0e1742c08b", + }, + "displayName": "Login Count Decision", + "nodeType": "LoginCountDecisionNode", + "x": 0, + "y": 0, + }, + "d9d4f495-e875-32e0-b5a1-a4a6e1b9770f": { + "connections": { + "FAILURE": "e301438c-0bd0-429c-ab0c-66126501069a", + "PATCHED": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Patch Object", + "nodeType": "PatchObjectNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/PlatformRegistration.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "PlatformRegistration": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "19ca14e7-ea63-38a4-ae0e-b13d585e4c22": { + "_id": "19ca14e7-ea63-38a4-ae0e-b13d585e4c22", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "AttributeCollectorNode", + "collection": true, + "name": "Attribute Collector", + }, + "attributesToCollect": [ + "givenName", + "sn", + "mail", + "preferences/marketing", + "preferences/updates", + ], + "identityAttribute": "userName", + "required": true, + "validateInputs": true, + }, + "1c383cd3-0b7c-398a-b502-93adfecb7b18": { + "_id": "1c383cd3-0b7c-398a-b502-93adfecb7b18", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": true, + }, + "a5771bce-93e2-30c3-af7c-d9dfd0e5deaa": { + "_id": "a5771bce-93e2-30c3-af7c-d9dfd0e5deaa", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "AcceptTermsAndConditionsNode", + "collection": true, + "name": "Accept Terms and Conditions", + }, + }, + "a5bfc9e0-7964-38dd-9eb9-5fc584cd965d": { + "_id": "a5bfc9e0-7964-38dd-9eb9-5fc584cd965d", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "KbaCreateNode", + "collection": true, + "name": "KBA Definition", + }, + "allowUserDefinedQuestions": true, + "message": { + "en": "Select a security question", + }, + }, + "e369853d-f766-3a44-a1ed-0ff613f563bd": { + "_id": "e369853d-f766-3a44-a1ed-0ff613f563bd", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": true, + }, + }, + "nodes": { + "3416a75f-4cea-3109-907c-acd8e2f2aefc": { + "_id": "3416a75f-4cea-3109-907c-acd8e2f2aefc", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "IncrementLoginCountNode", + "collection": true, + "name": "Increment Login Count", + }, + "identityAttribute": "userName", + }, + "d645920e-395f-3dad-bbbb-ed0eca3fe2e0": { + "_id": "d645920e-395f-3dad-bbbb-ed0eca3fe2e0", + "_outcomes": [ + { + "displayName": "Created", + "id": "CREATED", + }, + { + "displayName": "Failed", + "id": "FAILURE", + }, + ], + "_type": { + "_id": "CreateObjectNode", + "collection": true, + "name": "Create Object", + }, + "identityResource": "managed/user", + }, + "d67d8ab4-f4c1-3bf2-aaa3-53e27879133c": { + "_id": "d67d8ab4-f4c1-3bf2-aaa3-53e27879133c", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "e369853d-f766-3a44-a1ed-0ff613f563bd", + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + }, + { + "_id": "19ca14e7-ea63-38a4-ae0e-b13d585e4c22", + "displayName": "Attribute Collector", + "nodeType": "AttributeCollectorNode", + }, + { + "_id": "1c383cd3-0b7c-398a-b502-93adfecb7b18", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + { + "_id": "a5bfc9e0-7964-38dd-9eb9-5fc584cd965d", + "displayName": "KBA Definition", + "nodeType": "KbaCreateNode", + }, + { + "_id": "a5771bce-93e2-30c3-af7c-d9dfd0e5deaa", + "displayName": "Accept Terms and Conditions", + "nodeType": "AcceptTermsAndConditionsNode", + }, + ], + "pageDescription": { + "en": "Signing up is fast and easy.
Already have an account?Sign In", + }, + "pageHeader": { + "en": "Sign Up", + }, + "stage": "null", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "PlatformRegistration", + "description": "Platform Registration Tree", + "enabled": true, + "entryNodeId": "d67d8ab4-f4c1-3bf2-aaa3-53e27879133c", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "3416a75f-4cea-3109-907c-acd8e2f2aefc": { + "connections": { + "outcome": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Increment Login Count", + "nodeType": "IncrementLoginCountNode", + "x": 0, + "y": 0, + }, + "d645920e-395f-3dad-bbbb-ed0eca3fe2e0": { + "connections": { + "CREATED": "3416a75f-4cea-3109-907c-acd8e2f2aefc", + "FAILURE": "e301438c-0bd0-429c-ab0c-66126501069a", + }, + "displayName": "Create Object", + "nodeType": "CreateObjectNode", + "x": 0, + "y": 0, + }, + "d67d8ab4-f4c1-3bf2-aaa3-53e27879133c": { + "connections": { + "outcome": "d645920e-395f-3dad-bbbb-ed0eca3fe2e0", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/PlatformResetPassword.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "PlatformResetPassword": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "44f683a8-4163-3352-bafe-57c2e008bc8c": { + "_id": "44f683a8-4163-3352-bafe-57c2e008bc8c", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": true, + }, + "66f041e1-6a60-328b-85a7-e228a89c3799": { + "_id": "66f041e1-6a60-328b-85a7-e228a89c3799", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "AttributeCollectorNode", + "collection": true, + "name": "Attribute Collector", + }, + "attributesToCollect": [ + "mail", + ], + "identityAttribute": "mail", + "required": true, + "validateInputs": false, + }, + }, + "nodes": { + "03afdbd6-6e79-39b1-a5f8-597834fa83a4": { + "_id": "03afdbd6-6e79-39b1-a5f8-597834fa83a4", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "44f683a8-4163-3352-bafe-57c2e008bc8c", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + ], + "pageDescription": { + "en": "Change password", + }, + "pageHeader": { + "en": "Reset Password", + }, + "stage": "null", + }, + "072b030b-a126-32f4-b237-4f342be9ed44": { + "_id": "072b030b-a126-32f4-b237-4f342be9ed44", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "IdentifyExistingUserNode", + "collection": true, + "name": "Identify Existing User", + }, + "identifier": "userName", + "identityAttribute": "mail", + }, + "093f65e0-80a2-35f8-876b-1c5722a46aa2": { + "_id": "093f65e0-80a2-35f8-876b-1c5722a46aa2", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "66f041e1-6a60-328b-85a7-e228a89c3799", + "displayName": "Attribute Collector", + "nodeType": "AttributeCollectorNode", + }, + ], + "pageDescription": { + "en": "Enter your email address or Sign in", + }, + "pageHeader": { + "en": "Reset Password", + }, + "stage": "null", + }, + "7f39f831-7fbd-3198-8ef4-c628eba02591": { + "_id": "7f39f831-7fbd-3198-8ef4-c628eba02591", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "EmailSuspendNode", + "collection": true, + "name": "Email Suspend Node", + }, + "emailAttribute": "mail", + "emailSuspendMessage": { + "en": "An email has been sent to the address you entered. Click the link in that email to proceed.", + }, + "emailTemplateName": "resetPassword", + "identityAttribute": "mail", + "objectLookup": true, + }, + "ea5d2f1c-4608-332e-87d3-aa3d998e5135": { + "_id": "ea5d2f1c-4608-332e-87d3-aa3d998e5135", + "_outcomes": [ + { + "displayName": "Patched", + "id": "PATCHED", + }, + { + "displayName": "Failed", + "id": "FAILURE", + }, + ], + "_type": { + "_id": "PatchObjectNode", + "collection": true, + "name": "Patch Object", + }, + "identityAttribute": "mail", + "identityResource": "managed/user", + "ignoredFields": [], + "patchAsObject": false, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "PlatformResetPassword", + "description": "Reset Password Tree", + "enabled": true, + "entryNodeId": "093f65e0-80a2-35f8-876b-1c5722a46aa2", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "03afdbd6-6e79-39b1-a5f8-597834fa83a4": { + "connections": { + "outcome": "ea5d2f1c-4608-332e-87d3-aa3d998e5135", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + "072b030b-a126-32f4-b237-4f342be9ed44": { + "connections": { + "false": "7f39f831-7fbd-3198-8ef4-c628eba02591", + "true": "7f39f831-7fbd-3198-8ef4-c628eba02591", + }, + "displayName": "Identify Existing User", + "nodeType": "IdentifyExistingUserNode", + "x": 0, + "y": 0, + }, + "093f65e0-80a2-35f8-876b-1c5722a46aa2": { + "connections": { + "outcome": "072b030b-a126-32f4-b237-4f342be9ed44", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + "7f39f831-7fbd-3198-8ef4-c628eba02591": { + "connections": { + "outcome": "03afdbd6-6e79-39b1-a5f8-597834fa83a4", + }, + "displayName": "Email Suspend", + "nodeType": "EmailSuspendNode", + "x": 0, + "y": 0, + }, + "ea5d2f1c-4608-332e-87d3-aa3d998e5135": { + "connections": { + "FAILURE": "e301438c-0bd0-429c-ab0c-66126501069a", + "PATCHED": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Patch Object", + "nodeType": "PatchObjectNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/PlatformUpdatePassword.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "PlatformUpdatePassword": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "735b90b4-5681-35ed-ac3f-678819b6e058": { + "_id": "735b90b4-5681-35ed-ac3f-678819b6e058", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": false, + }, + "7cbbc409-ec99-3f19-878c-75bd1e06f215": { + "_id": "7cbbc409-ec99-3f19-878c-75bd1e06f215", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": true, + }, + }, + "nodes": { + "14bfa6bb-1487-3e45-bba0-28a21ed38046": { + "_id": "14bfa6bb-1487-3e45-bba0-28a21ed38046", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "3295c76a-cbf4-3aae-933c-36b1b5fc2cb1": { + "_id": "3295c76a-cbf4-3aae-933c-36b1b5fc2cb1", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "AttributePresentDecisionNode", + "collection": true, + "name": "Attribute Present Decision", + }, + "identityAttribute": "userName", + "presentAttribute": "password", + }, + "32bb90e8-976a-3b52-98d5-da10fe66f21d": { + "_id": "32bb90e8-976a-3b52-98d5-da10fe66f21d", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "EmailSuspendNode", + "collection": true, + "name": "Email Suspend Node", + }, + "emailAttribute": "mail", + "emailSuspendMessage": { + "en": "An email has been sent to your address, please verify your email address to update your password. Click the link in that email to proceed.", + }, + "emailTemplateName": "updatePassword", + "identityAttribute": "userName", + "objectLookup": true, + }, + "a3f390d8-8e4c-31f2-b47b-fa2f1b5f87db": { + "_id": "a3f390d8-8e4c-31f2-b47b-fa2f1b5f87db", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "735b90b4-5681-35ed-ac3f-678819b6e058", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + ], + "pageDescription": { + "en": "Enter current password", + }, + "pageHeader": { + "en": "Verify Existing Password", + }, + "stage": "null", + }, + "d2ddea18-f006-35ce-8623-e36bd4e3c7c5": { + "_id": "d2ddea18-f006-35ce-8623-e36bd4e3c7c5", + "_outcomes": [ + { + "displayName": "Patched", + "id": "PATCHED", + }, + { + "displayName": "Failed", + "id": "FAILURE", + }, + ], + "_type": { + "_id": "PatchObjectNode", + "collection": true, + "name": "Patch Object", + }, + "identityAttribute": "userName", + "identityResource": "managed/user", + "ignoredFields": [ + "userName", + ], + "patchAsObject": true, + }, + "e2c420d9-28d4-3f8c-a0ff-2ec19b371514": { + "_id": "e2c420d9-28d4-3f8c-a0ff-2ec19b371514", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "7cbbc409-ec99-3f19-878c-75bd1e06f215", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + ], + "pageDescription": { + "en": "Enter new password", + }, + "pageHeader": { + "en": "Update Password", + }, + "stage": "null", + }, + "fc490ca4-5c00-3124-9bbe-3554a4fdf6fb": { + "_id": "fc490ca4-5c00-3124-9bbe-3554a4fdf6fb", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "SessionDataNode", + "collection": true, + "name": "Get Session Data", + }, + "sessionDataKey": "UserToken", + "sharedStateKey": "userName", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "PlatformUpdatePassword", + "description": "Update password using active session", + "enabled": true, + "entryNodeId": "fc490ca4-5c00-3124-9bbe-3554a4fdf6fb", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "14bfa6bb-1487-3e45-bba0-28a21ed38046": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "e2c420d9-28d4-3f8c-a0ff-2ec19b371514", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 0, + "y": 0, + }, + "3295c76a-cbf4-3aae-933c-36b1b5fc2cb1": { + "connections": { + "false": "32bb90e8-976a-3b52-98d5-da10fe66f21d", + "true": "a3f390d8-8e4c-31f2-b47b-fa2f1b5f87db", + }, + "displayName": "Attribute Present Decision", + "nodeType": "AttributePresentDecisionNode", + "x": 0, + "y": 0, + }, + "32bb90e8-976a-3b52-98d5-da10fe66f21d": { + "connections": { + "outcome": "e2c420d9-28d4-3f8c-a0ff-2ec19b371514", + }, + "displayName": "Email Suspend", + "nodeType": "EmailSuspendNode", + "x": 0, + "y": 0, + }, + "a3f390d8-8e4c-31f2-b47b-fa2f1b5f87db": { + "connections": { + "outcome": "14bfa6bb-1487-3e45-bba0-28a21ed38046", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + "d2ddea18-f006-35ce-8623-e36bd4e3c7c5": { + "connections": { + "FAILURE": "e301438c-0bd0-429c-ab0c-66126501069a", + "PATCHED": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Patch Object", + "nodeType": "PatchObjectNode", + "x": 0, + "y": 0, + }, + "e2c420d9-28d4-3f8c-a0ff-2ec19b371514": { + "connections": { + "outcome": "d2ddea18-f006-35ce-8623-e36bd4e3c7c5", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 0, + "y": 0, + }, + "fc490ca4-5c00-3124-9bbe-3554a4fdf6fb": { + "connections": { + "outcome": "3295c76a-cbf4-3aae-933c-36b1b5fc2cb1", + }, + "displayName": "Get Session Data", + "nodeType": "SessionDataNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/RetryLimit.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "RetryLimit": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "1679091c-5a88-3faf-afb5-e6087eb1b2dc": { + "_id": "1679091c-5a88-3faf-afb5-e6087eb1b2dc", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "UsernameCollectorNode", + "collection": true, + "name": "Username Collector", + }, + }, + "45c48cce-2e2d-3fbd-aa1a-fc51c7c6ad26": { + "_id": "45c48cce-2e2d-3fbd-aa1a-fc51c7c6ad26", + "_outcomes": [ + { + "displayName": "Retry", + "id": "Retry", + }, + { + "displayName": "Reject", + "id": "Reject", + }, + ], + "_type": { + "_id": "RetryLimitDecisionNode", + "collection": true, + "name": "Retry Limit Decision", + }, + "incrementUserAttributeOnFailure": true, + "retryLimit": 3, + }, + "8f14e45f-ceea-367a-9a36-dedd4bea2543": { + "_id": "8f14e45f-ceea-367a-9a36-dedd4bea2543", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PasswordCollectorNode", + "collection": true, + "name": "Password Collector", + }, + }, + "c9f0f895-fb98-3b91-99f5-1fd0297e236d": { + "_id": "c9f0f895-fb98-3b91-99f5-1fd0297e236d", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "d3d94468-02a4-3259-b55d-38e6d163e820": { + "_id": "d3d94468-02a4-3259-b55d-38e6d163e820", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "AccountLockoutNode", + "collection": true, + "name": "Account Lockout", + }, + "lockAction": "LOCK", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "RetryLimit", + "description": "null", + "enabled": true, + "entryNodeId": "1679091c-5a88-3faf-afb5-e6087eb1b2dc", + "identityResource": "null", + "innerTreeOnly": false, + "nodes": { + "1679091c-5a88-3faf-afb5-e6087eb1b2dc": { + "connections": { + "outcome": "8f14e45f-ceea-367a-9a36-dedd4bea2543", + }, + "displayName": "User Name Collector", + "nodeType": "UsernameCollectorNode", + "x": 0, + "y": 0, + }, + "45c48cce-2e2d-3fbd-aa1a-fc51c7c6ad26": { + "connections": { + "Reject": "d3d94468-02a4-3259-b55d-38e6d163e820", + "Retry": "1679091c-5a88-3faf-afb5-e6087eb1b2dc", + }, + "displayName": "Retry Limit Decision", + "nodeType": "RetryLimitDecisionNode", + "x": 0, + "y": 0, + }, + "8f14e45f-ceea-367a-9a36-dedd4bea2543": { + "connections": { + "outcome": "c9f0f895-fb98-3b91-99f5-1fd0297e236d", + }, + "displayName": "Password Collector", + "nodeType": "PasswordCollectorNode", + "x": 0, + "y": 0, + }, + "c9f0f895-fb98-3b91-99f5-1fd0297e236d": { + "connections": { + "false": "45c48cce-2e2d-3fbd-aa1a-fc51c7c6ad26", + "true": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 0, + "y": 0, + }, + "d3d94468-02a4-3259-b55d-38e6d163e820": { + "connections": { + "outcome": "e301438c-0bd0-429c-ab0c-66126501069a", + }, + "displayName": "Account Lockout", + "nodeType": "AccountLockoutNode", + "x": 0, + "y": 0, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/oath_registration.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "oath_registration": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "7d7c8acb-e39b-466c-bbaf-cc70a3bf247c": { + "_id": "7d7c8acb-e39b-466c-bbaf-cc70a3bf247c", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "a2f9aa81-fdea-403d-bcc8-a5342cc5d34f": { + "_id": "a2f9aa81-fdea-403d-bcc8-a5342cc5d34f", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": false, + }, + }, + "nodes": { + "35ca2418-908d-4b92-9320-ef8576851abb": { + "_id": "35ca2418-908d-4b92-9320-ef8576851abb", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "9bfb80e1-e05a-4b3c-90bd-7091c2839e28": { + "_id": "9bfb80e1-e05a-4b3c-90bd-7091c2839e28", + "_outcomes": [ + { + "displayName": "Success", + "id": "successOutcome", + }, + { + "displayName": "Failure", + "id": "failureOutcome", + }, + ], + "_type": { + "_id": "OathRegistrationNode", + "collection": true, + "name": "OATH Registration", + }, + "accountName": "USERNAME", + "addChecksum": false, + "algorithm": "TOTP", + "bgColor": "032b75", + "generateRecoveryCodes": true, + "issuer": "ForgeRock", + "minSharedSecretLength": 32, + "passwordLength": "SIX_DIGITS", + "postponeDeviceProfileStorage": false, + "scanQRCodeMessage": {}, + "totpHashAlgorithm": "HMAC_SHA1", + "totpTimeInterval": 30, + "truncationOffset": -1, + }, + "ab49ab43-4d09-46f2-a9ba-7330a6a7dce6": { + "_id": "ab49ab43-4d09-46f2-a9ba-7330a6a7dce6", + "_outcomes": [ + { + "displayName": "Success", + "id": "successOutcome", + }, + { + "displayName": "Failure", + "id": "failureOutcome", + }, + { + "displayName": "Not registered", + "id": "notRegisteredOutcome", + }, + ], + "_type": { + "_id": "OathTokenVerifierNode", + "collection": true, + "name": "OATH Token Verifier", + }, + "algorithm": "TOTP", + "hotpWindowSize": 100, + "isRecoveryCodeAllowed": false, + "maximumAllowedClockDrift": 5, + "totpHashAlgorithm": "HMAC_SHA1", + "totpTimeInterval": 30, + "totpTimeSteps": 2, + }, + "fc5481db-cbee-479f-915a-2b40c54ce04e": { + "_id": "fc5481db-cbee-479f-915a-2b40c54ce04e", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "7d7c8acb-e39b-466c-bbaf-cc70a3bf247c", + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + }, + { + "_id": "a2f9aa81-fdea-403d-bcc8-a5342cc5d34f", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + ], + "pageDescription": {}, + "pageHeader": {}, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "oath_registration", + "enabled": true, + "entryNodeId": "fc5481db-cbee-479f-915a-2b40c54ce04e", + "innerTreeOnly": false, + "nodes": { + "35ca2418-908d-4b92-9320-ef8576851abb": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "ab49ab43-4d09-46f2-a9ba-7330a6a7dce6", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 416, + "y": 161, + }, + "9bfb80e1-e05a-4b3c-90bd-7091c2839e28": { + "connections": { + "failureOutcome": "e301438c-0bd0-429c-ab0c-66126501069a", + "successOutcome": "ab49ab43-4d09-46f2-a9ba-7330a6a7dce6", + }, + "displayName": "OATH Registration", + "nodeType": "OathRegistrationNode", + "x": 717, + "y": 290, + }, + "ab49ab43-4d09-46f2-a9ba-7330a6a7dce6": { + "connections": { + "failureOutcome": "e301438c-0bd0-429c-ab0c-66126501069a", + "notRegisteredOutcome": "9bfb80e1-e05a-4b3c-90bd-7091c2839e28", + "successOutcome": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "OATH Token Verifier", + "nodeType": "OathTokenVerifierNode", + "x": 689, + "y": 102, + }, + "fc5481db-cbee-479f-915a-2b40c54ce04e": { + "connections": { + "outcome": "35ca2418-908d-4b92-9320-ef8576851abb", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 202, + "y": 139, + }, + }, + "staticNodes": { + "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": { + "x": 1103, + "y": 47, + }, + "e301438c-0bd0-429c-ab0c-66126501069a": { + "x": 1100, + "y": 240, + }, + "startNode": { + "x": 50, + "y": 25, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/push_registration.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "push_registration": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "1eb148f2-82e0-49c6-a330-e6a6d1a9eea9": { + "_id": "1eb148f2-82e0-49c6-a330-e6a6d1a9eea9", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "7ab18633-6eb0-455d-97ff-40ff7db4862a": { + "_id": "7ab18633-6eb0-455d-97ff-40ff7db4862a", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": false, + }, + }, + "nodes": { + "07bc635b-5a3f-461b-87ee-e76c9fa22738": { + "_id": "07bc635b-5a3f-461b-87ee-e76c9fa22738", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "1eb148f2-82e0-49c6-a330-e6a6d1a9eea9", + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + }, + { + "_id": "7ab18633-6eb0-455d-97ff-40ff7db4862a", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + ], + "pageDescription": {}, + "pageHeader": {}, + }, + "0e161d10-c2d1-4196-8b41-59f80be4a587": { + "_id": "0e161d10-c2d1-4196-8b41-59f80be4a587", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "1323d24e-b9f8-4396-a9ce-4550fe3ac84f": { + "_id": "1323d24e-b9f8-4396-a9ce-4550fe3ac84f", + "_outcomes": [ + { + "displayName": "Sent", + "id": "SENT", + }, + { + "displayName": "Not Registered", + "id": "NOT_REGISTERED", + }, + { + "displayName": "Skipped", + "id": "SKIPPED", + }, + ], + "_type": { + "_id": "PushAuthenticationSenderNode", + "collection": true, + "name": "Push Sender", + }, + "captureFailure": false, + "contextInfo": false, + "customPayload": [], + "mandatory": false, + "messageTimeout": 120000, + "pushType": "DEFAULT", + "userMessage": {}, + }, + "527e6b31-01db-409c-8f52-01a5b7f48737": { + "_id": "527e6b31-01db-409c-8f52-01a5b7f48737", + "_outcomes": [ + { + "displayName": "Success", + "id": "TRUE", + }, + { + "displayName": "Failure", + "id": "FALSE", + }, + { + "displayName": "Expired", + "id": "EXPIRED", + }, + { + "displayName": "Waiting", + "id": "WAITING", + }, + ], + "_type": { + "_id": "PushResultVerifierNode", + "collection": true, + "name": "Push Result Verifier Node", + }, + }, + "c03b9d7b-3c91-4de4-9f6b-b9f7f7ce999c": { + "_id": "c03b9d7b-3c91-4de4-9f6b-b9f7f7ce999c", + "_outcomes": [ + { + "displayName": "Success", + "id": "successOutcome", + }, + { + "displayName": "Failure", + "id": "failureOutcome", + }, + { + "displayName": "Time Out", + "id": "timeoutOutcome", + }, + ], + "_type": { + "_id": "PushRegistrationNode", + "collection": true, + "name": "Push Registration", + }, + "accountName": "USERNAME", + "bgColor": "032b75", + "generateRecoveryCodes": true, + "issuer": "ForgeRock", + "scanQRCodeMessage": {}, + "timeout": 60, + }, + "ccb48486-0d8e-475d-a002-29d0bfa1177a": { + "_id": "ccb48486-0d8e-475d-a002-29d0bfa1177a", + "_outcomes": [ + { + "displayName": "Done", + "id": "DONE", + }, + { + "displayName": "Exit", + "id": "EXITED", + }, + ], + "_type": { + "_id": "PushWaitNode", + "collection": true, + "name": "Push Wait Node", + }, + "challengeMessage": {}, + "exitMessage": {}, + "secondsToWait": 5, + "waitingMessage": {}, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "push_registration", + "enabled": true, + "entryNodeId": "07bc635b-5a3f-461b-87ee-e76c9fa22738", + "innerTreeOnly": false, + "nodes": { + "07bc635b-5a3f-461b-87ee-e76c9fa22738": { + "connections": {}, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 180, + "y": 133, + }, + "0e161d10-c2d1-4196-8b41-59f80be4a587": { + "connections": { + "true": "1323d24e-b9f8-4396-a9ce-4550fe3ac84f", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 406, + "y": 126, + }, + "1323d24e-b9f8-4396-a9ce-4550fe3ac84f": { + "connections": { + "NOT_REGISTERED": "c03b9d7b-3c91-4de4-9f6b-b9f7f7ce999c", + "SENT": "ccb48486-0d8e-475d-a002-29d0bfa1177a", + "SKIPPED": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Push Sender", + "nodeType": "PushAuthenticationSenderNode", + "x": 647, + "y": 79, + }, + "527e6b31-01db-409c-8f52-01a5b7f48737": { + "connections": { + "EXPIRED": "e301438c-0bd0-429c-ab0c-66126501069a", + "FALSE": "e301438c-0bd0-429c-ab0c-66126501069a", + "TRUE": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + "WAITING": "e301438c-0bd0-429c-ab0c-66126501069a", + }, + "displayName": "Push Result Verifier Node", + "nodeType": "PushResultVerifierNode", + "x": 1016, + "y": 122, + }, + "c03b9d7b-3c91-4de4-9f6b-b9f7f7ce999c": { + "connections": { + "failureOutcome": "e301438c-0bd0-429c-ab0c-66126501069a", + "successOutcome": "1323d24e-b9f8-4396-a9ce-4550fe3ac84f", + "timeoutOutcome": "07bc635b-5a3f-461b-87ee-e76c9fa22738", + }, + "displayName": "Push Registration", + "nodeType": "PushRegistrationNode", + "x": 639, + "y": 299, + }, + "ccb48486-0d8e-475d-a002-29d0bfa1177a": { + "connections": { + "DONE": "527e6b31-01db-409c-8f52-01a5b7f48737", + "EXITED": "07bc635b-5a3f-461b-87ee-e76c9fa22738", + }, + "displayName": "Push Wait Node", + "nodeType": "PushWaitNode", + "x": 823, + "y": 126, + }, + }, + "staticNodes": { + "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": { + "x": 1245, + "y": 35, + }, + "e301438c-0bd0-429c-ab0c-66126501069a": { + "x": 1292, + "y": 172, + }, + "startNode": { + "x": 57, + "y": 22, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/six.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "six": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "295a70ba-2b67-4a48-bf13-237ce0a55450": { + "_id": "295a70ba-2b67-4a48-bf13-237ce0a55450", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "4a77788d-d443-4646-ac52-5cb9f2207a8a": { + "_id": "4a77788d-d443-4646-ac52-5cb9f2207a8a", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "5883ff1e-80dd-49f5-a609-120303e1b0cd": { + "_id": "5883ff1e-80dd-49f5-a609-120303e1b0cd", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "59129227-f192-4ff4-a7b4-bc7690b82d4f": { + "_id": "59129227-f192-4ff4-a7b4-bc7690b82d4f", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "6a1aa88f-25f8-4d40-8008-bfc6684b2a58": { + "_id": "6a1aa88f-25f8-4d40-8008-bfc6684b2a58", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "8b1a8dc8-338f-46af-a4c5-6fe7cf6a2cf5": { + "_id": "8b1a8dc8-338f-46af-a4c5-6fe7cf6a2cf5", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "six", + "enabled": true, + "entryNodeId": "e301438c-0bd0-429c-ab0c-66126501069a", + "innerTreeOnly": false, + "nodes": { + "295a70ba-2b67-4a48-bf13-237ce0a55450": { + "connections": {}, + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + "x": 488, + "y": 57.890625, + }, + "4a77788d-d443-4646-ac52-5cb9f2207a8a": { + "connections": {}, + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + "x": 494, + "y": 458.890625, + }, + "5883ff1e-80dd-49f5-a609-120303e1b0cd": { + "connections": {}, + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + "x": 446, + "y": 298.890625, + }, + "59129227-f192-4ff4-a7b4-bc7690b82d4f": { + "connections": {}, + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + "x": 482, + "y": 220.890625, + }, + "6a1aa88f-25f8-4d40-8008-bfc6684b2a58": { + "connections": {}, + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + "x": 461, + "y": 369.890625, + }, + "8b1a8dc8-338f-46af-a4c5-6fe7cf6a2cf5": { + "connections": {}, + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + "x": 499, + "y": 139.890625, + }, + }, + "staticNodes": { + "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": { + "x": 50, + "y": 117, + }, + "e301438c-0bd0-429c-ab0c-66126501069a": { + "x": 152, + "y": 25, + }, + "startNode": { + "x": 50, + "y": 25, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/test.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "test": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": {}, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "test", + "enabled": true, + "entryNodeId": "d26176be-ea6f-4f2a-81cd-3d41dd6cee4d", + "innerTreeOnly": false, + "nodes": {}, + "staticNodes": { + "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": { + "x": 50, + "y": 117, + }, + "e301438c-0bd0-429c-ab0c-66126501069a": { + "x": 152, + "y": 25, + }, + "startNode": { + "x": 50, + "y": 25, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/test-scripts.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "test-scripts": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": {}, + "nodes": { + "179f2bc8-c197-4fe3-a90e-b0901e41122b": { + "_id": "179f2bc8-c197-4fe3-a90e-b0901e41122b", + "_outcomes": [ + { + "displayName": "outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ScriptedDecisionNode", + "collection": true, + "name": "Scripted Decision", + }, + "inputs": [ + "*", + ], + "outcomes": [ + "outcome", + ], + "outputs": [ + "*", + ], + "script": "7aed0b42-8e5d-4923-8744-81945db9aa21", + }, + "7205beb3-ed1a-4cf1-abd9-12beb1617660": { + "_id": "7205beb3-ed1a-4cf1-abd9-12beb1617660", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "SessionDataNode", + "collection": true, + "name": "Get Session Data", + }, + "sessionDataKey": "UserToken", + "sharedStateKey": "userName", + }, + "86d5d009-a300-4ad8-91a7-48a3bbf15a77": { + "_id": "86d5d009-a300-4ad8-91a7-48a3bbf15a77", + "_outcomes": [ + { + "displayName": "hasSession", + "id": "hasSession", + }, + { + "displayName": "noSession", + "id": "noSession", + }, + ], + "_type": { + "_id": "ScriptedDecisionNode", + "collection": true, + "name": "Scripted Decision", + }, + "inputs": [ + "*", + ], + "outcomes": [ + "hasSession", + "noSession", + ], + "outputs": [ + "*", + ], + "script": "eade4a01-0b7c-43c8-98b1-323506445fec", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "test-scripts", + "enabled": true, + "entryNodeId": "86d5d009-a300-4ad8-91a7-48a3bbf15a77", + "innerTreeOnly": false, + "nodes": { + "179f2bc8-c197-4fe3-a90e-b0901e41122b": { + "connections": { + "outcome": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + }, + "displayName": "Script: Debug print session data", + "nodeType": "ScriptedDecisionNode", + "x": 593, + "y": 25, + }, + "7205beb3-ed1a-4cf1-abd9-12beb1617660": { + "connections": { + "outcome": "179f2bc8-c197-4fe3-a90e-b0901e41122b", + }, + "displayName": "Get Session Data", + "nodeType": "SessionDataNode", + "x": 396, + "y": 24, + }, + "86d5d009-a300-4ad8-91a7-48a3bbf15a77": { + "connections": { + "hasSession": "7205beb3-ed1a-4cf1-abd9-12beb1617660", + }, + "displayName": "Script: Has Session", + "nodeType": "ScriptedDecisionNode", + "x": 199, + "y": 24, + }, + }, + "staticNodes": { + "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": { + "x": 917, + "y": 26, + }, + "e301438c-0bd0-429c-ab0c-66126501069a": { + "x": 927, + "y": 120, + }, + "startNode": { + "x": 50, + "y": 25, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/journey/webauthn_registration.journey.json 1`] = ` +{ + "meta": Any, + "trees": { + "webauthn_registration": { + "circlesOfTrust": {}, + "emailTemplates": {}, + "innerNodes": { + "08faa9c0-7c19-454a-a4e1-0692d94615f6": { + "_id": "08faa9c0-7c19-454a-a4e1-0692d94615f6", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedUsernameNode", + "collection": true, + "name": "Platform Username", + }, + "usernameAttribute": "userName", + "validateInput": false, + }, + "3334a349-b2ea-42e0-86b8-9f6c39d43dad": { + "_id": "3334a349-b2ea-42e0-86b8-9f6c39d43dad", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "ValidatedPasswordNode", + "collection": true, + "name": "Platform Password", + }, + "passwordAttribute": "password", + "validateInput": false, + }, + }, + "nodes": { + "72ef6e1d-930c-4bed-922a-850815d98ea1": { + "_id": "72ef6e1d-930c-4bed-922a-850815d98ea1", + "_outcomes": [ + { + "displayName": "Unsupported", + "id": "unsupported", + }, + { + "displayName": "Success", + "id": "success", + }, + { + "displayName": "Failure", + "id": "failure", + }, + { + "displayName": "Client Error", + "id": "error", + }, + ], + "_type": { + "_id": "WebAuthnRegistrationNode", + "collection": true, + "name": "WebAuthn Registration Node", + }, + "acceptedSigningAlgorithms": [ + "ES256", + "RS256", + ], + "asScript": true, + "attestationPreference": "NONE", + "authenticatorAttachment": "UNSPECIFIED", + "enforceRevocationCheck": false, + "excludeCredentials": false, + "generateRecoveryCodes": true, + "maxSavedDevices": 0, + "origins": [], + "postponeDeviceProfileStorage": false, + "relyingPartyName": "ForgeRock", + "requiresResidentKey": false, + "storeAttestationDataInTransientState": false, + "timeout": 60, + "trustStoreAlias": "trustalias", + "userVerificationRequirement": "PREFERRED", + }, + "807106ff-fb66-469e-93bb-4e0834f6c875": { + "_id": "807106ff-fb66-469e-93bb-4e0834f6c875", + "_outcomes": [ + { + "displayName": "Outcome", + "id": "outcome", + }, + ], + "_type": { + "_id": "PageNode", + "collection": true, + "name": "Page Node", + }, + "nodes": [ + { + "_id": "08faa9c0-7c19-454a-a4e1-0692d94615f6", + "displayName": "Platform Username", + "nodeType": "ValidatedUsernameNode", + }, + { + "_id": "3334a349-b2ea-42e0-86b8-9f6c39d43dad", + "displayName": "Platform Password", + "nodeType": "ValidatedPasswordNode", + }, + ], + "pageDescription": {}, + "pageHeader": {}, + }, + "878eb28e-41b2-4bd7-9256-80ed427bd168": { + "_id": "878eb28e-41b2-4bd7-9256-80ed427bd168", + "_outcomes": [ + { + "displayName": "True", + "id": "true", + }, + { + "displayName": "False", + "id": "false", + }, + ], + "_type": { + "_id": "DataStoreDecisionNode", + "collection": true, + "name": "Data Store Decision", + }, + }, + "9fce34fc-03f1-4fb1-8ce5-1feff34a403c": { + "_id": "9fce34fc-03f1-4fb1-8ce5-1feff34a403c", + "_outcomes": [ + { + "displayName": "Unsupported", + "id": "unsupported", + }, + { + "displayName": "No Device Registered", + "id": "noDevice", + }, + { + "displayName": "Success", + "id": "success", + }, + { + "displayName": "Failure", + "id": "failure", + }, + { + "displayName": "Client Error", + "id": "error", + }, + ], + "_type": { + "_id": "WebAuthnAuthenticationNode", + "collection": true, + "name": "WebAuthn Authentication Node", + }, + "asScript": true, + "isRecoveryCodeAllowed": false, + "origins": [], + "requiresResidentKey": false, + "timeout": 60, + "userVerificationRequirement": "PREFERRED", + }, + }, + "saml2Entities": {}, + "scripts": {}, + "socialIdentityProviders": {}, + "themes": [], + "tree": { + "_id": "webauthn_registration", + "enabled": true, + "entryNodeId": "807106ff-fb66-469e-93bb-4e0834f6c875", + "innerTreeOnly": false, + "nodes": { + "72ef6e1d-930c-4bed-922a-850815d98ea1": { + "connections": { + "error": "e301438c-0bd0-429c-ab0c-66126501069a", + "failure": "e301438c-0bd0-429c-ab0c-66126501069a", + "success": "9fce34fc-03f1-4fb1-8ce5-1feff34a403c", + "unsupported": "e301438c-0bd0-429c-ab0c-66126501069a", + }, + "displayName": "WebAuthn Registration Node", + "nodeType": "WebAuthnRegistrationNode", + "x": 629, + "y": 266, + }, + "807106ff-fb66-469e-93bb-4e0834f6c875": { + "connections": { + "outcome": "878eb28e-41b2-4bd7-9256-80ed427bd168", + }, + "displayName": "Page Node", + "nodeType": "PageNode", + "x": 192, + "y": 156, + }, + "878eb28e-41b2-4bd7-9256-80ed427bd168": { + "connections": { + "false": "e301438c-0bd0-429c-ab0c-66126501069a", + "true": "9fce34fc-03f1-4fb1-8ce5-1feff34a403c", + }, + "displayName": "Data Store Decision", + "nodeType": "DataStoreDecisionNode", + "x": 396, + "y": 157, + }, + "9fce34fc-03f1-4fb1-8ce5-1feff34a403c": { + "connections": { + "error": "e301438c-0bd0-429c-ab0c-66126501069a", + "failure": "e301438c-0bd0-429c-ab0c-66126501069a", + "noDevice": "72ef6e1d-930c-4bed-922a-850815d98ea1", + "success": "70e691a5-1e33-4ac3-a356-e7b6d60d92e0", + "unsupported": "e301438c-0bd0-429c-ab0c-66126501069a", + }, + "displayName": "WebAuthn Authentication Node", + "nodeType": "WebAuthnAuthenticationNode", + "x": 608, + "y": 24, + }, + }, + "staticNodes": { + "70e691a5-1e33-4ac3-a356-e7b6d60d92e0": { + "x": 1200, + "y": 34, + }, + "e301438c-0bd0-429c-ab0c-66126501069a": { + "x": 1206, + "y": 135, + }, + "startNode": { + "x": 76, + "y": 98, + }, + }, + "uiConfig": {}, + }, + "variable": {}, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/oauth2.app/test-client.oauth2.app.json 1`] = ` +{ + "application": { + "test client": { + "_id": "test client", + "_provider": { + "_id": "", + "_type": { + "_id": "oauth-oidc", + "collection": false, + "name": "OAuth2 Provider", + }, + "advancedOAuth2Config": { + "allowClientCredentialsInTokenRequestQueryParameters": false, + "allowedAudienceValues": [], + "authenticationAttributes": [ + "uid", + ], + "codeVerifierEnforced": "false", + "defaultScopes": [], + "displayNameAttribute": "cn", + "expClaimRequiredInRequestObject": false, + "grantTypes": [ + "implicit", + "urn:ietf:params:oauth:grant-type:saml2-bearer", + "refresh_token", + "password", + "client_credentials", + "urn:ietf:params:oauth:grant-type:device_code", + "authorization_code", + "urn:openid:params:grant-type:ciba", + "urn:ietf:params:oauth:grant-type:uma-ticket", + "urn:ietf:params:oauth:grant-type:token-exchange", + "urn:ietf:params:oauth:grant-type:jwt-bearer", + ], + "hashSalt": "changeme", + "includeSubnameInTokenClaims": true, + "macaroonTokenFormat": "V2", + "maxAgeOfRequestObjectNbfClaim": 0, + "maxDifferenceBetweenRequestObjectNbfAndExp": 0, + "moduleMessageEnabledInPasswordGrant": false, + "nbfClaimRequiredInRequestObject": false, + "parRequestUriLifetime": 90, + "passwordGrantAuthService": "[Empty]", + "persistentClaims": [], + "refreshTokenGracePeriod": 0, + "requestObjectProcessing": "OIDC", + "requirePushedAuthorizationRequests": false, + "responseTypeClasses": [ + "code|org.forgerock.oauth2.core.AuthorizationCodeResponseTypeHandler", + "id_token|org.forgerock.openidconnect.IdTokenResponseTypeHandler", + "token|org.forgerock.oauth2.core.TokenResponseTypeHandler", + ], + "supportedScopes": [], + "supportedSubjectTypes": [ + "public", + "pairwise", + ], + "tlsCertificateBoundAccessTokensEnabled": true, + "tlsCertificateRevocationCheckingEnabled": false, + "tlsClientCertificateHeaderFormat": "URLENCODED_PEM", + "tokenCompressionEnabled": false, + "tokenEncryptionEnabled": false, + "tokenExchangeClasses": [ + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToAccessTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToAccessTokenExchanger", + ], + "tokenSigningAlgorithm": "HS256", + "tokenValidatorClasses": [ + "urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.OidcIdTokenValidator", + "urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.OAuth2AccessTokenValidator", + ], + }, + "advancedOIDCConfig": { + "alwaysAddClaimsToToken": false, + "amrMappings": {}, + "authorisedIdmDelegationClients": [], + "authorisedOpenIdConnectSSOClients": [], + "claimsParameterSupported": false, + "defaultACR": [], + "idTokenInfoClientAuthenticationEnabled": true, + "includeAllKtyAlgCombinationsInJwksUri": false, + "loaMapping": {}, + "storeOpsTokens": true, + "supportedAuthorizationResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedAuthorizationResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedAuthorizationResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRequestParameterEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRequestParameterEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRequestParameterSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenEndpointAuthenticationSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenIntrospectionResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedTokenIntrospectionResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedTokenIntrospectionResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedUserInfoEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedUserInfoEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedUserInfoSigningAlgorithms": [ + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + ], + "useForceAuthnForMaxAge": false, + "useForceAuthnForPromptLogin": false, + }, + "cibaConfig": { + "cibaAuthReqIdLifetime": 600, + "cibaMinimumPollingInterval": 2, + "supportedCibaSigningAlgorithms": [ + "ES256", + "PS256", + ], + }, + "clientDynamicRegistrationConfig": { + "allowDynamicRegistration": false, + "dynamicClientRegistrationScope": "dynamic_client_registration", + "dynamicClientRegistrationSoftwareStatementRequired": false, + "generateRegistrationAccessTokens": true, + "requiredSoftwareStatementAttestedAttributes": [ + "redirect_uris", + ], + }, + "consent": { + "clientsCanSkipConsent": false, + "enableRemoteConsent": false, + "supportedRcsRequestEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsRequestEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsRequestSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRcsResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsResponseEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsResponseSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "coreOAuth2Config": { + "accessTokenLifetime": 3600, + "accessTokenMayActScript": "[Empty]", + "codeLifetime": 120, + "issueRefreshToken": true, + "issueRefreshTokenOnRefreshedToken": true, + "macaroonTokensEnabled": false, + "oidcMayActScript": "[Empty]", + "refreshTokenLifetime": 604800, + "scopesPolicySet": "oauth2Scopes", + "statelessTokensEnabled": false, + "usePolicyEngineForScope": false, + }, + "coreOIDCConfig": { + "jwtTokenLifetime": 3600, + "oidcDiscoveryEndpointEnabled": false, + "overrideableOIDCClaims": [], + "supportedClaims": [], + "supportedIDTokenEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedIDTokenEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedIDTokenSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "deviceCodeConfig": { + "deviceCodeLifetime": 300, + "devicePollInterval": 5, + "deviceUserCodeCharacterSet": "234567ACDEFGHJKLMNPQRSTWXYZabcdefhijkmnopqrstwxyz", + "deviceUserCodeLength": 8, + }, + "pluginsConfig": { + "accessTokenEnricherClass": "org.forgerock.oauth2.core.plugins.registry.DefaultAccessTokenEnricher", + "accessTokenModificationPluginType": "SCRIPTED", + "accessTokenModificationScript": "d22f9a0c-426a-4466-b95e-d0f125b0d5fa", + "authorizeEndpointDataProviderClass": "org.forgerock.oauth2.core.plugins.registry.DefaultEndpointDataProvider", + "authorizeEndpointDataProviderPluginType": "JAVA", + "authorizeEndpointDataProviderScript": "3f93ef6e-e54a-4393-aba1-f322656db28a", + "evaluateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeEvaluator", + "evaluateScopePluginType": "JAVA", + "evaluateScopeScript": "da56fe60-8b38-4c46-a405-d6b306d4b336", + "oidcClaimsPluginType": "SCRIPTED", + "oidcClaimsScript": "36863ffb-40ec-48b9-94b1-9a99f71cc3b5", + "userCodeGeneratorClass": "org.forgerock.oauth2.core.plugins.registry.DefaultUserCodeGenerator", + "validateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeValidator", + "validateScopePluginType": "JAVA", + "validateScopeScript": "25e6c06d-cf70-473b-bd28-26931edc476b", + }, + }, + "_type": { + "_id": "OAuth2Client", + "collection": true, + "name": "OAuth2 Clients", + }, + "advancedOAuth2ClientConfig": { + "clientUri": [], + "contacts": [], + "customProperties": [], + "descriptions": [], + "grantTypes": [ + "authorization_code", + ], + "isConsentImplied": false, + "javascriptOrigins": [], + "logoUri": [], + "mixUpMitigation": false, + "name": [], + "policyUri": [], + "refreshTokenGracePeriod": 0, + "requestUris": [], + "require_pushed_authorization_requests": false, + "responseTypes": [ + "code", + "token", + "id_token", + "code token", + "token id_token", + "code id_token", + "code token id_token", + "device_code", + "device_code id_token", + ], + "sectorIdentifierUri": null, + "softwareIdentity": null, + "softwareVersion": null, + "subjectType": "public", + "tokenEndpointAuthMethod": "client_secret_basic", + "tokenExchangeAuthLevel": 0, + "tosURI": [], + "updateAccessToken": null, + }, + "coreOAuth2ClientConfig": { + "accessTokenLifetime": 0, + "agentgroup": null, + "authorizationCodeLifetime": 0, + "clientName": [], + "clientType": "Confidential", + "defaultScopes": [], + "loopbackInterfaceRedirection": false, + "redirectionUris": [], + "refreshTokenLifetime": 0, + "scopes": [], + "secretLabelIdentifier": null, + "status": "Active", + }, + "coreOpenIDClientConfig": { + "backchannel_logout_session_required": false, + "backchannel_logout_uri": null, + "claims": [], + "clientSessionUri": null, + "defaultAcrValues": [], + "defaultMaxAge": 600, + "defaultMaxAgeEnabled": false, + "jwtTokenLifetime": 0, + "postLogoutRedirectUri": [], + }, + "coreUmaClientConfig": { + "claimsRedirectionUris": [], + }, + "overrideOAuth2ClientConfig": { + "accessTokenMayActScript": "[Empty]", + "accessTokenModificationPluginType": "PROVIDER", + "accessTokenModificationScript": "[Empty]", + "authorizeEndpointDataProviderClass": "org.forgerock.oauth2.core.plugins.registry.DefaultEndpointDataProvider", + "authorizeEndpointDataProviderPluginType": "PROVIDER", + "authorizeEndpointDataProviderScript": "[Empty]", + "clientsCanSkipConsent": false, + "enableRemoteConsent": false, + "evaluateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeEvaluator", + "evaluateScopePluginType": "PROVIDER", + "evaluateScopeScript": "[Empty]", + "issueRefreshToken": true, + "issueRefreshTokenOnRefreshedToken": true, + "oidcClaimsPluginType": "PROVIDER", + "oidcClaimsScript": "[Empty]", + "oidcMayActScript": "[Empty]", + "overrideableOIDCClaims": [], + "providerOverridesEnabled": false, + "remoteConsentServiceId": null, + "scopesPolicySet": "oauth2Scopes", + "statelessTokensEnabled": false, + "tokenEncryptionEnabled": false, + "useForceAuthnForMaxAge": false, + "usePolicyEngineForScope": false, + "validateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeValidator", + "validateScopePluginType": "PROVIDER", + "validateScopeScript": "[Empty]", + }, + "signEncOAuth2ClientConfig": { + "authorizationResponseEncryptionAlgorithm": null, + "authorizationResponseEncryptionMethod": null, + "authorizationResponseSigningAlgorithm": "RS256", + "clientJwtPublicKey": null, + "idTokenEncryptionAlgorithm": "RSA-OAEP-256", + "idTokenEncryptionEnabled": false, + "idTokenEncryptionMethod": "A128CBC-HS256", + "idTokenPublicEncryptionKey": null, + "idTokenSignedResponseAlg": "RS256", + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "mTLSCertificateBoundAccessTokens": false, + "mTLSSubjectDN": null, + "mTLSTrustedCert": null, + "publicKeyLocation": "jwks_uri", + "requestParameterEncryptedAlg": null, + "requestParameterEncryptedEncryptionAlgorithm": "A128CBC-HS256", + "requestParameterSignedAlg": null, + "tokenEndpointAuthSigningAlgorithm": "RS256", + "tokenIntrospectionEncryptedResponseAlg": "RSA-OAEP-256", + "tokenIntrospectionEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "tokenIntrospectionResponseFormat": "JSON", + "tokenIntrospectionSignedResponseAlg": "RS256", + "userinfoEncryptedResponseAlg": null, + "userinfoEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "userinfoResponseFormat": "JSON", + "userinfoSignedResponseAlg": null, + }, + }, + }, + "meta": Any, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/policy/Test-Policy.policy.json 1`] = ` +{ + "meta": Any, + "policy": { + "Test Policy": { + "_id": "Test Policy", + "actionValues": {}, + "active": true, + "applicationName": "iPlanetAMWebAgentService", + "createdBy": "id=amadmin,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": "2024-06-27T17:07:04.220Z", + "description": "", + "name": "Test Policy", + "resourceTypeUuid": "76656a38-5f8e-401b-83aa-4ccb74ce88d2", + "resources": [ + "*://*:*/*?*", + ], + "subject": { + "subjects": [ + { + "type": "NONE", + }, + { + "subjectValues": [ + "id=phales,ou=user,dc=openam,dc=forgerock,dc=org", + ], + "type": "Identity", + }, + ], + "type": "AND", + }, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/policyset/iPlanetAMWebAgentService.policyset.json 1`] = ` +{ + "meta": Any, + "policyset": { + "iPlanetAMWebAgentService": { + "applicationType": "iPlanetAMWebAgentService", + "attributeNames": [], + "conditions": [ + "AND", + "OR", + "NOT", + "AMIdentityMembership", + "AuthLevel", + "LEAuthLevel", + "AuthScheme", + "AuthenticateToRealm", + "AuthenticateToService", + "IPv4", + "IPv6", + "LDAPFilter", + "OAuth2Scope", + "ResourceEnvIP", + "Session", + "SessionProperty", + "SimpleTime", + "Script", + "Transaction", + ], + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1718897366825, + "description": "The built-in Application used by OpenAM Policy Agents.", + "displayName": "Default Policy Set", + "editable": true, + "entitlementCombiner": "DenyOverride", + "name": "iPlanetAMWebAgentService", + "resourceComparator": null, + "resourceTypeUuids": [ + "76656a38-5f8e-401b-83aa-4ccb74ce88d2", + ], + "saveIndex": null, + "searchIndex": null, + "subjects": [ + "AND", + "OR", + "NOT", + "AuthenticatedUsers", + "Identity", + "JwtClaim", + "NONE", + ], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/policyset/oauth2Scopes.policyset.json 1`] = ` +{ + "meta": Any, + "policyset": { + "oauth2Scopes": { + "applicationType": "iPlanetAMWebAgentService", + "attributeNames": [], + "conditions": [ + "AND", + "OR", + "NOT", + "AMIdentityMembership", + "AuthLevel", + "LEAuthLevel", + "AuthScheme", + "AuthenticateToRealm", + "AuthenticateToService", + "IPv4", + "IPv6", + "LDAPFilter", + "OAuth2Scope", + "ResourceEnvIP", + "Session", + "SessionProperty", + "SimpleTime", + "Script", + "Transaction", + ], + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1718897366918, + "description": "The built-in Application used by the OAuth2 scope authorization process.", + "displayName": "Default OAuth2 Scopes Policy Set", + "editable": true, + "entitlementCombiner": "DenyOverride", + "name": "oauth2Scopes", + "resourceComparator": null, + "resourceTypeUuids": [ + "d60b7a71-1dc6-44a5-8e48-e4b9d92dee8b", + ], + "saveIndex": null, + "searchIndex": null, + "subjects": [ + "AND", + "OR", + "NOT", + "AuthenticatedUsers", + "Identity", + "JwtClaim", + "NONE", + ], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/resourcetype/OAuth2-Scope.resourcetype.json 1`] = ` +{ + "meta": Any, + "resourcetype": { + "d60b7a71-1dc6-44a5-8e48-e4b9d92dee8b": { + "actions": { + "GRANT": true, + }, + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1517161800564, + "description": "The built-in OAuth2 Scope Resource Type for OAuth2 policy-provided scope.", + "name": "OAuth2 Scope", + "patterns": [ + "*://*:*/*", + "*://*:*/*?*", + "*", + ], + "uuid": "d60b7a71-1dc6-44a5-8e48-e4b9d92dee8b", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/resourcetype/URL.resourcetype.json 1`] = ` +{ + "meta": Any, + "resourcetype": { + "76656a38-5f8e-401b-83aa-4ccb74ce88d2": { + "actions": { + "DELETE": true, + "GET": true, + "HEAD": true, + "OPTIONS": true, + "PATCH": true, + "POST": true, + "PUT": true, + }, + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1422892465848, + "description": "The built-in URL Resource Type available to OpenAM Policies.", + "name": "URL", + "patterns": [ + "*://*:*/*", + "*://*:*/*?*", + ], + "uuid": "76656a38-5f8e-401b-83aa-4ccb74ce88d2", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/saml/Test-Entity.saml.json 1`] = ` +{ + "meta": Any, + "saml": { + "cot": {}, + "hosted": { + "VGVzdCBFbnRpdHk": { + "_id": "VGVzdCBFbnRpdHk", + "entityId": "Test Entity", + "identityProvider": { + "advanced": { + "ecpConfiguration": { + "idpSessionMapper": "com.sun.identity.saml2.plugins.DefaultIDPECPSessionMapper", + }, + "idpAdapter": { + "idpAdapterScript": "[Empty]", + }, + "idpFinderImplementation": {}, + "relayStateUrlList": {}, + "saeConfiguration": { + "idpUrl": "http://localhost:8080/am/idpsaehandler/metaAlias/test", + }, + "sessionSynchronization": {}, + }, + "assertionContent": { + "assertionCache": {}, + "assertionTime": { + "effectiveTime": 600, + "notBeforeTimeSkew": 600, + }, + "authenticationContext": { + "authContextItems": [ + { + "contextReference": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", + "level": 0, + }, + ], + "authenticationContextMapper": "com.sun.identity.saml2.plugins.DefaultIDPAuthnContextMapper", + }, + "basicAuthentication": {}, + "nameIdFormat": { + "nameIdFormatList": [ + "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + "urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + "urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + ], + "nameIdValueMap": [ + { + "binary": false, + "key": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + "value": "mail", + }, + ], + }, + "signingAndEncryption": { + "encryption": {}, + "requestResponseSigning": {}, + "secretIdAndAlgorithms": {}, + }, + }, + "assertionProcessing": { + "accountMapper": { + "accountMapper": "com.sun.identity.saml2.plugins.DefaultIDPAccountMapper", + }, + "attributeMapper": { + "attributeMapper": "com.sun.identity.saml2.plugins.DefaultIDPAttributeMapper", + "attributeMapperScript": "[Empty]", + }, + "localConfiguration": {}, + }, + "services": { + "assertionIdRequest": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/AIDReqSoap/IDPRole/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:URI", + "location": "http://localhost:8080/am/AIDReqUri/IDPRole/metaAlias/test", + }, + ], + "metaAlias": "/test", + "nameIdMapping": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/NIMSoap/metaAlias/test", + }, + ], + "serviceAttributes": { + "artifactResolutionService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/ArtifactResolver/metaAlias/test", + }, + ], + "nameIdService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/IDPMniRedirect/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPMniRedirect/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/IDPMniPOST/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPMniPOST/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/IDPMniSoap/metaAlias/test", + }, + ], + "singleLogoutService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/IDPSloRedirect/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPSloRedirect/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/IDPSloPOST/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPSloPOST/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/IDPSloSoap/metaAlias/test", + }, + ], + "singleSignOnService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/SSORedirect/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/SSOPOST/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/SSOSoap/metaAlias/test", + }, + ], + }, + }, + }, + "serviceProvider": { + "advanced": { + "ecpConfiguration": { + "ecpRequestIdpListFinderImpl": "com.sun.identity.saml2.plugins.ECPIDPFinder", + }, + "idpProxy": {}, + "relayStateUrlList": {}, + "saeConfiguration": { + "spUrl": "http://localhost:8080/am/spsaehandler/metaAlias/test2", + }, + }, + "assertionContent": { + "assertionTimeSkew": 300, + "authenticationContext": { + "authContextItems": [ + { + "contextReference": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", + "defaultItem": true, + "level": 0, + }, + ], + "authenticationComparisonType": "Exact", + "authenticationContextMapper": "com.sun.identity.saml2.plugins.DefaultSPAuthnContextMapper", + "includeRequestedAuthenticationContext": true, + }, + "basicAuthentication": {}, + "nameIdFormat": { + "nameIdFormatList": [ + "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + "urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + "urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + ], + }, + "signingAndEncryption": { + "encryption": {}, + "requestResponseSigning": {}, + "secretIdAndAlgorithms": {}, + }, + }, + "assertionProcessing": { + "accountMapping": { + "spAccountMapper": "com.sun.identity.saml2.plugins.DefaultSPAccountMapper", + }, + "adapter": { + "spAdapterScript": "[Empty]", + }, + "attributeMapper": { + "attributeMap": [ + { + "key": "*", + "value": "*", + }, + ], + "attributeMapper": "com.sun.identity.saml2.plugins.DefaultSPAttributeMapper", + }, + "autoFederation": {}, + "responseArtifactMessageEncoding": { + "encoding": "URI", + }, + "url": {}, + }, + "services": { + "metaAlias": "/test2", + "serviceAttributes": { + "assertionConsumerService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact", + "index": 0, + "isDefault": true, + "location": "http://localhost:8080/am/Consumer/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "index": 1, + "isDefault": false, + "location": "http://localhost:8080/am/Consumer/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:PAOS", + "index": 2, + "isDefault": false, + "location": "http://localhost:8080/am/Consumer/ECP/metaAlias/test2", + }, + ], + "nameIdService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/SPMniRedirect/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPMniRedirect/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/SPMniPOST/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPMniPOST/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/SPMniSoap/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPMniSoap/metaAlias/test2", + }, + ], + "singleLogoutService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/SPSloRedirect/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPSloRedirect/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/SPSloPOST/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPSloPOST/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/SPSloSoap/metaAlias/test2", + }, + ], + }, + }, + }, + }, + }, + "metadata": { + "VGVzdCBFbnRpdHk": [ + "", + "", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " 128", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + " urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + " urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + " urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + " urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + " urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + " urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " 128", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + " urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + " urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + " urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + " urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + " urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + " urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + " ", + " ", + " ", + " ", + "", + "", + "", + ], + }, + "remote": {}, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/Common_HasSession.script.json 1`] = ` +{ + "meta": Any, + "script": { + "eade4a01-0b7c-43c8-98b1-323506445fec": { + "_id": "eade4a01-0b7c-43c8-98b1-323506445fec", + "context": "AUTHENTICATION_TREE_DECISION_NODE", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "Checks if user has a session.", + "evaluatorVersion": "2.0", + "language": "JAVASCRIPT", + "name": "Common_HasSession", + "script": "var scriptOutcomes = { + HAS_SESSION: 'hasSession', + NO_SESSION: 'noSession' +}; + +function main() { + action.goTo(typeof existingSession !== "undefined" ? scriptOutcomes.HAS_SESSION : scriptOutcomes.NO_SESSION); +} + +main(); +", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/Debug-Formatted.script.json 1`] = ` +{ + "meta": Any, + "script": { + "f1cf2d42-ba4f-432c-bb0f-de101e797141": { + "_id": "f1cf2d42-ba4f-432c-bb0f-de101e797141", + "context": "AUTHENTICATION_TREE_DECISION_NODE", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "A fancy table format that displays Shared, Transient, and Secure State", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "Debug - Formatted", + "script": ""/* DISCLAIMER: This code is provided to you expressly as an example (“Sample Code”). It is the responsibility of the individual recipient user, in his/her sole discretion, to diligence such Sample Code for accuracy, completeness, security, and final determination for appropriateness of use. \\n * ANY SAMPLE CODE IS PROVIDED ON AN “AS IS” IS BASIS, WITHOUT WARRANTY OF ANY KIND. FORGEROCK AND ITS LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.\\n * FORGEROCK SHALL NOT HAVE ANY LIABILITY ARISING OUT OF OR RELATING TO ANY USE, IMPLEMENTATION, INTEGRATION, OR CONFIGURATION OF ANY SAMPLE CODE IN ANY PRODUCTION ENVIRONMENT OR FOR ANY COMMERCIAL DEPLOYMENT(S).\\n *\\n * Script Name: AM Journey Template\\n *\\n * Authors: se@forgerock.com\\n * \\n * This script shows a default template on how your Scripting Decision Node scripts should be written.\\n * It shows you how to work with sharedState, transientState, secureState.\\n * This is a great debug script to use in and of itself as it will display all three states mentioned above in a formatted table\\n * \\n * This script needs to be parametrized. It will not work properly as is. \\n * It requires some nodes that set at least sharedState before it can operate.\\n * For example, set a page node with Platform Username and Platform Password nodes\\n * \\n * This Scripted Decision Node needs the following outcomes defined:\\n * - true\\n*/\\n\\n// Do everything in a self-invoking function and do not write code outside of a function or you will pay dearly. \\n// This is because of top-level scoping/whitelisting/etc issues that give you 'undefined' errors.\\n(function () {\\n logger.message(\\"Script: start\\"); // beging of script main\\n outcome = \\"true\\"; // <- fill in default outcome here and it should match a \\"Script Outcomes\\" setting on this node itself\\n\\n // build output html table that will be sent back to browser\\n var output = createHtml();\\n\\n // issue callback to browser after output html is built from createHtml() function\\n displayMessage(output);\\n \\n logger.message(\\"Script: end\\"); // end of script main\\n\\n /*\\n * Put functions below here\\n */\\n function createHtml() {\\n var html = \\"\\";\\n html += \\"\\";\\n // get all the keys in nodeState\\n var iterator = nodeState.keys().iterator();\\n var stateKeys = [];\\n while (iterator.hasNext()) {\\n stateKeys.push(iterator.next().toString());\\n }\\n stateKeys.forEach(function (stateKey) {\\n if (sharedState.get(stateKey) \\n && sharedState.get(stateKey).toString() !== \\"null\\"\\n && sharedState.get(stateKey).toString() !== \\"\\"\\n && \\"\\"+stateKey !== \\"objectAttributes\\" // going to pull out objectAttributes later\\n && \\"\\"+stateKey !== \\"pageNodeCallbacks\\") //pageNodeCallbacks are internal to the Page Node and not needed/used \\n {\\n html += \\"\\";\\n }\\n });\\n html += \\"
Shared State Variables (sharedState.get)
\\" + stateKey + \\"\\" + sharedState.get(stateKey) + \\"
\\";\\n\\n html += \\"\\";\\n \\n html += \\"\\";\\n // get all the keys in nodeState\\n var iterator = nodeState.keys().iterator();\\n var stateKeys = [];\\n while (iterator.hasNext()) {\\n stateKeys.push(iterator.next().toString());\\n }\\n stateKeys.forEach(function (stateKey) {\\n if (transientState.get(stateKey) \\n && transientState.get(stateKey).toString() !== \\"null\\" \\n && transientState.get(stateKey).toString() !== \\"\\"\\n && \\"\\"+stateKey !== \\"objectAttributes\\") \\n {\\n html += \\"\\";\\n }\\n });\\n html += \\"
Transient State Variables (transientState.get)
\\" + stateKey + \\"\\" + transientState.get(stateKey) + \\"
\\";\\n\\n html += \\"\\";\\n // Build the table of objectAttributes in sharedState\\n if (sharedState.get(\\"objectAttributes\\"))\\n { \\n html += \\"\\";\\n var entries = sharedState.get('objectAttributes').entrySet().toArray();\\n entries.forEach(function (entry) { // showing how to use entrySet(). Can use keySet().\\n html += \\"\\";\\n });\\n }\\n else {\\n html += \\"\\";\\n }\\n html += \\"
Shared Object Attributes (sharedState.get)
\\" + entry.getKey() + \\"\\" + entry.getValue() + \\"
EMPTY
\\";\\n\\n html += \\"\\";\\n // Build the table of objectAttributes in transientState\\n if (transientState.get(\\"objectAttributes\\"))\\n {\\n html += \\"\\";\\n var keys = transientState.get('objectAttributes').keySet().toArray();\\n keys.forEach(function (key) { // showing how to use keySet(). Can use entrySet().\\n html += \\"\\";\\n });\\n }\\n else {\\n html += \\"\\";\\n }\\n html += \\"
Transient Object Attributes (transientState.get)
\\" + key + \\"\\" + transientState.get('objectAttributes').get(key) + \\"
EMPTY
\\";\\n\\n html += \\"\\";\\n html += \\"\\";\\n // get all the keys in nodeState\\n var iterator = nodeState.keys().iterator();\\n var stateKeys = [];\\n while (iterator.hasNext()) {\\n stateKeys.push(iterator.next().toString());\\n }\\n stateKeys.forEach(function (stateKey) {\\n if (nodeState.get(stateKey) \\n && nodeState.get(stateKey).toString() !== \\"null\\"\\n && nodeState.get(stateKey).toString() !== \\"\\"\\n && \\"\\"+stateKey !== \\"pageNodeCallbacks\\") //pageNodeCallbacks are internal to the Page Node and not needed/used \\n\\n {\\n html += \\"\\";\\n }\\n });\\n html += \\"
nodeState.get (transientState, secureState, sharedState)
\\" + stateKey + \\"\\" + nodeState.get(stateKey) + \\"
\\";\\n\\n\\n html += \\"\\";\\n // looking for a way to build this AM User Profile list dynamically\\n var objAMAttrs = [\\n \\"uid\\",\\n \\"cn\\",\\n \\"inetUserStatus\\",\\n \\"givenName\\",\\n \\"sn\\",\\n \\"mail\\",\\n \\"description\\",\\n \\"telephoneNumber\\",\\n \\"street\\",\\n \\"l\\",\\n \\"postalCode\\",\\n \\"co\\",\\n \\"st\\",\\n \\"displayName\\",\\n \\"fr-attr-istr1\\",\\n \\"fr-attr-istr2\\",\\n \\"fr-attr-istr3\\",\\n \\"fr-attr-istr4\\",\\n \\"fr-attr-istr5\\",\\n \\"fr-attr-str1\\",\\n \\"fr-attr-str2\\",\\n \\"fr-attr-str3\\",\\n \\"fr-attr-str4\\",\\n \\"fr-attr-str5\\",\\n \\"fr-attr-imulti1\\",\\n \\"fr-attr-imulti2\\",\\n \\"fr-attr-imulti3\\",\\n \\"fr-attr-imulti4\\",\\n \\"fr-attr-imulti5\\",\\n \\"fr-attr-multi1\\",\\n \\"fr-attr-multi2\\",\\n \\"fr-attr-multi3\\",\\n \\"fr-attr-multi4\\",\\n \\"fr-attr-multi5\\",\\n \\"fr-attr-idate1\\",\\n \\"fr-attr-idate2\\",\\n \\"fr-attr-idate3\\",\\n \\"fr-attr-idate4\\",\\n \\"fr-attr-idate5\\",\\n \\"fr-attr-date1\\",\\n \\"fr-attr-date2\\",\\n \\"fr-attr-date3\\",\\n \\"fr-attr-date4\\",\\n \\"fr-attr-date5\\",\\n \\"fr-attr-iint1\\",\\n \\"fr-attr-iint2\\",\\n \\"fr-attr-iint3\\",\\n \\"fr-attr-iint4\\",\\n \\"fr-attr-iint5\\",\\n \\"fr-attr-int1\\",\\n \\"fr-attr-int2\\",\\n \\"fr-attr-int3\\",\\n \\"fr-attr-int4\\",\\n \\"fr-attr-int5\\"\\n ]; \\n\\n // Build the table of idRepository binding\\n var attrs2;\\n if (sharedState.get(\\"_id\\") && idRepository.getAttribute(sharedState.get(\\"_id\\"), \\"uid\\"))\\n {\\n html += \\"\\"; \\n var id = sharedState.get(\\"_id\\");\\n objAMAttrs.forEach(function (attr) {\\n attrs = idRepository.getAttribute(id, attr); \\n if (attrs && \\"\\"+attrs !== \\"null\\" && \\"\\"+attrs !== \\"\\" && \\"\\"+attrs.size()>0){\\n if (attrs.size()===1){\\n \\tattrs = singleValue(attrs);\\n \\t}\\n html += \\"\\";\\n }\\n }); \\n }\\n html += \\"
idRepository AM User Profile
\\" + attr + \\"\\" + attrs + \\"
\\";\\n \\n html += \\"\\";\\n html += \\"\\";\\n //html += \\"\\";\\n\\t var rHeaders = String(requestHeaders).split('], ').map(function (header){\\n return header.split('=')[0].replace('{','').replace('}',''); \\n }); \\n rHeaders.forEach(function (headerName) {\\n var header = requestHeaders.get(headerName);\\n html += \\"\\";\\n }); \\n \\n html += \\"
Request Headers
\\" + requestHeaders.toString() + \\"
\\" + headerName + \\"\\" + header.get(0) + \\"
\\";\\n \\n return html;\\n }\\n \\n //builds the html to display the message in the browser on the callback\\n //use view source in browser and look for class=\\"callback-component\\" to see html response\\n function displayMessage(message) {\\n var anchor = \\"anchor-\\".concat(generateNumericToken('xxx'));\\n var halign = \\"left\\";\\n var script = \\"Array.prototype.slice.call(\\\\n\\".concat(\\n \\"document.getElementsByClassName('callback-component')).forEach(\\\\n\\").concat(\\n \\"function (e) {\\\\n\\").concat(\\n \\" var message = e.firstElementChild;\\\\n\\").concat(\\n \\" if (message.firstChild && message.firstChild.nodeName == '#text' && message.firstChild.nodeValue.trim() == '\\").concat(anchor).concat(\\"') {\\\\n\\").concat(\\n \\" message.className = \\\\\\"\\\\\\";\\\\n\\").concat(\\n \\" message.style = \\\\\\"\\\\\\";\\\\n\\").concat(\\n \\" message.align = \\\\\\"\\").concat(halign).concat(\\"\\\\\\";\\\\n\\").concat(\\n \\" message.innerHTML = '\\").concat(message).concat(\\"';\\\\n\\").concat(\\n \\" }\\\\n\\").concat(\\n \\"})\\")\\n var fr = JavaImporter(\\n org.forgerock.openam.auth.node.api.Action,\\n javax.security.auth.callback.TextOutputCallback,\\n com.sun.identity.authentication.callbacks.ScriptTextOutputCallback\\n )\\n if (message.length && callbacks.isEmpty()) {\\n action = fr.Action.send(\\n new fr.TextOutputCallback(\\n fr.TextOutputCallback.INFORMATION,\\n anchor\\n ),\\n new fr.ScriptTextOutputCallback(script)\\n ).build()\\n }\\n else {\\n action = fr.Action.goTo(outcome).build();\\n }\\n }\\n\\n /*\\n * Generate a token in the desired format. All 'x' characters will be replaced with a random number 0-9.\\n * This is needed to have a unique div(anchor-x) on the html callback that we can populate data\\n * Example:\\n * 'xxxxx' produces '28535'\\n * 'xxx-xxx' produces '432-521'\\n */\\n function generateNumericToken(format) {\\n return format.replace(/[x]/g, function (c) {\\n var r = Math.random() * 10 | 0;\\n var v = r;\\n return v.toString(10);\\n });\\n }\\n\\n // get a singleValue from a HashSet\\n function singleValue(x)\\n {\\n if(x.size()>0)\\n {\\n return x.iterator().next();\\n }\\n \\n return \\"\\";\\n \\n }\\n\\n}()); // self-invoking function"", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/Legacy.script.json 1`] = ` +{ + "meta": Any, + "script": { + "1817cc25-fc84-4053-8f91-4ef130616e25": { + "_id": "1817cc25-fc84-4053-8f91-4ef130616e25", + "context": "OIDC_CLAIMS", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "null", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "Legacy", + "script": "/* + * Copyright 2014-2020 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ +import com.iplanet.sso.SSOException +import com.sun.identity.idm.IdRepoException +import org.forgerock.oauth2.core.exceptions.InvalidRequestException +import org.forgerock.oauth2.core.UserInfoClaims +import org.forgerock.openidconnect.Claim + +/* +* Defined variables: +* logger - always presents, the "OAuth2Provider" debug logger instance +* claims - always present, default server provided claims - Map +* claimObjects - always present, default server provided claims - List +* session - present if the request contains the session cookie, the user's session object +* identity - always present, the identity of the resource owner +* scopes - always present, the requested scopes +* scriptName - always present, the display name of the script +* requestProperties - always present, contains a map of request properties: +* requestUri - the request URI +* realm - the realm that the request relates to +* requestParams - a map of the request params and/or posted data. Each value is a list of one or +* more properties. Please note that these should be handled in accordance with OWASP best practices. +* clientProperties - present if the client specified in the request was identified, contains a map of client +* properties: +* clientId - the client's Uri for the request locale +* allowedGrantTypes - list of the allowed grant types (org.forgerock.oauth2.core.GrantType) +* for the client +* allowedResponseTypes - list of the allowed response types for the client +* allowedScopes - list of the allowed scopes for the client +* customProperties - A map of the custom properties of the client. +* Lists or maps will be included as sub-maps, e.g: +* testMap[Key1]=Value1 will be returned as testmap -> Key1 -> Value1 +* requestedClaims - Map> +* always present, not empty if the request contains a claims parameter and server has enabled +* claims_parameter_supported, map of requested claims to possible values, otherwise empty, +* requested claims with no requested values will have a key but no value in the map. A key with +* a single value in its Set indicates this is the only value that should be returned. +* requestedTypedClaims - List +* always present, not empty if the request contains a claims parameter and server has enabled +* claims_parameter_supported, list of requested claims with claim name, requested possible values +* and if claim is essential, otherwise empty, +* requested claims with no requested values will have a claim with no values. A claims with +* a single value indicates this is the only value that should be returned. +* claimsLocales - the values from the 'claims_locales' parameter - List +* Required to return a Map of claims to be added to the id_token claims +* +* Expected return value structure: +* UserInfoClaims { +* Map values; // The values of the claims for the user information +* Map> compositeScopes; // Mapping of scope name to a list of claim names. +* } +*/ + +// user session not guaranteed to be present +boolean sessionPresent = session != null + +/* + * Pulls first value from users profile attribute + * + * @param claim The claim object. + * @param attr The profile attribute name. + */ +def fromSet = { claim, attr -> + if (attr != null && attr.size() == 1){ + attr.iterator().next() + } else if (attr != null && attr.size() > 1){ + attr + } else if (logger.warningEnabled()) { + logger.warning("OpenAMScopeValidator.getUserInfo(): Got an empty result for claim=$claim"); + } +} + +// ---vvvvvvvvvv--- EXAMPLE CLAIM ATTRIBUTE RESOLVER FUNCTIONS ---vvvvvvvvvv--- +/* + * Claim resolver which resolves the value of the claim from its requested values. + * + * This resolver will return a value if the claim has one requested values, otherwise an exception is thrown. + */ +defaultClaimResolver = { claim -> + if (claim.getValues().size() == 1) { + [(claim.getName()): claim.getValues().iterator().next()] + } else { + [:] + } +} + +/* + * Claim resolver which resolves the value of the claim by looking up the user's profile. + * + * This resolver will return a value for the claim if: + * # the user's profile attribute is not null + * # AND the claim contains no requested values + * # OR the claim contains requested values and the value from the user's profile is in the list of values + * + * If no match is found an exception is thrown. + */ +userProfileClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (userProfileValue != null && (claim.getValues() == null || claim.getValues().isEmpty() || claim.getValues().contains(userProfileValue))) { + return [(claim.getName()): userProfileValue] + } + } + [:] +} + +/* + * Claim resolver which resolves the value of the claim of the user's address. + * + * This resolver will return a value for the claim if: + * # the value of the address is not null + * + */ +userAddressClaimResolver = { claim, identity -> + if (identity != null) { + addressFormattedValue = fromSet(claim.getName(), identity.getAttribute("postaladdress")) + if (addressFormattedValue != null) { + return [ + "formatted" : addressFormattedValue + ] + } + } + [:] +} + +/* + * Claim resolver which resolves the value of the claim by looking up the user's profile. + * + * This resolver will return a value for the claim if: + * # the user's profile attribute is not null + * # AND the claim contains no requested values + * # OR the claim contains requested values and the value from the user's profile is in the list of values + * + * If the claim is essential and no value is found an InvalidRequestException will be thrown and returned to the user. + * If no match is found an exception is thrown. + */ +essentialClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (claim.isEssential() && (userProfileValue == null || userProfileValue.isEmpty())) { + throw new InvalidRequestException("Could not provide value for essential claim $claim") + } + if (userProfileValue != null && (claim.getValues() == null || claim.getValues().isEmpty() || claim.getValues().contains(userProfileValue))) { + return [(claim.getName()): userProfileValue] + } + } + return [:] +} + +/* + * Claim resolver which expects the user's profile attribute value to be in the following format: + * "language_tag|value_for_language,...". + * + * This resolver will take the list of requested languages from the 'claims_locales' authorize request + * parameter and attempt to match it to a value from the users' profile attribute. + * If no match is found an exception is thrown. + */ +claimLocalesClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (userProfileValue != null) { + localeValues = parseLocaleAwareString(userProfileValue) + locale = claimsLocales.find { locale -> localeValues.containsKey(locale) } + if (locale != null) { + return [(claim.getName()): localeValues.get(locale)] + } + } + } + return [:] +} + +/* + * Claim resolver which expects the user's profile attribute value to be in the following format: + * "language_tag|value_for_language,...". + * + * This resolver will take the language tag specified in the claim object and attempt to match it to a value + * from the users' profile attribute. If no match is found an exception is thrown. + */ +languageTagClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (userProfileValue != null) { + localeValues = parseLocaleAwareString(userProfileValue) + if (claim.getLocale() != null) { + if (localeValues.containsKey(claim.getLocale())) { + return [(claim.getName()): localeValues.get(claim.getLocale())] + } else { + entry = localeValues.entrySet().iterator().next() + return [(claim.getName() + "#" + entry.getKey()): entry.getValue()] + } + } else { + entry = localeValues.entrySet().iterator().next() + return [(claim.getName()): entry.getValue()] + } + } + } + return [:] +} + +/* + * Given a string "en|English,jp|Japenese,fr_CA|French Canadian" will return map of locale -> value. + */ +parseLocaleAwareString = { s -> + return result = s.split(",").collectEntries { entry -> + split = entry.split("\\\\|") + [(split[0]): value = split[1]] + } +} +// ---^^^^^^^^^^--- EXAMPLE CLAIM ATTRIBUTE RESOLVER FUNCTIONS ---^^^^^^^^^^--- + +// -------------- UPDATE THIS TO CHANGE CLAIM TO ATTRIBUTE MAPPING FUNCTIONS --------------- +/* + * List of claim resolver mappings. + */ +// [ {claim}: {attribute retriever}, ... ] +claimAttributes = [ + "email": userProfileClaimResolver.curry("mail"), + "address": { claim, identity -> [ "address" : userAddressClaimResolver(claim, identity) ] }, + "phone_number": userProfileClaimResolver.curry("telephonenumber"), + "given_name": userProfileClaimResolver.curry("givenname"), + "zoneinfo": userProfileClaimResolver.curry("preferredtimezone"), + "family_name": userProfileClaimResolver.curry("sn"), + "locale": userProfileClaimResolver.curry("preferredlocale"), + "name": userProfileClaimResolver.curry("cn") +] + + +// -------------- UPDATE THIS TO CHANGE SCOPE TO CLAIM MAPPINGS -------------- +/* + * Map of scopes to claim objects. + */ +// {scope}: [ {claim}, ... ] +scopeClaimsMap = [ + "email": [ "email" ], + "address": [ "address" ], + "phone": [ "phone_number" ], + "profile": [ "given_name", "zoneinfo", "family_name", "locale", "name" ] +] + + +// ---------------- UPDATE BELOW FOR ADVANCED USAGES ------------------- +if (logger.messageEnabled()) { + scopes.findAll { s -> !("openid".equals(s) || scopeClaimsMap.containsKey(s)) }.each { s -> + logger.message("OpenAMScopeValidator.getUserInfo()::Message: scope not bound to claims: $s") + } +} + +/* + * Computes the claims return key and value. The key may be a different value if the claim value is not in + * the requested language. + */ +def computeClaim = { claim -> + try { + claimResolver = claimAttributes.get(claim.getName(), { claimObj, identity -> defaultClaimResolver(claim)}) + claimResolver(claim, identity) + } catch (IdRepoException e) { + if (logger.warningEnabled()) { + logger.warning("OpenAMScopeValidator.getUserInfo(): Unable to retrieve attribute=$attribute", e); + } + } catch (SSOException e) { + if (logger.warningEnabled()) { + logger.warning("OpenAMScopeValidator.getUserInfo(): Unable to retrieve attribute=$attribute", e); + } + } +} + +/* + * Converts requested scopes into claim objects based on the scope mappings in scopeClaimsMap. + */ +def convertScopeToClaims = { + scopes.findAll { scope -> "openid" != scope && scopeClaimsMap.containsKey(scope) }.collectMany { scope -> + scopeClaimsMap.get(scope).collect { claim -> + new Claim(claim) + } + } +} + +// Creates a full list of claims to resolve from requested scopes, claims provided by AS and requested claims +def claimsToResolve = convertScopeToClaims() + claimObjects + requestedTypedClaims + +// Computes the claim return key and values for all requested claims +computedClaims = claimsToResolve.collectEntries() { claim -> + result = computeClaim(claim) +} + +// Computes composite scopes +def compositeScopes = scopeClaimsMap.findAll { scope -> + scopes.contains(scope.key) +} + +return new UserInfoClaims((Map)computedClaims, (Map)compositeScopes) +", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/Logging-Example-Next-Gen.script.json 1`] = ` +{ + "meta": Any, + "script": { + "ac4a4c43-ce2a-4d4c-b5d8-c201aafaf0f6": { + "_id": "ac4a4c43-ce2a-4d4c-b5d8-c201aafaf0f6", + "context": "AUTHENTICATION_TREE_DECISION_NODE", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "An example scripted node that takes the userName and outputs it to the error logs using a library script.", + "evaluatorVersion": "2.0", + "language": "JAVASCRIPT", + "name": "Logging Example - Next Gen", + "script": ""/*\\n An example of using the error logs to output data to the logger, using a library script\\n Requires the library_logger library script\\n\\n Outcomes:\\n - true\\n */\\n//// CONSTANTS\\n// Import Library Script\\nvar libraryLogger = require('library_logger');\\nvar UNIQUE_LOGGING_IDENTIFIER = \\"Zephyr\\";\\n\\nvar NodeOutcome = {\\n SUCCESS: \\"true\\"\\n};\\n\\n//// MAIN\\n(function () {\\n var FUNCTION_NAME = \\"Main\\";\\n var username = nodeState.get(\\"username\\");\\n\\n if (username == null) {\\n username = \\"undefined\\";\\n }\\n\\n libraryLogger.logFormatted(this,\\n {\\n callingFunction: FUNCTION_NAME,\\n identifier: UNIQUE_LOGGING_IDENTIFIER,\\n level: \\"error\\",\\n message: \`The current user is: \${username}\`,\\n scriptName: scriptName\\n });\\n\\n action.goTo(NodeOutcome.SUCCESS);\\n}());"", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/NextGeneration.script.json 1`] = ` +{ + "meta": Any, + "script": { + "31bd2ae6-c929-4547-b636-84b874715d60": { + "_id": "31bd2ae6-c929-4547-b636-84b874715d60", + "context": "LIBRARY", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "null", + "evaluatorVersion": "2.0", + "exports": [ + { + "arity": 2, + "id": "logError", + "type": "Function", + }, + { + "arity": 2, + "id": "logWarning", + "type": "Function", + }, + { + "arity": 2, + "id": "logInfo", + "type": "Function", + }, + { + "arity": 2, + "id": "logDebug", + "type": "Function", + }, + ], + "language": "JAVASCRIPT", + "name": "NextGeneration", + "script": "/* + * Copyright 2022-2023 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ + +/* + * This is an example library script with methods that can be used in other scripts. + * To reference it, use the following: + * + * var library = require("Library Script"); + * + * library.logError(logger, "Error message"); + * library.logDebug(logger, "Debug message"); + */ + +function logError(log, errorMessage) { + log.error(errorMessage); +} + +function logWarning(log, warningMessage) { + log.warn(warningMessage); +} + +exports.logError = logError; +exports.logWarning = logWarning; + +// Alternatively, exports can be declared using an inline arrow function + +exports.logInfo = (log, infoMessage) => log.info(infoMessage); +exports.logDebug = (log, debugMessage) => log.debug(debugMessage); +", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/Test-Script.script.json 1`] = ` +{ + "meta": Any, + "script": { + "59335cbd-de7d-4ebd-99b0-f0fb1fe7fede": { + "_id": "59335cbd-de7d-4ebd-99b0-f0fb1fe7fede", + "context": "LIBRARY", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "Test script description", + "evaluatorVersion": "2.0", + "exports": [ + { + "arity": 2, + "id": "logError", + "type": "Function", + }, + { + "arity": 2, + "id": "logWarning", + "type": "Function", + }, + { + "arity": 2, + "id": "logInfo", + "type": "Function", + }, + { + "arity": 2, + "id": "logDebug", + "type": "Function", + }, + ], + "language": "JAVASCRIPT", + "name": "Test Script", + "script": "/* + * Copyright 2022-2023 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ + +/* + * This is an example library script with methods that can be used in other scripts. + * To reference it, use the following: + * + * var library = require("Library Script"); + * + * library.logError(logger, "Error message"); + * library.logDebug(logger, "Debug message"); + */ + +function logError(log, errorMessage) { + log.error(errorMessage); +} + +function logWarning(log, warningMessage) { + log.warn(warningMessage); +} + +exports.logError = logError; +exports.logWarning = logWarning; + +// Alternatively, exports can be declared using an inline arrow function + +exports.logInfo = (log, infoMessage) => log.info(infoMessage); +exports.logDebug = (log, debugMessage) => log.debug(debugMessage); +", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/debug.script.json 1`] = ` +{ + "meta": Any, + "script": { + "7aed0b42-8e5d-4923-8744-81945db9aa21": { + "_id": "7aed0b42-8e5d-4923-8744-81945db9aa21", + "context": "AUTHENTICATION_TREE_DECISION_NODE", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "Prints out shared and transient states for debug purposes.", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "debug", + "script": "var fr = JavaImporter( + org.forgerock.openam.auth.node.api.Action, + javax.security.auth.callback.TextOutputCallback, +); + +var scriptOutcomes = { + OUTCOME: 'outcome', +}; + +function main() { + if (callbacks.isEmpty()) { + var debugState = { + sharedState: sharedState, + transientState: transientState, + }; + action = fr.Action.send(new fr.TextOutputCallback(0, JSON.stringify(debugState))).build(); + return; + } + outcome = scriptOutcomes.OUTCOME; +} + +main(); +", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/script/test-script-2.script.json 1`] = ` +{ + "meta": Any, + "script": { + "9a7836ff-b597-4799-8a6f-306fdf40f238": { + "_id": "9a7836ff-b597-4799-8a6f-306fdf40f238", + "context": "LIBRARY", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "This is a test script", + "evaluatorVersion": "2.0", + "exports": [ + { + "arity": 2, + "id": "logError", + "type": "Function", + }, + { + "arity": 2, + "id": "logWarning", + "type": "Function", + }, + { + "arity": 2, + "id": "logInfo", + "type": "Function", + }, + { + "arity": 2, + "id": "logDebug", + "type": "Function", + }, + ], + "language": "JAVASCRIPT", + "name": "test script 2", + "script": "/* + * Copyright 2022-2023 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ + +/* + * This is an example library script with methods that can be used in other scripts. + * To reference it, use the following: + * + * var library = require("Library Script"); + * + * library.logError(logger, "Error message"); + * library.logDebug(logger, "Debug message"); + */ + +function logError(log, errorMessage) { + log.error(errorMessage); +} + +function logWarning(log, warningMessage) { + log.warn(warningMessage); +} + +exports.logError = logError; +exports.logWarning = logWarning; + +// Alternatively, exports can be declared using an inline arrow function + +exports.logInfo = (log, infoMessage) => log.info(infoMessage); +exports.logDebug = (log, debugMessage) => log.debug(debugMessage); +", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/secretstore/default-keystore.secretstore.json 1`] = ` +{ + "meta": Any, + "secretstore": { + "default-keystore": { + "_id": "default-keystore", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "mappings": [], + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/secretstore/default-passwords-store.secretstore.json 1`] = ` +{ + "meta": Any, + "secretstore": { + "default-passwords-store": { + "_id": "default-passwords-store", + "_type": { + "_id": "FileSystemSecretStore", + "collection": true, + "name": "File System Secret Volumes", + }, + "directory": "/root/am/security/secrets/encrypted", + "format": "ENCRYPTED_PLAIN", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/IdentityAssertionService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "IdentityAssertionService": { + "_id": "", + "_type": { + "_id": "IdentityAssertionService", + "collection": false, + "name": "Identity Assertion Service", + }, + "cacheDuration": 120, + "enable": true, + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/RemoteConsentService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "RemoteConsentService": { + "_id": "", + "_type": { + "_id": "RemoteConsentService", + "collection": false, + "name": "Remote Consent Service", + }, + "consentResponseTimeLimit": 2, + "jwkStoreCacheMissCacheTime": 1, + "jwkStoreCacheTimeout": 5, + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/SocialIdentityProviders.service.json 1`] = ` +{ + "meta": Any, + "service": { + "SocialIdentityProviders": { + "_id": "", + "_type": { + "_id": "SocialIdentityProviders", + "collection": false, + "name": "Social Identity Provider Service", + }, + "enabled": true, + "location": "/", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/amSessionPropertyWhitelist.service.json 1`] = ` +{ + "meta": Any, + "service": { + "amSessionPropertyWhitelist": { + "_id": "", + "_type": { + "_id": "amSessionPropertyWhitelist", + "collection": false, + "name": "Session Property Whitelist Service", + }, + "location": "/", + "nextDescendents": [], + "sessionPropertyWhitelist": [ + "AMCtxId", + ], + "whitelistedQueryProperties": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/audit.service.json 1`] = ` +{ + "meta": Any, + "service": { + "audit": { + "_id": "", + "_type": { + "_id": "audit", + "collection": false, + "name": "Audit Logging", + }, + "auditEnabled": true, + "blacklistFieldFilters": [], + "location": "/", + "nextDescendents": [], + "whitelistFieldFilters": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/authenticatorOathService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "authenticatorOathService": { + "_id": "", + "_type": { + "_id": "authenticatorOathService", + "collection": false, + "name": "ForgeRock Authenticator (OATH) Service", + }, + "authenticatorOATHDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "authenticatorOATHDeviceSettingsEncryptionKeystoreKeyPairAlias": "pushDeviceProfiles", + "authenticatorOATHDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorOATHDeviceSettingsEncryptionKeystoreType": "JKS", + "authenticatorOATHDeviceSettingsEncryptionScheme": "NONE", + "authenticatorOATHSkippableName": "oath2faEnabled", + "location": "/", + "nextDescendents": [], + "oathAttrName": "oathDeviceProfiles", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/authenticatorPushService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "authenticatorPushService": { + "_id": "", + "_type": { + "_id": "authenticatorPushService", + "collection": false, + "name": "ForgeRock Authenticator (Push) Service", + }, + "authenticatorPushDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "authenticatorPushDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorPushDeviceSettingsEncryptionKeystoreType": "JKS", + "authenticatorPushDeviceSettingsEncryptionScheme": "NONE", + "authenticatorPushSkippableName": "push2faEnabled", + "location": "/", + "nextDescendents": [], + "pushAttrName": "pushDeviceProfiles", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/authenticatorWebAuthnService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "authenticatorWebAuthnService": { + "_id": "", + "_type": { + "_id": "authenticatorWebAuthnService", + "collection": false, + "name": "WebAuthn Profile Encryption Service", + }, + "authenticatorWebAuthnDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jceks", + "authenticatorWebAuthnDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorWebAuthnDeviceSettingsEncryptionKeystoreType": "JCEKS", + "authenticatorWebAuthnDeviceSettingsEncryptionScheme": "NONE", + "location": "/", + "nextDescendents": [], + "webauthnAttrName": "webauthnDeviceProfiles", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/baseurl.service.json 1`] = ` +{ + "meta": Any, + "service": { + "baseurl": { + "_id": "", + "_type": { + "_id": "baseurl", + "collection": false, + "name": "Base URL Source", + }, + "contextPath": "/am", + "location": "/", + "nextDescendents": [], + "source": "REQUEST_VALUES", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/dashboard.service.json 1`] = ` +{ + "meta": Any, + "service": { + "dashboard": { + "_id": "", + "_type": { + "_id": "dashboard", + "collection": false, + "name": "Dashboard", + }, + "assignedDashboard": [], + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/deviceBindingService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "deviceBindingService": { + "_id": "", + "_type": { + "_id": "deviceBindingService", + "collection": false, + "name": "Device Binding Service", + }, + "deviceBindingAttrName": "boundDevices", + "deviceBindingSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceBindingSettingsEncryptionKeystorePassword": null, + "deviceBindingSettingsEncryptionKeystoreType": "JKS", + "deviceBindingSettingsEncryptionScheme": "NONE", + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/deviceIdService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "deviceIdService": { + "_id": "", + "_type": { + "_id": "deviceIdService", + "collection": false, + "name": "Device ID Service", + }, + "deviceIdAttrName": "devicePrintProfiles", + "deviceIdSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceIdSettingsEncryptionKeystorePassword": null, + "deviceIdSettingsEncryptionKeystoreType": "JKS", + "deviceIdSettingsEncryptionScheme": "NONE", + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/deviceProfilesService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "deviceProfilesService": { + "_id": "", + "_type": { + "_id": "deviceProfilesService", + "collection": false, + "name": "Device Profiles Service", + }, + "deviceProfilesAttrName": "deviceProfiles", + "deviceProfilesSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceProfilesSettingsEncryptionKeystorePassword": null, + "deviceProfilesSettingsEncryptionKeystoreType": "JKS", + "deviceProfilesSettingsEncryptionScheme": "NONE", + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/email.service.json 1`] = ` +{ + "meta": Any, + "service": { + "email": { + "_id": "", + "_type": { + "_id": "email", + "collection": false, + "name": "Email Service", + }, + "emailAddressAttribute": "mail", + "emailImplClassName": "org.forgerock.openam.services.email.MailServerImpl", + "emailRateLimitSeconds": 1, + "from": "a@a.example.com", + "location": "/", + "message": "content", + "nextDescendents": [ + { + "_id": "smtpExample", + "_type": { + "_id": "smtpTransports", + "collection": true, + "name": "SMTP", + }, + "emailImplClassName": "org.forgerock.openam.services.email.MailServerImpl", + "hostname": "host.example.com", + "password": null, + "passwordPurpose": "secret", + "port": 465, + "sslState": "Start TLS", + "username": "username", + }, + ], + "port": 465, + "sslState": "SSL", + "subject": "subject", + "transportType": "smtpExample", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/id-repositories.service.json 1`] = ` +{ + "meta": Any, + "service": { + "id-repositories": { + "_id": "", + "_type": { + "_id": "id-repositories", + "collection": false, + "name": "sunIdentityRepositoryService", + }, + "location": "/", + "nextDescendents": [ + { + "_id": "embedded", + "_type": { + "_id": "LDAPv3ForOpenDS", + "collection": true, + "name": "OpenDJ", + }, + "authentication": { + "sun-idrepo-ldapv3-config-auth-naming-attr": "uid", + }, + "cachecontrol": { + "sun-idrepo-ldapv3-dncache-enabled": true, + "sun-idrepo-ldapv3-dncache-size": 1500, + }, + "errorhandling": { + "com.iplanet.am.ldap.connection.delay.between.retries": 1000, + }, + "groupconfig": { + "sun-idrepo-ldapv3-config-group-attributes": [ + "dn", + "cn", + "uniqueMember", + "objectclass", + ], + "sun-idrepo-ldapv3-config-group-container-name": "ou", + "sun-idrepo-ldapv3-config-group-container-value": "groups", + "sun-idrepo-ldapv3-config-group-objectclass": [ + "top", + "groupofuniquenames", + ], + "sun-idrepo-ldapv3-config-groups-search-attribute": "cn", + "sun-idrepo-ldapv3-config-groups-search-filter": "(objectclass=groupOfUniqueNames)", + "sun-idrepo-ldapv3-config-memberurl": "memberUrl", + "sun-idrepo-ldapv3-config-uniquemember": "uniqueMember", + }, + "ldapsettings": { + "openam-idrepo-ldapv3-affinity-level": "all", + "openam-idrepo-ldapv3-behera-support-enabled": true, + "openam-idrepo-ldapv3-contains-iot-identities-enriched-as-oauth2client": false, + "openam-idrepo-ldapv3-heartbeat-interval": 10, + "openam-idrepo-ldapv3-heartbeat-timeunit": "SECONDS", + "openam-idrepo-ldapv3-keepalive-searchfilter": "(objectclass=*)", + "openam-idrepo-ldapv3-mtls-enabled": false, + "openam-idrepo-ldapv3-proxied-auth-denied-fallback": false, + "openam-idrepo-ldapv3-proxied-auth-enabled": false, + "sun-idrepo-ldapv3-config-authid": "cn=Directory Manager", + "sun-idrepo-ldapv3-config-authpw": null, + "sun-idrepo-ldapv3-config-connection-mode": "LDAPS", + "sun-idrepo-ldapv3-config-connection_pool_max_size": 10, + "sun-idrepo-ldapv3-config-connection_pool_min_size": 1, + "sun-idrepo-ldapv3-config-ldap-server": [ + "localhost:50636", + "localhost:50636|01", + ], + "sun-idrepo-ldapv3-config-max-result": 1000, + "sun-idrepo-ldapv3-config-organization_name": "dc=openam,dc=forgerock,dc=org", + "sun-idrepo-ldapv3-config-search-scope": "SCOPE_SUB", + "sun-idrepo-ldapv3-config-time-limit": 10, + "sun-idrepo-ldapv3-config-trust-all-server-certificates": false, + }, + "persistentsearch": { + "sun-idrepo-ldapv3-config-psearch-filter": "(&(!(objectclass=frCoreToken))(!(ou:dn:=services))(!(ou:dn:=tokens)))", + "sun-idrepo-ldapv3-config-psearch-scope": "SCOPE_SUB", + "sun-idrepo-ldapv3-config-psearchbase": "dc=openam,dc=forgerock,dc=org", + }, + "pluginconfig": { + "sunIdRepoAttributeMapping": [], + "sunIdRepoClass": "org.forgerock.openam.idrepo.ldap.DJLDAPv3Repo", + "sunIdRepoSupportedOperations": [ + "realm=read,create,edit,delete,service", + "user=read,create,edit,delete,service", + "group=read,create,edit,delete", + ], + }, + "userconfig": { + "sun-idrepo-ldapv3-config-active": "Active", + "sun-idrepo-ldapv3-config-auth-kba-attempts-attr": [ + "kbaInfoAttempts", + ], + "sun-idrepo-ldapv3-config-auth-kba-attr": [ + "kbaInfo", + ], + "sun-idrepo-ldapv3-config-auth-kba-index-attr": "kbaActiveIndex", + "sun-idrepo-ldapv3-config-createuser-attr-mapping": [ + "cn", + "sn", + ], + "sun-idrepo-ldapv3-config-inactive": "Inactive", + "sun-idrepo-ldapv3-config-isactive": "inetuserstatus", + "sun-idrepo-ldapv3-config-people-container-name": "ou", + "sun-idrepo-ldapv3-config-people-container-value": "people", + "sun-idrepo-ldapv3-config-user-attributes": [ + "iplanet-am-auth-configuration", + "iplanet-am-user-alias-list", + "iplanet-am-user-password-reset-question-answer", + "mail", + "assignedDashboard", + "authorityRevocationList", + "dn", + "iplanet-am-user-password-reset-options", + "employeeNumber", + "createTimestamp", + "kbaActiveIndex", + "caCertificate", + "iplanet-am-session-quota-limit", + "iplanet-am-user-auth-config", + "sun-fm-saml2-nameid-infokey", + "sunIdentityMSISDNNumber", + "iplanet-am-user-password-reset-force-reset", + "sunAMAuthInvalidAttemptsData", + "devicePrintProfiles", + "givenName", + "iplanet-am-session-get-valid-sessions", + "objectClass", + "adminRole", + "inetUserHttpURL", + "lastEmailSent", + "iplanet-am-user-account-life", + "postalAddress", + "userCertificate", + "preferredtimezone", + "iplanet-am-user-admin-start-dn", + "boundDevices", + "oath2faEnabled", + "preferredlanguage", + "sun-fm-saml2-nameid-info", + "userPassword", + "iplanet-am-session-service-status", + "telephoneNumber", + "iplanet-am-session-max-idle-time", + "distinguishedName", + "iplanet-am-session-destroy-sessions", + "kbaInfoAttempts", + "modifyTimestamp", + "uid", + "iplanet-am-user-success-url", + "iplanet-am-user-auth-modules", + "kbaInfo", + "memberOf", + "sn", + "preferredLocale", + "manager", + "iplanet-am-session-max-session-time", + "deviceProfiles", + "cn", + "oathDeviceProfiles", + "webauthnDeviceProfiles", + "iplanet-am-user-login-status", + "pushDeviceProfiles", + "push2faEnabled", + "inetUserStatus", + "retryLimitNodeCount", + "iplanet-am-user-failure-url", + "iplanet-am-session-max-caching-time", + "thingType", + "thingKeys", + "thingOAuth2ClientName", + "thingConfig", + "thingProperties", + ], + "sun-idrepo-ldapv3-config-user-objectclass": [ + "iplanet-am-managed-person", + "inetuser", + "sunFMSAML2NameIdentifier", + "inetorgperson", + "devicePrintProfilesContainer", + "boundDevicesContainer", + "iplanet-am-user-service", + "iPlanetPreferences", + "pushDeviceProfilesContainer", + "forgerock-am-dashboard-service", + "organizationalperson", + "top", + "kbaInfoContainer", + "person", + "sunAMAuthAccountLockout", + "oathDeviceProfilesContainer", + "webauthnDeviceProfilesContainer", + "iplanet-am-auth-configuration-service", + "deviceProfilesContainer", + "fr-iot", + ], + "sun-idrepo-ldapv3-config-users-search-attribute": "uid", + "sun-idrepo-ldapv3-config-users-search-filter": "(objectclass=inetorgperson)", + }, + }, + ], + "sunIdRepoAttributeCombiner": "com.iplanet.am.sdk.AttributeCombiner", + "sunIdRepoAttributeValidator": [ + "class=com.sun.identity.idm.server.IdRepoAttributeValidatorImpl", + "minimumPasswordLength=8", + "usernameInvalidChars=*|(|)|&|!", + ], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/iot.service.json 1`] = ` +{ + "meta": Any, + "service": { + "iot": { + "_id": "", + "_type": { + "_id": "iot", + "collection": false, + "name": "IoT Service", + }, + "attributeAllowlist": [ + "thingConfig", + ], + "createOAuthClient": false, + "createOAuthJwtIssuer": false, + "location": "/", + "nextDescendents": [], + "oauthClientName": "forgerock-iot-oauth2-client", + "oauthJwtIssuerName": "forgerock-iot-jwt-issuer", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/oauth-oidc.service.json 1`] = ` +{ + "meta": Any, + "service": { + "oauth-oidc": { + "_id": "", + "_type": { + "_id": "oauth-oidc", + "collection": false, + "name": "OAuth2 Provider", + }, + "advancedOAuth2Config": { + "allowClientCredentialsInTokenRequestQueryParameters": false, + "allowedAudienceValues": [], + "authenticationAttributes": [ + "uid", + ], + "codeVerifierEnforced": "false", + "defaultScopes": [], + "displayNameAttribute": "cn", + "expClaimRequiredInRequestObject": false, + "grantTypes": [ + "implicit", + "urn:ietf:params:oauth:grant-type:saml2-bearer", + "refresh_token", + "password", + "client_credentials", + "urn:ietf:params:oauth:grant-type:device_code", + "authorization_code", + "urn:openid:params:grant-type:ciba", + "urn:ietf:params:oauth:grant-type:uma-ticket", + "urn:ietf:params:oauth:grant-type:token-exchange", + "urn:ietf:params:oauth:grant-type:jwt-bearer", + ], + "hashSalt": "changeme", + "includeSubnameInTokenClaims": true, + "macaroonTokenFormat": "V2", + "maxAgeOfRequestObjectNbfClaim": 0, + "maxDifferenceBetweenRequestObjectNbfAndExp": 0, + "moduleMessageEnabledInPasswordGrant": false, + "nbfClaimRequiredInRequestObject": false, + "parRequestUriLifetime": 90, + "passwordGrantAuthService": "[Empty]", + "persistentClaims": [], + "refreshTokenGracePeriod": 0, + "requestObjectProcessing": "OIDC", + "requirePushedAuthorizationRequests": false, + "responseTypeClasses": [ + "code|org.forgerock.oauth2.core.AuthorizationCodeResponseTypeHandler", + "id_token|org.forgerock.openidconnect.IdTokenResponseTypeHandler", + "token|org.forgerock.oauth2.core.TokenResponseTypeHandler", + ], + "supportedScopes": [], + "supportedSubjectTypes": [ + "public", + "pairwise", + ], + "tlsCertificateBoundAccessTokensEnabled": true, + "tlsCertificateRevocationCheckingEnabled": false, + "tlsClientCertificateHeaderFormat": "URLENCODED_PEM", + "tokenCompressionEnabled": false, + "tokenEncryptionEnabled": false, + "tokenExchangeClasses": [ + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToAccessTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToAccessTokenExchanger", + ], + "tokenSigningAlgorithm": "HS256", + "tokenValidatorClasses": [ + "urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.OidcIdTokenValidator", + "urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.OAuth2AccessTokenValidator", + ], + }, + "advancedOIDCConfig": { + "alwaysAddClaimsToToken": false, + "amrMappings": {}, + "authorisedIdmDelegationClients": [], + "authorisedOpenIdConnectSSOClients": [], + "claimsParameterSupported": false, + "defaultACR": [], + "idTokenInfoClientAuthenticationEnabled": true, + "includeAllKtyAlgCombinationsInJwksUri": false, + "loaMapping": {}, + "storeOpsTokens": true, + "supportedAuthorizationResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedAuthorizationResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedAuthorizationResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRequestParameterEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRequestParameterEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRequestParameterSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenEndpointAuthenticationSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenIntrospectionResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedTokenIntrospectionResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedTokenIntrospectionResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedUserInfoEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedUserInfoEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedUserInfoSigningAlgorithms": [ + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + ], + "useForceAuthnForMaxAge": false, + "useForceAuthnForPromptLogin": false, + }, + "cibaConfig": { + "cibaAuthReqIdLifetime": 600, + "cibaMinimumPollingInterval": 2, + "supportedCibaSigningAlgorithms": [ + "ES256", + "PS256", + ], + }, + "clientDynamicRegistrationConfig": { + "allowDynamicRegistration": false, + "dynamicClientRegistrationScope": "dynamic_client_registration", + "dynamicClientRegistrationSoftwareStatementRequired": false, + "generateRegistrationAccessTokens": true, + "requiredSoftwareStatementAttestedAttributes": [ + "redirect_uris", + ], + }, + "consent": { + "clientsCanSkipConsent": false, + "enableRemoteConsent": false, + "supportedRcsRequestEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsRequestEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsRequestSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRcsResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsResponseEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsResponseSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "coreOAuth2Config": { + "accessTokenLifetime": 3600, + "accessTokenMayActScript": "[Empty]", + "codeLifetime": 120, + "issueRefreshToken": true, + "issueRefreshTokenOnRefreshedToken": true, + "macaroonTokensEnabled": false, + "oidcMayActScript": "[Empty]", + "refreshTokenLifetime": 604800, + "scopesPolicySet": "oauth2Scopes", + "statelessTokensEnabled": false, + "usePolicyEngineForScope": false, + }, + "coreOIDCConfig": { + "jwtTokenLifetime": 3600, + "oidcDiscoveryEndpointEnabled": false, + "overrideableOIDCClaims": [], + "supportedClaims": [], + "supportedIDTokenEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedIDTokenEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedIDTokenSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "deviceCodeConfig": { + "deviceCodeLifetime": 300, + "devicePollInterval": 5, + "deviceUserCodeCharacterSet": "234567ACDEFGHJKLMNPQRSTWXYZabcdefhijkmnopqrstwxyz", + "deviceUserCodeLength": 8, + }, + "location": "/", + "nextDescendents": [], + "pluginsConfig": { + "accessTokenEnricherClass": "org.forgerock.oauth2.core.plugins.registry.DefaultAccessTokenEnricher", + "accessTokenModificationPluginType": "SCRIPTED", + "accessTokenModificationScript": "d22f9a0c-426a-4466-b95e-d0f125b0d5fa", + "authorizeEndpointDataProviderClass": "org.forgerock.oauth2.core.plugins.registry.DefaultEndpointDataProvider", + "authorizeEndpointDataProviderPluginType": "JAVA", + "authorizeEndpointDataProviderScript": "3f93ef6e-e54a-4393-aba1-f322656db28a", + "evaluateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeEvaluator", + "evaluateScopePluginType": "JAVA", + "evaluateScopeScript": "da56fe60-8b38-4c46-a405-d6b306d4b336", + "oidcClaimsPluginType": "SCRIPTED", + "oidcClaimsScript": "36863ffb-40ec-48b9-94b1-9a99f71cc3b5", + "userCodeGeneratorClass": "org.forgerock.oauth2.core.plugins.registry.DefaultUserCodeGenerator", + "validateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeValidator", + "validateScopePluginType": "JAVA", + "validateScopeScript": "25e6c06d-cf70-473b-bd28-26931edc476b", + }, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/pingOneWorkerService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "pingOneWorkerService": { + "_id": "", + "_type": { + "_id": "pingOneWorkerService", + "collection": false, + "name": "PingOne Worker Service", + }, + "enabled": true, + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/policyconfiguration.service.json 1`] = ` +{ + "meta": Any, + "service": { + "policyconfiguration": { + "_id": "", + "_type": { + "_id": "policyconfiguration", + "collection": false, + "name": "Policy Configuration", + }, + "bindDn": "cn=Directory Manager", + "bindPassword": null, + "checkIfResourceTypeExists": true, + "connectionPoolMaximumSize": 10, + "connectionPoolMinimumSize": 1, + "ldapServer": [ + "localhost:50636", + ], + "location": "/", + "maximumSearchResults": 100, + "mtlsEnabled": false, + "nextDescendents": [], + "policyHeartbeatInterval": 10, + "policyHeartbeatTimeUnit": "SECONDS", + "realmSearchFilter": "(objectclass=sunismanagedorganization)", + "searchTimeout": 5, + "sslEnabled": true, + "subjectsResultTTL": 10, + "userAliasEnabled": false, + "usersBaseDn": "dc=openam,dc=forgerock,dc=org", + "usersSearchAttribute": "uid", + "usersSearchFilter": "(objectclass=inetorgperson)", + "usersSearchScope": "SCOPE_SUB", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/pushNotification.service.json 1`] = ` +{ + "meta": Any, + "service": { + "pushNotification": { + "_id": "", + "_type": { + "_id": "pushNotification", + "collection": false, + "name": "Push Notification Service", + }, + "delegateFactory": "org.forgerock.openam.services.push.sns.SnsHttpDelegateFactory", + "location": "/", + "mdCacheSize": 10000, + "mdConcurrency": 16, + "mdDuration": 120, + "nextDescendents": [], + "region": "us-east-1", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/security.service.json 1`] = ` +{ + "meta": Any, + "service": { + "security": { + "_id": "", + "_type": { + "_id": "security", + "collection": false, + "name": "Legacy User Self Service", + }, + "confirmationIdHmacKey": "YcGfeuzSM14OG5djEcxEnvPydX28nsuxAZyDX1VA8iY=", + "forgotPasswordConfirmationUrl": "http://localhost:8080/am/XUI/confirm.html", + "forgotPasswordEnabled": false, + "forgotPasswordTokenLifetime": 900, + "location": "/", + "nextDescendents": [], + "protectedUserAttributes": [], + "selfRegistrationConfirmationUrl": "http://localhost:8080/am/XUI/confirm.html", + "selfRegistrationEnabled": false, + "selfRegistrationTokenLifetime": 900, + "selfServiceEnabled": false, + "userRegisteredDestination": "default", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/selfService.service.json 1`] = ` +{ + "meta": Any, + "service": { + "selfService": { + "_id": "", + "_type": { + "_id": "selfService", + "collection": false, + "name": "User Self-Service", + }, + "advancedConfig": { + "forgottenPasswordConfirmationUrl": "http://localhost:8080/am/XUI/?realm=\${realm}#passwordReset/", + "forgottenPasswordServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.ForgottenPasswordConfigProvider", + "forgottenUsernameServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.ForgottenUsernameConfigProvider", + "userRegistrationConfirmationUrl": "http://localhost:8080/am/XUI/?realm=\${realm}#register/", + "userRegistrationServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.UserRegistrationConfigProvider", + }, + "forgottenPassword": { + "forgottenPasswordCaptchaEnabled": false, + "forgottenPasswordEmailBody": [ + "en|

Click on this link to reset your password.

", + ], + "forgottenPasswordEmailSubject": [ + "en|Forgotten password email", + ], + "forgottenPasswordEmailVerificationEnabled": true, + "forgottenPasswordEnabled": false, + "forgottenPasswordKbaEnabled": false, + "forgottenPasswordTokenPaddingLength": 450, + "forgottenPasswordTokenTTL": 300, + "numberOfAllowedAttempts": 1, + "numberOfAttemptsEnforced": false, + }, + "forgottenUsername": { + "forgottenUsernameCaptchaEnabled": false, + "forgottenUsernameEmailBody": [ + "en|

Your username is %username%.

", + ], + "forgottenUsernameEmailSubject": [ + "en|Forgotten username email", + ], + "forgottenUsernameEmailUsernameEnabled": true, + "forgottenUsernameEnabled": false, + "forgottenUsernameKbaEnabled": false, + "forgottenUsernameShowUsernameEnabled": false, + "forgottenUsernameTokenTTL": 300, + }, + "generalConfig": { + "captchaVerificationUrl": "https://www.google.com/recaptcha/api/siteverify", + "kbaQuestions": [ + "4|en|What is your mother's maiden name?", + "3|en|What was the name of your childhood pet?", + "2|en|What was the model of your first car?", + "1|en|What is the name of your favourite restaurant?", + ], + "minimumAnswersToDefine": 1, + "minimumAnswersToVerify": 1, + "validQueryAttributes": [ + "uid", + "mail", + "givenName", + "sn", + ], + }, + "location": "/", + "nextDescendents": [], + "profileManagement": { + "profileAttributeWhitelist": [ + "uid", + "telephoneNumber", + "mail", + "kbaInfo", + "givenName", + "sn", + "cn", + ], + "profileProtectedUserAttributes": [ + "telephoneNumber", + "mail", + ], + }, + "userRegistration": { + "userRegisteredDestination": "default", + "userRegistrationCaptchaEnabled": false, + "userRegistrationEmailBody": [ + "en|

Click on this link to register.

", + ], + "userRegistrationEmailSubject": [ + "en|Registration email", + ], + "userRegistrationEmailVerificationEnabled": true, + "userRegistrationEmailVerificationFirstEnabled": false, + "userRegistrationEnabled": false, + "userRegistrationKbaEnabled": false, + "userRegistrationTokenTTL": 300, + "userRegistrationValidUserAttributes": [ + "userPassword", + "mail", + "givenName", + "kbaInfo", + "inetUserStatus", + "sn", + "username", + ], + }, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/selfServiceTrees.service.json 1`] = ` +{ + "meta": Any, + "service": { + "selfServiceTrees": { + "_id": "", + "_type": { + "_id": "selfServiceTrees", + "collection": false, + "name": "Self Service Trees", + }, + "enabled": true, + "location": "/", + "nextDescendents": [], + "treeMapping": { + "forgottenUsername": "PlatformForgottenUsername", + "registration": "PlatformRegistration", + "resetPassword": "PlatformResetPassword", + "updatePassword": "PlatformUpdatePassword", + }, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/socialauthentication.service.json 1`] = ` +{ + "meta": Any, + "service": { + "socialauthentication": { + "_id": "", + "_type": { + "_id": "socialauthentication", + "collection": false, + "name": "Social Authentication Implementations", + }, + "authenticationChains": {}, + "displayNames": {}, + "enabledKeys": [], + "icons": {}, + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/transaction.service.json 1`] = ` +{ + "meta": Any, + "service": { + "transaction": { + "_id": "", + "_type": { + "_id": "transaction", + "collection": false, + "name": "Transaction Authentication Service", + }, + "location": "/", + "nextDescendents": [], + "timeToLive": "180", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/user.service.json 1`] = ` +{ + "meta": Any, + "service": { + "user": { + "_id": "", + "_type": { + "_id": "user", + "collection": false, + "name": "User", + }, + "dynamic": { + "defaultUserStatus": "Active", + }, + "location": "/", + "nextDescendents": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/service/validation.service.json 1`] = ` +{ + "meta": Any, + "service": { + "validation": { + "_id": "", + "_type": { + "_id": "validation", + "collection": false, + "name": "Validation Service", + }, + "location": "/", + "nextDescendents": [], + "validGotoDestinations": [], + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/trustedJwtIssuer/test-jwt-issuer.trustedJwtIssuer.json 1`] = ` +{ + "meta": Any, + "trustedJwtIssuer": { + "test-jwt-issuer": { + "_id": "test-jwt-issuer", + "_type": { + "_id": "TrustedJwtIssuer", + "collection": true, + "name": "OAuth2 Trusted JWT Issuer", + }, + "agentgroup": null, + "allowedSubjects": [], + "consentedScopesClaim": "scope", + "issuer": "hello", + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "resourceOwnerIdentityClaim": "sub", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/trustedJwtIssuer/trusted-jwt.trustedJwtIssuer.json 1`] = ` +{ + "meta": Any, + "trustedJwtIssuer": { + "trusted jwt": { + "_id": "trusted jwt", + "_type": { + "_id": "TrustedJwtIssuer", + "collection": true, + "name": "OAuth2 Trusted JWT Issuer", + }, + "agentgroup": null, + "allowedSubjects": [], + "consentedScopesClaim": "scope", + "issuer": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "resourceOwnerIdentityClaim": "sub", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/webhookService/Cool-Webhook.webhookService.json 1`] = ` +{ + "meta": Any, + "webhookService": { + "Cool Webhook": { + "_id": "Cool Webhook", + "_type": { + "_id": "webhooks", + "collection": true, + "name": "Webhook Service", + }, + "body": "body", + "headers": { + "accept": "*/*", + "cool": "test", + }, + "url": "test", + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/webhookService/Test-Webhook.webhookService.json 1`] = ` +{ + "meta": Any, + "webhookService": { + "Test Webhook": { + "_id": "Test Webhook", + "_type": { + "_id": "webhooks", + "collection": true, + "name": "Webhook Service", + }, + "body": "hello", + "headers": { + "accept": "*/*", + }, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/webhookService/Webhook-2.webhookService.json 1`] = ` +{ + "meta": Any, + "webhookService": { + "Webhook 2": { + "_id": "Webhook 2", + "_type": { + "_id": "webhooks", + "collection": true, + "name": "Webhook Service", + }, + "headers": { + "accept": "*/*", + }, + }, + }, +} +`; + +exports[`frodo config export "frodo config export --realm-only -AD exportAllTestDir10 -m classic": should export all global config into separate files in the directory exportAllTestDir10: exportAllTestDir10/realm/root/wsEntity/ws.wsEntity.json 1`] = ` +{ + "meta": Any, + "wsEntity": { + "ws": { + "_id": "ws", + "_type": { + "_id": "ws", + "collection": true, + "name": "Entity Descriptor ", + }, + }, + }, +} +`; + exports[`frodo config export "frodo config export -AD exportAllTestDir1": should export everything into separate files in the directory exportAllTestDir1 1`] = `0`; exports[`frodo config export "frodo config export -AD exportAllTestDir1": should export everything into separate files in the directory exportAllTestDir1 2`] = `""`; @@ -32,6 +19037,34749 @@ exports[`frodo config export "frodo config export -adND exportAllTestDir6 -m cla exports[`frodo config export "frodo config export -adND exportAllTestDir6 -m classic": should export everything, including default scripts, to a single file 2`] = `""`; +exports[`frodo config export "frodo config export -adND exportAllTestDir6 -m classic": should export everything, including default scripts, to a single file: exportAllTestDir6/all.config.json 1`] = ` +{ + "global": { + "agent": { + "AgentService": { + "_id": "AgentService", + "_type": { + "_id": "AgentService", + "collection": false, + "name": "AgentService", + }, + }, + }, + "authentication": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Core", + }, + "authenticators": [ + "com.sun.identity.authentication.modules.ad.AD", + "org.forgerock.openam.authentication.modules.saml2.SAML2", + "org.forgerock.openam.authentication.modules.social.SocialAuthInstagram", + "org.forgerock.openam.authentication.modules.oath.OATH", + "org.forgerock.openam.authentication.modules.social.SocialAuthVK", + "com.sun.identity.authentication.modules.membership.Membership", + "com.sun.identity.authentication.modules.windowsdesktopsso.WindowsDesktopSSO", + "org.forgerock.openam.authentication.modules.deviceprint.DeviceIdSave", + "com.sun.identity.authentication.modules.federation.Federation", + "org.forgerock.openam.authentication.modules.deviceprint.DeviceIdMatch", + "com.sun.identity.authentication.modules.jdbc.JDBC", + "com.sun.identity.authentication.modules.radius.RADIUS", + "com.sun.identity.authentication.modules.anonymous.Anonymous", + "com.sun.identity.authentication.modules.cert.Cert", + "org.forgerock.openam.authentication.modules.push.registration.AuthenticatorPushRegistration", + "com.sun.identity.authentication.modules.httpbasic.HTTPBasic", + "org.forgerock.openam.authentication.modules.oidc.OpenIdConnect", + "com.sun.identity.authentication.modules.sae.SAE", + "org.forgerock.openam.authentication.modules.social.SocialAuthWeChat", + "org.forgerock.openam.authentication.modules.persistentcookie.PersistentCookie", + "org.forgerock.openam.authentication.modules.social.SocialAuthTwitter", + "com.sun.identity.authentication.modules.ldap.LDAP", + "org.forgerock.openam.authentication.modules.push.AuthenticatorPush", + "org.forgerock.openam.authentication.modules.oauth2.OAuth", + "com.sun.identity.authentication.modules.nt.NT", + "org.forgerock.openam.authentication.modules.social.SocialAuthWeChatMobile", + "org.forgerock.openam.authentication.modules.jwtpop.JwtProofOfPossession", + "com.sun.identity.authentication.modules.application.Application", + "org.forgerock.openam.authentication.modules.scripted.Scripted", + "org.forgerock.openam.authentication.modules.social.SocialAuthOAuth2", + "com.sun.identity.authentication.modules.hotp.HOTP", + "org.forgerock.openam.authentication.modules.adaptive.Adaptive", + "org.forgerock.openam.authentication.modules.accountactivecheck.AccountActiveCheck", + "org.forgerock.openam.authentication.modules.social.SocialAuthOpenID", + "com.sun.identity.authentication.modules.msisdn.MSISDN", + "org.forgerock.openam.authentication.modules.fr.oath.AuthenticatorOATH", + "com.sun.identity.authentication.modules.datastore.DataStore", + "com.sun.identity.authentication.modules.securid.SecurID", + "org.forgerock.openam.authentication.modules.amster.Amster", + ], + "defaults": { + "accountlockout": { + "lockoutDuration": 0, + "lockoutDurationMultiplier": 1, + "lockoutWarnUserCount": 0, + "loginFailureCount": 5, + "loginFailureDuration": 300, + "loginFailureLockoutMode": false, + "storeInvalidAttemptsInDataStore": true, + }, + "core": { + "adminAuthModule": "[Empty]", + "orgConfig": "[Empty]", + }, + "general": { + "defaultAuthLevel": 0, + "identityType": [ + "agent", + "user", + ], + "locale": "en_US", + "statelessSessionsEnabled": false, + "twoFactorRequired": false, + "userStatusCallbackPlugins": [], + }, + "postauthprocess": { + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [ + "/am/console", + ], + "userAttributeSessionMapping": [], + "usernameGeneratorClass": "com.sun.identity.authentication.spi.DefaultUserIDGenerator", + "usernameGeneratorEnabled": true, + }, + "security": { + "addClearSiteDataHeader": true, + "moduleBasedAuthEnabled": true, + "sharedSecret": null, + "zeroPageLoginAllowedWithoutReferrer": true, + "zeroPageLoginEnabled": false, + "zeroPageLoginReferrerWhiteList": [], + }, + "trees": { + "authenticationSessionsMaxDuration": 5, + "authenticationSessionsStateManagement": "JWT", + "authenticationSessionsWhitelist": false, + "authenticationTreeCookieHttpOnly": true, + "suspendedAuthenticationTimeout": 5, + }, + "userprofile": { + "aliasAttributeName": [], + "defaultRole": [], + "dynamicProfileCreation": "false", + }, + }, + "keepPostProcessInstances": false, + "ldapConnectionPoolDefaultSize": "1:10", + "ldapConnectionPoolSize": [], + "remoteAuthSecurityEnabled": false, + }, + "authenticationChains": { + "EMPTY": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Authentication Configuration", + }, + "dynamic": { + "authChainConfiguration": "[Empty]", + }, + }, + }, + "authenticationTreesConfiguration": { + "EMPTY": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Authentication Trees Configuration", + }, + }, + }, + "nodeTypes": { + "8ab9f1aad4b4460a9c45d15fb148e221-1": { + "_id": "8ab9f1aad4b4460a9c45d15fb148e221-1", + "description": "Debug node that displays the shared and transient state of the journey for debugging purposes.", + "displayName": "Display State", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome", + ], + "outputs": [], + "properties": { + "displayFormat": { + "defaultValue": "TABLE", + "description": "The format in which to display the states.", + "multivalued": false, + "options": { + "JSON": "Raw JSON", + "TABLE": "HTML Table", + }, + "required": true, + "title": "Display Format", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + OUTCOME: "outcome" +}; + +function main() { + if (!callbacks.isEmpty()) { + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + var keySet = nodeState.keys(); // Java Set + var keys = Array.from(keySet); // Make it into JavaScript array + debugState = {}; + for (var i in keys) { + var k = new String(keys[i]); + var item = nodeState.get(k); + if (typeof item === "object") { + debugState[k] = nodeState.getObject(k); + } else { + debugState[k] = nodeState.get(k); + } + } + if (properties.displayFormat === "JSON") { + callbacksBuilder.textOutputCallback(0, \`
\${JSON.stringify(debugState, null, 2)}
\`); + return; + } + callbacksBuilder.textOutputCallback(0, \`\${Array.from(Object.keys(debugState).map(k => \`\`))}
KeyValue
\${k}
\${debugState[k]}
\`); +} + +main(); +", + "serviceName": "8ab9f1aad4b4460a9c45d15fb148e221", + "tags": [ + "debug", + "testing", + ], + }, + "c15e2efb3deb4d4ea338c74a6440b69f-1": { + "_id": "c15e2efb3deb4d4ea338c74a6440b69f-1", + "description": "Simple ALU that performs basic binary vector math operations. Outputs the result onto the shared state with key "c".", + "displayName": "Vector ALU", + "errorOutcome": true, + "inputs": [], + "outcomes": [ + "Success", + ], + "outputs": [ + "c", + ], + "properties": { + "a": { + "defaultValue": [ + 1, + 2, + 3, + ], + "description": "Left vector operand", + "multivalued": true, + "required": true, + "title": "A", + "type": "NUMBER", + }, + "b": { + "defaultValue": [ + 4, + 5, + 6, + ], + "description": "Right vector operand", + "multivalued": true, + "required": true, + "title": "B", + "type": "NUMBER", + }, + "operator": { + "defaultValue": "DOT", + "description": "The binary operation to perform on the vectors.", + "multivalued": false, + "options": { + "ADD": "+", + "CROSS": "X", + "DOT": ".", + "SUBTRACT": "-", + }, + "required": true, + "title": "Operator", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + SUCCESS: 'Success' +}; + +var OPERATORS = { + ADD: "ADD", + SUBTRACT: "SUBTRACT", + DOT: "DOT", + CROSS: "CROSS" +} + +function add(a, b) { + return a.map((v, i) => v + b[i]); +} + +function subtract(a, b) { + return a.map((v, i) => v - b[i]); +} + +function dot(a, b) { + return a.reduce((sum, v, i) => sum + v * b[i], 0); +} + +function cross(a, b) { + return [ + a[1] * b[2] - a[2] * b[1], + a[2] * b[0] - a[0] * b[2], + a[0] * b[1] - a[1] * b[0] + ]; +} + +function main() { + if (properties.a.length !== properties.b.length) throw new Error("Vectors not the same dimension."); + switch (properties.operator) { + case OPERATORS.ADD: + nodeState.putShared("c", add(properties.a, properties.b)); + break; + case OPERATORS.SUBTRACT: + nodeState.putShared("c", subtract(properties.a, properties.b)); + break; + case OPERATORS.DOT: + nodeState.putShared("c", dot(properties.a, properties.b)); + break; + case OPERATORS.CROSS: + if (properties.a.length !== 3) throw new Error("Vectors not dimension 3 for cross product"); + nodeState.putShared("c", cross(properties.a, properties.b)); + break; + default: throw new Error("Unknown operator."); + } + action.goTo(SCRIPT_OUTCOMES.SUCCESS); +} + +main(); +", + "serviceName": "c15e2efb3deb4d4ea338c74a6440b69f", + "tags": [ + "math", + "vector", + "utilities", + ], + }, + "c605506774a848f7877b4d17a453bd39-1": { + "_id": "c605506774a848f7877b4d17a453bd39-1", + "description": "Checks if the user has a current session.", + "displayName": "Has Session", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": {}, + "script": "var SCRIPT_OUTCOMES = { + TRUE: 'True', + FALSE: 'False' +} + +function main() { + action.goTo(typeof existingSession === "undefined" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE); +} + +main(); +", + "serviceName": "c605506774a848f7877b4d17a453bd39", + "tags": [ + "utilities", + ], + }, + "c6063fb2f5dc42dd9772bedc93898bd8-1": { + "_id": "c6063fb2f5dc42dd9772bedc93898bd8-1", + "description": "Simple ALU that performs basic binary math operations. Expects an "x" and "y" value on the shared state, and will produce a new "z" value on the shared state as output.", + "displayName": "ALU", + "errorOutcome": true, + "inputs": [ + "x", + "y", + ], + "outcomes": [ + "Success", + ], + "outputs": [ + "z", + ], + "properties": { + "operator": { + "defaultValue": "ADD", + "description": "The operation to perform.", + "multivalued": false, + "options": { + "ADD": "+", + "DIVIDE": "/", + "MULTIPLY": "*", + "SUBTRACT": "-", + }, + "required": true, + "title": "Operator", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + SUCCESS: 'Success' +}; + +var OPERATORS = { + ADD: "ADD", + SUBTRACT: "SUBTRACT", + MULTIPLY: "MULTIPLY", + DIVIDE: "DIVIDE" +} + +function main() { + var a = Number(properties.a); + var b = Number(properties.b); + switch (properties.operator) { + case OPERATORS.ADD: + nodeState.putShared("z", a + b); + break; + case OPERATORS.SUBTRACT: + nodeState.putShared("z", a - b); + break; + case OPERATORS.MULTIPLY: + nodeState.putShared("z", a * b); + break; + case OPERATORS.DIVIDE: + if (b == 0) throw new Error("Cannot divide by 0"); + nodeState.putShared("z", a / b); + break; + default: throw new Error("Unknown operator."); + } + action.goTo(SCRIPT_OUTCOMES.SUCCESS); +} + +main(); +", + "serviceName": "c6063fb2f5dc42dd9772bedc93898bd8", + "tags": [ + "math", + "utilities", + ], + }, + "e5ad0110c8ee4dafaae983003cd05d4a-1": { + "_id": "e5ad0110c8ee4dafaae983003cd05d4a-1", + "description": "Generate a signed JWT using the HMAC SHA-256 algorithm.", + "displayName": "Generate JWT", + "errorOutcome": true, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": { + "audience": { + "description": "The audience (aud) claim", + "multivalued": false, + "required": true, + "title": "Audience", + "type": "STRING", + }, + "issuer": { + "description": "The issuer (iss) claim", + "multivalued": false, + "required": true, + "title": "Issuer", + "type": "STRING", + }, + "signingkey": { + "defaultValue": "esv.signing.key", + "description": "The secret label for the HMAC signing key", + "multivalued": false, + "required": true, + "title": "HMAC Signing Key", + "type": "STRING", + }, + "validity": { + "defaultValue": 5, + "description": "", + "multivalued": false, + "required": true, + "title": "Validity (minutes)", + "type": "NUMBER", + }, + }, + "script": "var aud = properties.audience; +var iss = properties.issuer; +var validity = properties.validity; +var esv = properties.signingkey; + +var signingkey = systemEnv.getProperty(esv); + +var username = nodeState.get("username"); + +var data = { + jwtType:"SIGNED", + jwsAlgorithm: "HS256", + issuer: iss, + subject: username, + audience: aud, + type: "JWT", + validityMinutes: validity, + signingKey: signingkey +}; + +var jwt = jwtAssertion.generateJwt(data); + +if (jwt !== null && jwt.length > 0) { + nodeState.putShared("assertionJwt" , jwt); + action.goTo("True"); +} else { + action.goTo("False"); +} +", + "serviceName": "e5ad0110c8ee4dafaae983003cd05d4a", + "tags": [ + "Utilities", + "utilities", + ], + }, + "ef81b1a52c914710b3388caebfe7233a-1": { + "_id": "ef81b1a52c914710b3388caebfe7233a-1", + "description": "Displays custom callback to the page", + "displayName": "Display Callback", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome", + ], + "outputs": [], + "properties": { + "callback": { + "description": "The callback to display", + "multivalued": false, + "options": { + "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK": "booleanAttributeInputCallback", + "CHOICE_CALLBACK": "choiceCallback", + "CONFIRMATION_CALLBACK": "confirmationCallback", + "CONSENT_MAPPING_CALLBACK": "consentMappingCallback", + "DEVICE_PROFILE_CALLBACK": "deviceProfileCallback", + "HIDDEN_VALUE_CALLBACK": "hiddenValueCallback", + "HTTP_CALLBACK": "httpCallback", + "IDP_CALLBACK": "idPCallback", + "KBA_CREATE_CALLBACK": "kbaCreateCallback", + "LANGUAGE_CALLBACK": "languageCallback", + "METADATA_CALLBACK": "metadataCallback", + "NAME_CALLBACK": "nameCallback", + "NUMBER_ATTRIBUTE_INPUT_CALLBACK": "numberAttributeInputCallback", + "PASSWORD_CALLBACK": "passwordCallback", + "POLLING_WAIT_CALLBACK": "pollingWaitCallback", + "REDIRECT_CALLBACK": "redirectCallback", + "SCRIPT_TEXT_OUTPUT_CALLBACK": "scriptTextOutputCallback", + "SELECT_IDP_CALLBACK": "selectIdPCallback", + "STRING_ATTRIBUTE_INPUT_CALLBACK": "stringAttributeInputCallback", + "SUSPENDED_TEXT_OUTPUT_CALLBACK": "suspendedTextOutputCallback", + "TERMS_AND_CONDITIONS_CALLBACK": "termsAndConditionsCallback", + "TEXT_INPUT_CALLBACK": "textInputCallback", + "TEXT_OUTPUT_CALLBACK": "textOutputCallback", + "VALIDATED_PASSWORD_CALLBACK": "validatedPasswordCallback", + "VALIDATED_USERNAME_CALLBACK": "validatedUsernameCallback", + "X509_CERTIFICATE_CALLBACK": "x509CertificateCallback", + }, + "required": true, + "title": "Callback", + "type": "STRING", + }, + "objectSharedProperty": { + "description": "The objectAttributes property on the shared state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Shared Property", + "type": "STRING", + }, + "objectTransientProperty": { + "description": "The objectAttributes property on the transient state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Transient Property", + "type": "STRING", + }, + "options": { + "description": "The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). + +For example, for textOutputCallback, the options could be: { messageType: 0, message: "Hello World!" }. + +Note that for required parameters that are not specified in the options will use default values based on the type of the parameter ("" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).", + "multivalued": false, + "required": true, + "title": "Options", + "type": "OBJECT", + }, + "sharedProperty": { + "description": "The shared state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Shared State Property", + "type": "STRING", + }, + "transientProperty": { + "description": "The transient state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Transient State Property", + "type": "STRING", + }, + }, + "script": "var SCRIPT_OUTCOMES = { + OUTCOME: 'outcome' +}; + +var CALLBACKS = { + BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK", + CHOICE_CALLBACK: "CHOICE_CALLBACK", + CONFIRMATION_CALLBACK: "CONFIRMATION_CALLBACK", + CONSENT_MAPPING_CALLBACK: "CONSENT_MAPPING_CALLBACK", + DEVICE_PROFILE_CALLBACK: "DEVICE_PROFILE_CALLBACK", + HIDDEN_VALUE_CALLBACK: "HIDDEN_VALUE_CALLBACK", + HTTP_CALLBACK: "HTTP_CALLBACK", + IDP_CALLBACK: "IDP_CALLBACK", + KBA_CREATE_CALLBACK: "KBA_CREATE_CALLBACK", + LANGUAGE_CALLBACK: "LANGUAGE_CALLBACK", + METADATA_CALLBACK: "METADATA_CALLBACK", + NAME_CALLBACK: "NAME_CALLBACK", + NUMBER_ATTRIBUTE_INPUT_CALLBACK: "NUMBER_ATTRIBUTE_INPUT_CALLBACK", + PASSWORD_CALLBACK: "PASSWORD_CALLBACK", + POLLING_WAIT_CALLBACK: "POLLING_WAIT_CALLBACK", + REDIRECT_CALLBACK: "REDIRECT_CALLBACK", + SCRIPT_TEXT_OUTPUT_CALLBACK: "SCRIPT_TEXT_OUTPUT_CALLBACK", + SELECT_IDP_CALLBACK: "SELECT_IDP_CALLBACK", + STRING_ATTRIBUTE_INPUT_CALLBACK: "STRING_ATTRIBUTE_INPUT_CALLBACK", + SUSPENDED_TEXT_OUTPUT_CALLBACK: "SUSPENDED_TEXT_OUTPUT_CALLBACK", + TERMS_AND_CONDITIONS_CALLBACK: "TERMS_AND_CONDITIONS_CALLBACK", + TEXT_INPUT_CALLBACK: "TEXT_INPUT_CALLBACK", + TEXT_OUTPUT_CALLBACK: "TEXT_OUTPUT_CALLBACK", + VALIDATED_PASSWORD_CALLBACK: "VALIDATED_PASSWORD_CALLBACK", + VALIDATED_USERNAME_CALLBACK: "VALIDATED_USERNAME_CALLBACK", + X509_CERTIFICATE_CALLBACK: "X509_CERTIFICATE_CALLBACK" +} + +function isStringPresent(value) { + return value; +} + +function getString(value) { + return value || ''; +} + +function isArrayPresent(value) { + return value; +} + +function getArray(value) { + return value ? JSON.parse(value) : []; +} + +function isObjectPresent(value) { + return value; +} + +function getObject(value) { + return value ? JSON.parse(value) : {}; +} + +function isIntPresent(value) { + return value; +} + +function getInt(value) { + return value ? parseInt(value) : 0; +} + +function isDoublePresent(value) { + return value; +} + +function getDouble(value) { + return value ? parseFloat(value) : 0.0; +} + +function isBooleanPresent(value) { + return value; +} + +function getBoolean(value) { + return value ? value.toLowerCase() === 'true' : false; +} + +function setProperty(value) { + if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value); + if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value); + if (properties.objectSharedProperty) { + var attributes = {}; + attributes[properties.objectSharedProperty] = value; + nodeState.mergeShared({ + objectAttributes: attributes + }); + } + if (properties.objectTransientProperty) { + var attributes = {}; + attributes[properties.objectTransientProperty] = value; + nodeState.mergeTransient({ + objectAttributes: attributes + }); + } +} + +function booleanAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getBoolean(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required); + } +} + +function choiceCallback() { + var prompt = getString(properties.options.prompt); + var choices = getArray(properties.options.choices); + var defaultChoice = getInt(properties.options.defaultChoice); + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed); +} + +function confirmationCallback() { + var prompt = getString(properties.options.prompt); + var messageType = getInt(properties.options.messageType); + var options = getArray(properties.options.options); + var optionType = getInt(properties.options.optionType); + var defaultOption = getInt(properties.options.defaultOption); + if (isStringPresent(properties.options.prompt)) { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption); + } + } else { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(messageType, options, defaultOption); + } + } +} + +function consentMappingCallback() { + var config = getObject(properties.options.config); + var message = getString(properties.options.message); + var isRequired = getBoolean(properties.options.isRequired); + var name = getString(properties.options.name); + var displayName = getString(properties.options.displayName); + var icon = getString(properties.options.icon); + var accessLevel = getString(properties.options.accessLevel); + var titles = getArray(properties.options.titles); + if (isObjectPresent(properties.options.prompt)) { + callbacksBuilder.consentMappingCallback(config, message, isRequired); + } else { + callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired); + } +} + +function deviceProfileCallback() { + var metadata = getBoolean(properties.options.metadata); + var location = getBoolean(properties.options.location); + var message = getString(properties.options.message); + callbacksBuilder.deviceProfileCallback(metadata, location, message); +} + +function hiddenValueCallback() { + var id = getString(properties.options.id); + var value = getString(properties.options.value); + callbacksBuilder.hiddenValueCallback(id, value); +} + +function httpCallback() { + var authorizationHeader = getString(properties.options.authorizationHeader); + var negotiationHeader = getString(properties.options.negotiationHeader); + var authRHeader = getString(properties.options.authRHeader); + var negoName = getString(properties.options.negoName); + var negoValue = getString(properties.options.negoValue); + if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) { + var errorCode = getString(properties.options.errorCode); + callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode); + } else { + var errorCode = getInt(properties.options.errorCode); + callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode); + } +} + +function idPCallback() { + var provider = getString(properties.options.provider); + var clientId = getString(properties.options.clientId); + var redirectUri = getString(properties.options.redirectUri); + var scope = getArray(properties.options.scope); + var nonce = getString(properties.options.nonce); + var request = getString(properties.options.request); + var requestUri = getString(properties.options.requestUri); + var acrValues = getArray(properties.options.acrValues); + var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo); + var token = getString(properties.options.token); + var tokenType = getString(properties.options.tokenType); + if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType); + } else { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo); + } +} + +function kbaCreateCallback() { + var prompt = getString(properties.options.prompt); + var predefinedQuestions = getArray(properties.options.predefinedQuestions); + var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions); + callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions); +} + +function languageCallback() { + var language = getString(properties.options.language); + var country = getString(properties.options.country); + callbacksBuilder.languageCallback(language, country); +} + +function metadataCallback() { + var outputValue = getObject(properties.options.outputValue); + callbacksBuilder.metadataCallback(outputValue); +} + +function nameCallback() { + var prompt = getString(properties.options.prompt); + var defaultName = getString(properties.options.defaultName); + if (isStringPresent(properties.options.defaultName)) { + callbacksBuilder.nameCallback(prompt, defaultName); + } else { + callbacksBuilder.nameCallback(prompt); + } +} + +function numberAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getDouble(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required); + } +} + +function passwordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + callbacksBuilder.passwordCallback(prompt, echoOn); +} + +function pollingWaitCallback() { + var waitTime = getString(properties.options.waitTime); + var message = getString(properties.options.message); + callbacksBuilder.pollingWaitCallback(waitTime, message); +} + +function redirectCallback() { + throw new Error('Not Implemented'); +} + +function scriptTextOutputCallback() { + var message = getString(properties.options.message); + callbacksBuilder.scriptTextOutputCallback(message); +} + +function selectIdPCallback() { + var providers = getObject(properties.options.providers); + callbacksBuilder.selectIdPCallback(providers); +} + +function stringAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getString(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required); + } +} + +function suspendedTextOutputCallback() { + var messageType = getInt(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.suspendedTextOutputCallback(messageType, message); +} + +function termsAndConditionsCallback() { + var version = getString(properties.options.version); + var terms = getString(properties.options.terms); + var createDate = getString(properties.options.createDate); + callbacksBuilder.termsAndConditionsCallback(version, terms, createDate); +} + +function textInputCallback() { + var prompt = getString(properties.options.prompt); + var defaultText = getString(properties.options.defaultText); + if (isStringPresent(properties.options.defaultText)) { + callbacksBuilder.textInputCallback(prompt, defaultText); + } else { + callbacksBuilder.textInputCallback(prompt); + } +} + +function textOutputCallback() { + var messageType = getString(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.textOutputCallback(messageType, message); +} + +function validatedPasswordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly); + } +} + +function validatedUsernameCallback() { + var prompt = getString(properties.options.prompt); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly); + } +} + +function x509CertificateCallback() { + throw new Error('Not Implemented'); +} + +function getBooleanAttributeInputCallback() { + setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0)); +} + +function getChoiceCallback() { + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + var selections = callbacks.getChoiceCallbacks().get(0); + setProperty(multipleSelectionsAllowed ? selections : selections[0]); +} + +function getConfirmationCallback() { + setProperty(callbacks.getConfirmationCallbacks().get(0)); +} + +function getConsentMappingCallback() { + setProperty(callbacks.getConsentMappingCallbacks().get(0)); +} + +function getDeviceProfileCallback() { + setProperty(callbacks.getDeviceProfileCallbacks().get(0)); +} + +function getHiddenValueCallback() { + var id = getString(properties.options.id); + setProperty(callbacks.getHiddenValueCallbacks().get(id)); +} + +function getHttpCallback() { + setProperty(callbacks.getHttpCallbacks().get(0)); +} + +function getIdPCallback() { + setProperty(callbacks.getIdpCallbacks().get(0)); +} + +function getKbaCreateCallback() { + setProperty(callbacks.getKbaCreateCallbacks().get(0)); +} + +function getLanguageCallback() { + setProperty(callbacks.getLanguageCallbacks().get(0)); +} + +function getNameCallback() { + setProperty(callbacks.getNameCallbacks().get(0)); +} + +function getNumberAttributeInputCallback() { + setProperty(callbacks.getNumberAttributeInputCallbacks().get(0)); +} + +function getPasswordCallback() { + setProperty(callbacks.getPasswordCallbacks().get(0)); +} + +function getSelectIdPCallback() { + setProperty(callbacks.getSelectIdPCallbacks().get(0)); +} + +function getStringAttributeInputCallback() { + setProperty(callbacks.getStringAttributeInputCallbacks().get(0)); +} + +function getTermsAndConditionsCallback() { + setProperty(callbacks.getTermsAndConditionsCallbacks().get(0)); +} + +function getTextInputCallback() { + setProperty(callbacks.getTextInputCallbacks().get(0)); +} + +function getValidatedPasswordCallback() { + setProperty(callbacks.getValidatedPasswordCallbacks().get(0)); +} + +function getValidatedUsernameCallback() { + setProperty(callbacks.getValidatedUsernameCallbacks().get(0)); +} + +function getX509CertificateCallback() { + setProperty(callbacks.getX509CertificateCallbacks().get(0)); +} + +function main() { + if (!callbacks.isEmpty()) { + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break; + case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break; + case CALLBACKS.NAME_CALLBACK: getNameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break; + default: break; + } + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: httpCallback(); break; + case CALLBACKS.IDP_CALLBACK: idPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break; + case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break; + case CALLBACKS.NAME_CALLBACK: nameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break; + case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break; + case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break; + case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break; + case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break; + case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break; + default: throw new Error('Unknown Callback'); // Should never reach this case + } +} + +main(); +", + "serviceName": "ef81b1a52c914710b3388caebfe7233a", + "tags": [ + "callback", + "utilities", + ], + }, + "session-1": { + "_id": "session-1", + "description": "Checks if the user has a current session.", + "displayName": "Has Session AM", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": {}, + "script": "var SCRIPT_OUTCOMES = { + TRUE: 'True', + FALSE: 'False' +} + +function main() { + action.goTo(typeof existingSession === "undefined" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE); +} + +main(); +", + "serviceName": "session", + "tags": [ + "utilities", + ], + }, + }, + "realm": { + "L2ZpcnN0": { + "_id": "L2ZpcnN0", + "active": true, + "aliases": [ + "one", + "dnsfirst", + ], + "name": "first", + "parentPath": "/", + }, + "L2ZpcnN0L3NlY29uZA": { + "_id": "L2ZpcnN0L3NlY29uZA", + "active": false, + "aliases": [ + "secondDNS", + "second", + ], + "name": "second", + "parentPath": "/first", + }, + "Lw": { + "_id": "Lw", + "active": true, + "aliases": [ + "localhost", + "openam-frodo-dev.classic.com", + "openam", + "testurl.com", + ], + "name": "/", + "parentPath": "", + }, + }, + "scripttype": { + "AUTHENTICATION_CLIENT_SIDE": { + "_id": "AUTHENTICATION_CLIENT_SIDE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "AUTHENTICATION_CLIENT_SIDE", + "allowLists": {}, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "[Empty]", + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "AUTHENTICATION_SERVER_SIDE": { + "_id": "AUTHENTICATION_SERVER_SIDE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "AUTHENTICATION_SERVER_SIDE", + "allowLists": { + "1.0": [ + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.HashMap$KeyIterator", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.openam.authentication.modules.scripted.*", + "org.forgerock.openam.core.rest.devices.deviceprint.DeviceIdDao", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.HashMap$KeyIterator", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.openam.authentication.modules.scripted.*", + "org.forgerock.openam.core.rest.devices.deviceprint.DeviceIdDao", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "7e3d7067-d50f-4674-8c76-a3e13a810c33", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.HashMap$KeyIterator", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.openam.authentication.modules.scripted.*", + "org.forgerock.openam.core.rest.devices.deviceprint.DeviceIdDao", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "AUTHENTICATION_TREE_DECISION_NODE": { + "_id": "AUTHENTICATION_TREE_DECISION_NODE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "AUTHENTICATION_TREE_DECISION_NODE", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.concurrent.TimeUnit", + "java.util.Collections$*", + "java.util.HashSet", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "ch.qos.logback.classic.Logger", + "org.forgerock.util.promise.Promises$*", + "com.sun.proxy.$*", + "java.util.Date", + "java.security.spec.InvalidKeySpecException", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + "2.0", + ], + }, + }, + "defaultScript": "01e1a3c0-038b-4c16-956a-6c9d89328cff", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "CONFIG_PROVIDER_NODE": { + "_id": "CONFIG_PROVIDER_NODE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "CONFIG_PROVIDER_NODE", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "5e854779-6ec1-4c39-aeba-0477e0986646", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$*", + "java.util.ArrayList", + "java.util.Collections", + "java.util.Collections$*", + "java.util.concurrent.TimeUnit", + "java.util.concurrent.ExecutionException", + "java.util.concurrent.TimeoutException", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.security.KeyPair", + "java.security.KeyPairGenerator", + "java.security.KeyPairGenerator$*", + "java.security.PrivateKey", + "java.security.PublicKey", + "java.security.spec.InvalidKeySpecException", + "java.security.spec.X509EncodedKeySpec", + "java.security.spec.MGF1ParameterSpec", + "javax.crypto.SecretKeyFactory", + "javax.crypto.spec.OAEPParameterSpec", + "javax.crypto.spec.PBEKeySpec", + "javax.crypto.spec.PSource", + "javax.crypto.spec.PSource$*", + "javax.security.auth.callback.NameCallback", + "javax.security.auth.callback.PasswordCallback", + "javax.security.auth.callback.ChoiceCallback", + "javax.security.auth.callback.ConfirmationCallback", + "javax.security.auth.callback.LanguageCallback", + "javax.security.auth.callback.TextInputCallback", + "javax.security.auth.callback.TextOutputCallback", + "com.sun.crypto.provider.PBKDF2KeyImpl", + "com.sun.identity.authentication.callbacks.HiddenValueCallback", + "com.sun.identity.authentication.callbacks.ScriptTextOutputCallback", + "com.sun.identity.authentication.spi.HttpCallback", + "com.sun.identity.authentication.spi.MetadataCallback", + "com.sun.identity.authentication.spi.RedirectCallback", + "com.sun.identity.authentication.spi.X509CertificateCallback", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "org.forgerock.http.protocol.Cookie", + "org.forgerock.http.header.*", + "org.forgerock.http.header.authorization.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.json.JsonValue", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.auth.node.api.Action", + "org.forgerock.openam.auth.node.api.Action$ActionBuilder", + "org.forgerock.openam.authentication.callbacks.IdPCallback", + "org.forgerock.openam.authentication.callbacks.PollingWaitCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedPasswordCallback", + "org.forgerock.openam.authentication.callbacks.ValidatedUsernameCallback", + "org.forgerock.openam.core.rest.authn.callbackhandlers.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.core.rest.devices.profile.DeviceProfilesDao", + "org.forgerock.openam.scripting.idrepo.ScriptIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.scripting.api.secrets.Secret", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openam.auth.node.api.NodeState", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "org.mozilla.javascript.ConsString", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.openam.authentication.callbacks.BooleanAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.NumberAttributeInputCallback", + "org.forgerock.openam.authentication.callbacks.StringAttributeInputCallback", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "LIBRARY": { + "_id": "LIBRARY", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "LIBRARY", + "allowLists": { + "1.0": [ + "java.lang.Float", + "org.forgerock.http.protocol.Header", + "java.lang.Integer", + "org.forgerock.http.Client", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Long", + "java.lang.Short", + "java.util.Map", + "org.forgerock.http.client.*", + "java.lang.Math", + "org.forgerock.opendj.ldap.Dn", + "java.lang.Byte", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "java.lang.StrictMath", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.http.Context", + "java.lang.Void", + "org.codehaus.groovy.runtime.GStringImpl", + "groovy.json.JsonSlurper", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.context.RootContext", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "java.util.List", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Responses", + "org.forgerock.util.promise.Promise", + "java.util.HashMap$KeyIterator", + "com.sun.identity.shared.debug.Debug", + "java.lang.Double", + "org.forgerock.http.protocol.Headers", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.http.protocol.Status", + "java.util.HashMap", + "java.lang.Character$Subset", + "java.util.TreeSet", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.LinkedHashMap", + "org.forgerock.http.protocol.ResponseException", + "java.util.Collections$UnmodifiableRandomAccessList", + "org.forgerock.http.protocol.Message", + "java.lang.Boolean", + "java.lang.String", + "java.lang.Number", + "java.util.LinkedList", + "java.util.LinkedHashSet", + "org.forgerock.http.protocol.Response", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.TreeMap", + "java.util.Collections$EmptyList", + "org.forgerock.openam.scripting.api.ScriptedSession", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.http.Handler", + "java.lang.Object", + "org.forgerock.http.protocol.Form", + "jdk.proxy*", + ], + "2.0": [ + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "JAVASCRIPT": [ + "2.0", + ], + }, + }, + "defaultScript": "[Empty]", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.lang.Class", + "java.security.AccessController", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Float", + "org.forgerock.http.protocol.Header", + "java.lang.Integer", + "org.forgerock.http.Client", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Long", + "java.lang.Short", + "java.util.Map", + "org.forgerock.http.client.*", + "java.lang.Math", + "org.forgerock.opendj.ldap.Dn", + "java.lang.Byte", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "java.lang.StrictMath", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.http.Context", + "java.lang.Void", + "org.codehaus.groovy.runtime.GStringImpl", + "groovy.json.JsonSlurper", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.context.RootContext", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "java.util.List", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Responses", + "org.forgerock.util.promise.Promise", + "java.util.HashMap$KeyIterator", + "com.sun.identity.shared.debug.Debug", + "java.lang.Double", + "org.forgerock.http.protocol.Headers", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.http.protocol.Status", + "java.util.HashMap", + "java.lang.Character$Subset", + "java.util.TreeSet", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.LinkedHashMap", + "org.forgerock.http.protocol.ResponseException", + "java.util.Collections$UnmodifiableRandomAccessList", + "org.forgerock.http.protocol.Message", + "java.lang.Boolean", + "java.lang.String", + "java.lang.Number", + "java.util.LinkedList", + "java.util.LinkedHashSet", + "org.forgerock.http.protocol.Response", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.TreeMap", + "java.util.Collections$EmptyList", + "org.forgerock.openam.scripting.api.ScriptedSession", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.http.Handler", + "java.lang.Object", + "org.forgerock.http.protocol.Form", + ], + }, + "languages": [ + "JAVASCRIPT", + ], + }, + "OAUTH2_ACCESS_TOKEN_MODIFICATION": { + "_id": "OAUTH2_ACCESS_TOKEN_MODIFICATION", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_ACCESS_TOKEN_MODIFICATION", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "d22f9a0c-426a-4466-b95e-d0f125b0d5fa", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER": { + "_id": "OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_AUTHORIZE_ENDPOINT_DATA_PROVIDER", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "3f93ef6e-e54a-4393-aba1-f322656db28a", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_EVALUATE_SCOPE": { + "_id": "OAUTH2_EVALUATE_SCOPE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_EVALUATE_SCOPE", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "da56fe60-8b38-4c46-a405-d6b306d4b336", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_MAY_ACT": { + "_id": "OAUTH2_MAY_ACT", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_MAY_ACT", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.oauth2.core.tokenexchange.ExchangeableToken", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.OpenIdConnectToken", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.oauth2.core.tokenexchange.ExchangeableToken", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.OpenIdConnectToken", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "[Empty]", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.StatefulAccessToken", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.oauth2.core.tokenexchange.ExchangeableToken", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.grantset.Authorization$ModifiedAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.oauth2.token.stateless.StatelessAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.OpenIdConnectToken", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_SCRIPTED_JWT_ISSUER": { + "_id": "OAUTH2_SCRIPTED_JWT_ISSUER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_SCRIPTED_JWT_ISSUER", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.TrustedJwtIssuerConfig", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.TrustedJwtIssuerConfig", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "400e48ba-3f13-4144-ac7b-f824ea8e98c5", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.TrustedJwtIssuerConfig", + "org.forgerock.oauth2.core.exceptions.ServerException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OAUTH2_VALIDATE_SCOPE": { + "_id": "OAUTH2_VALIDATE_SCOPE", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OAUTH2_VALIDATE_SCOPE", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.InvalidScopeException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.InvalidScopeException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "25e6c06d-cf70-473b-bd28-26931edc476b", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.exceptions.InvalidScopeException", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "OIDC_CLAIMS": { + "_id": "OIDC_CLAIMS", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "OIDC_CLAIMS", + "allowLists": { + "1.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + "2.0": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "36863ffb-40ec-48b9-94b1-9a99f71cc3b5", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.google.common.collect.Sets$1", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.net.URI", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.Collections$UnmodifiableMap", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableSet", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.List", + "java.util.Locale", + "java.util.Map", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.*", + "org.forgerock.json.JsonValue", + "org.forgerock.macaroons.Macaroon", + "org.forgerock.oauth.clients.oidc.Claim", + "org.forgerock.oauth2.core.GrantType", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.oauth2.core.exceptions.InvalidRequestException", + "org.forgerock.openam.oauth2.OpenAMAccessToken", + "org.forgerock.openam.oauth2.token.macaroon.MacaroonAccessToken", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentityRepository", + "org.forgerock.openam.scripting.api.secrets.ScriptedSecrets", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.opendj.ldap.Dn", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.openidconnect.Claim", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "POLICY_CONDITION": { + "_id": "POLICY_CONDITION", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "POLICY_CONDITION", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "java.util.Collections$EmptyList", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "9de3eb62-f131-4fac-a294-7bd170fd4acb", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.ArrayList", + "java.util.HashSet", + "java.util.HashMap", + "java.util.HashMap$KeyIterator", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "com.sun.identity.shared.debug.Debug", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.Client", + "org.forgerock.http.Handler", + "org.forgerock.http.Context", + "org.forgerock.http.context.RootContext", + "java.util.Collections$EmptyList", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Form", + "org.forgerock.http.protocol.Header", + "org.forgerock.http.protocol.Headers", + "org.forgerock.http.protocol.Message", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.RequestCookies", + "org.forgerock.http.protocol.Response", + "org.forgerock.http.protocol.ResponseException", + "org.forgerock.http.protocol.Responses", + "org.forgerock.http.protocol.Status", + "org.forgerock.util.promise.NeverThrowsException", + "org.forgerock.util.promise.Promise", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.identity.ScriptedIdentity", + "org.forgerock.openam.scripting.api.ScriptedSession", + "groovy.json.JsonSlurper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SAML2_IDP_ADAPTER": { + "_id": "SAML2_IDP_ADAPTER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SAML2_IDP_ADAPTER", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.IdpAdapterScriptHelper", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.sun.identity.common.CaseInsensitiveHashMap", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "org.forgerock.util.promise.PromiseImpl", + "javax.servlet.http.Cookie", + "org.xml.sax.InputSource", + "java.security.cert.CertificateFactory", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "248b8a56-df81-4b1b-b4ba-45d994f6504c", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.IdpAdapterScriptHelper", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SAML2_IDP_ATTRIBUTE_MAPPER": { + "_id": "SAML2_IDP_ATTRIBUTE_MAPPER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SAML2_IDP_ATTRIBUTE_MAPPER", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.impl.AttributeImpl", + "com.sun.identity.saml2.plugins.scripted.IdpAttributeMapperScriptHelper", + "javax.servlet.http.Cookie", + "javax.xml.parsers.DocumentBuilder", + "javax.xml.parsers.DocumentBuilderFactory", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.w3c.dom.Document", + "org.w3c.dom.Element", + "org.xml.sax.InputSource", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.sun.identity.common.CaseInsensitiveHashMap", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "org.forgerock.util.promise.PromiseImpl", + "javax.servlet.http.Cookie", + "org.xml.sax.InputSource", + "java.security.cert.CertificateFactory", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "c4f22465-2368-4e27-8013-e6399974fd48", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.impl.AttributeImpl", + "com.sun.identity.saml2.plugins.scripted.IdpAttributeMapperScriptHelper", + "javax.servlet.http.Cookie", + "javax.xml.parsers.DocumentBuilder", + "javax.xml.parsers.DocumentBuilderFactory", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.w3c.dom.Document", + "org.w3c.dom.Element", + "org.xml.sax.InputSource", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SAML2_SP_ADAPTER": { + "_id": "SAML2_SP_ADAPTER", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SAML2_SP_ADAPTER", + "allowLists": { + "1.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.SpAdapterScriptHelper", + "jdk.proxy*", + ], + "2.0": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.sun.identity.common.CaseInsensitiveHashMap", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "org.forgerock.util.promise.PromiseImpl", + "javax.servlet.http.Cookie", + "org.xml.sax.InputSource", + "java.security.cert.CertificateFactory", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "sun.security.ec.ECPrivateKeyImpl", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "69f06e63-128c-4e2f-af52-079a8a6f448b", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList", + "java.util.ArrayList$Itr", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$EmptyMap", + "java.util.Collections$SingletonList", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "java.util.HashMap", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$KeySet", + "java.util.HashMap$Node", + "java.util.HashSet", + "java.util.LinkedHashMap", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "java.net.URI", + "com.iplanet.am.sdk.AMHashMap", + "com.iplanet.sso.providers.dpro.SessionSsoToken", + "com.sun.identity.common.CaseInsensitiveHashMap", + "com.sun.identity.shared.debug.Debug", + "com.sun.identity.saml2.common.SAML2Exception", + "groovy.json.JsonSlurper", + "groovy.json.internal.LazyMap", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.Client", + "org.forgerock.http.client.*", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.json.JsonValue", + "org.mozilla.javascript.JavaScriptException", + "com.sun.identity.saml2.assertion.*", + "com.sun.identity.saml2.assertion.impl.*", + "com.sun.identity.saml2.plugins.scripted.ScriptEntitlementInfo", + "com.sun.identity.saml2.protocol.*", + "com.sun.identity.saml2.protocol.impl.*", + "java.io.PrintWriter", + "javax.security.auth.Subject", + "javax.servlet.http.HttpServletRequestWrapper", + "javax.servlet.http.HttpServletResponseWrapper", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "com.sun.identity.saml2.plugins.scripted.SpAdapterScriptHelper", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + "SOCIAL_IDP_PROFILE_TRANSFORMATION": { + "_id": "SOCIAL_IDP_PROFILE_TRANSFORMATION", + "_type": { + "_id": "contexts", + "collection": true, + "name": "scriptContext", + }, + "context": { + "_id": "SOCIAL_IDP_PROFILE_TRANSFORMATION", + "allowLists": { + "1.0": [ + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$Node", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Response", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.oauth.clients.oidc.Claim", + "java.util.Locale", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + "2.0": [ + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$Node", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Response", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.oauth.clients.oidc.Claim", + "java.util.Locale", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "evaluatorVersions": { + "GROOVY": [ + "1.0", + ], + "JAVASCRIPT": [ + "1.0", + ], + }, + }, + "defaultScript": "1d475815-72cb-42eb-aafd-4026989d28a7", + "engineConfiguration": { + "_id": "engineConfiguration", + "_type": { + "_id": "engineConfiguration", + "collection": false, + "name": "Scripting engine configuration", + }, + "blackList": [ + "java.security.AccessController", + "java.lang.Class", + "java.lang.reflect.*", + ], + "coreThreads": 10, + "idleTimeout": 60, + "maxThreads": 50, + "propertyNamePrefix": "script", + "queueSize": 10, + "serverTimeout": 0, + "useSecurityManager": true, + "whiteList": [ + "com.sun.identity.idm.AMIdentity", + "com.sun.identity.shared.debug.Debug", + "groovy.json.JsonSlurper", + "java.lang.Boolean", + "java.lang.Byte", + "java.lang.Character$Subset", + "java.lang.Character$UnicodeBlock", + "java.lang.Character", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Number", + "java.lang.Object", + "java.lang.Short", + "java.lang.StrictMath", + "java.lang.String", + "java.lang.Void", + "java.util.AbstractMap$SimpleImmutableEntry", + "java.util.ArrayList$Itr", + "java.util.ArrayList", + "java.util.Collections$1", + "java.util.Collections$EmptyList", + "java.util.Collections$SingletonList", + "java.util.HashMap$Entry", + "java.util.HashMap$KeyIterator", + "java.util.HashMap$Node", + "java.util.HashMap", + "java.util.HashSet", + "java.util.LinkedHashMap$Entry", + "java.util.LinkedHashMap$LinkedEntryIterator", + "java.util.LinkedHashMap$LinkedEntrySet", + "java.util.LinkedHashMap", + "java.util.LinkedHashSet", + "java.util.LinkedList", + "java.util.TreeMap", + "java.util.TreeSet", + "org.codehaus.groovy.runtime.GStringImpl", + "org.codehaus.groovy.runtime.ScriptBytecodeAdapter", + "org.forgerock.http.client.*", + "org.forgerock.http.protocol.Entity", + "org.forgerock.http.protocol.Request", + "org.forgerock.http.protocol.Response", + "org.forgerock.json.JsonValue", + "org.forgerock.oauth2.core.UserInfoClaims", + "org.forgerock.openam.scripting.api.http.GroovyHttpClient", + "org.forgerock.openam.scripting.api.http.JavaScriptHttpClient", + "org.forgerock.openam.shared.security.crypto.CertificateService", + "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOToken", + "org.forgerock.util.promise.PromiseImpl", + "org.forgerock.openam.scripting.api.PrefixedScriptPropertyResolver", + "java.util.List", + "java.util.Map", + "java.util.Collections$UnmodifiableRandomAccessList", + "java.util.Collections$UnmodifiableCollection$1", + "org.forgerock.oauth.clients.oidc.Claim", + "java.util.Locale", + "org.mozilla.javascript.JavaScriptException", + "sun.security.ec.ECPrivateKeyImpl", + "org.forgerock.opendj.ldap.Rdn", + "org.forgerock.opendj.ldap.Dn", + "jdk.proxy*", + ], + }, + "languages": [ + "JAVASCRIPT", + "GROOVY", + ], + }, + }, + "secretstore": { + "EnvironmentAndSystemPropertySecretStore": { + "_id": "EnvironmentAndSystemPropertySecretStore", + "_type": { + "_id": "EnvironmentAndSystemPropertySecretStore", + "collection": false, + "name": "Environment and System Property Secrets Store", + }, + "format": "BASE64", + }, + "default-keystore": { + "_id": "default-keystore", + "_type": { + "_id": "KeyStoreSecretStore", + "collection": true, + "name": "Keystore", + }, + "file": "/root/am/security/keystores/keystore.jceks", + "keyEntryPassword": "entrypass", + "leaseExpiryDuration": 5, + "mappings": [ + { + "_id": "am.applications.agents.remote.consent.request.signing.ES256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES256", + }, + { + "_id": "am.applications.agents.remote.consent.request.signing.ES384", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es384test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES384", + }, + { + "_id": "am.applications.agents.remote.consent.request.signing.ES512", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es512test", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.ES512", + }, + { + "_id": "am.applications.agents.remote.consent.request.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.applications.agents.remote.consent.request.signing.RSA", + }, + { + "_id": "am.authentication.nodes.persistentcookie.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.authentication.nodes.persistentcookie.encryption", + }, + { + "_id": "am.authn.authid.signing.HMAC", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.authn.authid.signing.HMAC", + }, + { + "_id": "am.authn.trees.transientstate.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.authn.trees.transientstate.encryption", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.idp.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.idp.encryption", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.idp.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.idp.signing", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.sp.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.sp.encryption", + }, + { + "_id": "am.default.applications.federation.entity.providers.saml2.sp.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.default.applications.federation.entity.providers.saml2.sp.signing", + }, + { + "_id": "am.default.authentication.modules.persistentcookie.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.default.authentication.modules.persistentcookie.encryption", + }, + { + "_id": "am.default.authentication.modules.persistentcookie.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.default.authentication.modules.persistentcookie.signing", + }, + { + "_id": "am.default.authentication.nodes.persistentcookie.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.default.authentication.nodes.persistentcookie.signing", + }, + { + "_id": "am.global.services.oauth2.oidc.agent.idtoken.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.global.services.oauth2.oidc.agent.idtoken.signing", + }, + { + "_id": "am.global.services.saml2.client.storage.jwt.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.global.services.saml2.client.storage.jwt.encryption", + }, + { + "_id": "am.global.services.session.clientbased.encryption.AES", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "aestest", + ], + "secretId": "am.global.services.session.clientbased.encryption.AES", + }, + { + "_id": "am.global.services.session.clientbased.signing.HMAC", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.global.services.session.clientbased.signing.HMAC", + }, + { + "_id": "am.services.iot.jwt.issuer.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.services.iot.jwt.issuer.signing", + }, + { + "_id": "am.services.oauth2.jwt.authenticity.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.services.oauth2.jwt.authenticity.signing", + }, + { + "_id": "am.services.oauth2.oidc.decryption.RSA.OAEP", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.decryption.RSA.OAEP", + }, + { + "_id": "am.services.oauth2.oidc.decryption.RSA.OAEP.256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.decryption.RSA.OAEP.256", + }, + { + "_id": "am.services.oauth2.oidc.decryption.RSA1.5", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.decryption.RSA1.5", + }, + { + "_id": "am.services.oauth2.oidc.rp.idtoken.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.oidc.rp.idtoken.encryption", + }, + { + "_id": "am.services.oauth2.oidc.rp.jwt.authenticity.signing", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.oidc.rp.jwt.authenticity.signing", + }, + { + "_id": "am.services.oauth2.oidc.signing.ES256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.services.oauth2.oidc.signing.ES256", + }, + { + "_id": "am.services.oauth2.oidc.signing.ES384", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es384test", + ], + "secretId": "am.services.oauth2.oidc.signing.ES384", + }, + { + "_id": "am.services.oauth2.oidc.signing.ES512", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es512test", + ], + "secretId": "am.services.oauth2.oidc.signing.ES512", + }, + { + "_id": "am.services.oauth2.oidc.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.oidc.signing.RSA", + }, + { + "_id": "am.services.oauth2.remote.consent.request.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "selfserviceenctest", + ], + "secretId": "am.services.oauth2.remote.consent.request.encryption", + }, + { + "_id": "am.services.oauth2.remote.consent.response.decryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "test", + ], + "secretId": "am.services.oauth2.remote.consent.response.decryption", + }, + { + "_id": "am.services.oauth2.remote.consent.response.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.remote.consent.response.signing.RSA", + }, + { + "_id": "am.services.oauth2.stateless.signing.ES256", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es256test", + ], + "secretId": "am.services.oauth2.stateless.signing.ES256", + }, + { + "_id": "am.services.oauth2.stateless.signing.ES384", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es384test", + ], + "secretId": "am.services.oauth2.stateless.signing.ES384", + }, + { + "_id": "am.services.oauth2.stateless.signing.ES512", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "es512test", + ], + "secretId": "am.services.oauth2.stateless.signing.ES512", + }, + { + "_id": "am.services.oauth2.stateless.signing.HMAC", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "hmacsigningtest", + ], + "secretId": "am.services.oauth2.stateless.signing.HMAC", + }, + { + "_id": "am.services.oauth2.stateless.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.oauth2.stateless.signing.RSA", + }, + { + "_id": "am.services.oauth2.stateless.token.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.services.oauth2.stateless.token.encryption", + }, + { + "_id": "am.services.saml2.metadata.signing.RSA", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "rsajwtsigningkey", + ], + "secretId": "am.services.saml2.metadata.signing.RSA", + }, + { + "_id": "am.services.uma.pct.encryption", + "_type": { + "_id": "mappings", + "collection": true, + "name": "Mappings", + }, + "aliases": [ + "directenctest", + ], + "secretId": "am.services.uma.pct.encryption", + }, + ], + "providerName": "SunJCE", + "storePassword": "storepass", + "storetype": "JCEKS", + }, + "default-passwords-store": { + "_id": "default-passwords-store", + "_type": { + "_id": "FileSystemSecretStore", + "collection": true, + "name": "File System Secret Volumes", + }, + "directory": "/root/am/security/secrets/encrypted", + "format": "ENCRYPTED_PLAIN", + }, + }, + "server": { + "defaultProperties": { + "advanced": { + "_id": "null/properties/advanced", + "com.iplanet.am.buildDate": "2024-March-28 16:00", + "com.iplanet.am.buildRevision": "89116d59a1ebe73ed1931dd3649adb7f217cd06b", + "com.iplanet.am.buildVersion": "ForgeRock Access Management 7.5.0", + "com.iplanet.am.cookie.c66Encode": true, + "com.iplanet.am.daemons": "securid", + "com.iplanet.am.directory.ssl.enabled": false, + "com.iplanet.am.installdir": "%BASE_DIR%", + "com.iplanet.am.jssproxy.SSLTrustHostList": "", + "com.iplanet.am.jssproxy.checkSubjectAltName": false, + "com.iplanet.am.jssproxy.resolveIPAddress": false, + "com.iplanet.am.jssproxy.trustAllServerCerts": false, + "com.iplanet.am.lbcookie.name": "amlbcookie", + "com.iplanet.am.lbcookie.value": "00", + "com.iplanet.am.logstatus": "ACTIVE", + "com.iplanet.am.pcookie.name": "DProPCookie", + "com.iplanet.am.profile.host": "%SERVER_HOST%", + "com.iplanet.am.profile.port": "%SERVER_PORT%", + "com.iplanet.am.serverMode": true, + "com.iplanet.am.session.agentSessionIdleTime": "1440", + "com.iplanet.am.session.client.polling.enable": false, + "com.iplanet.am.session.client.polling.period": "180", + "com.iplanet.am.session.httpSession.enabled": "true", + "com.iplanet.am.version": "ForgeRock Access Management 7.5.0 Build 89116d59a1ebe73ed1931dd3649adb7f217cd06b (2024-March-28 16:00)", + "com.iplanet.security.SSLSocketFactoryImpl": "com.sun.identity.shared.ldap.factory.JSSESocketFactory", + "com.sun.am.event.notification.expire.time": "5", + "com.sun.embedded.sync.servers": "on", + "com.sun.identity.am.cookie.check": false, + "com.sun.identity.auth.cookieName": "AMAuthCookie", + "com.sun.identity.authentication.multiple.tabs.used": false, + "com.sun.identity.authentication.setCookieToAllDomains": true, + "com.sun.identity.authentication.special.users": "cn=dsameuser,ou=DSAME Users,%ROOT_SUFFIX%|cn=amService-UrlAccessAgent,ou=DSAME Users,%ROOT_SUFFIX%", + "com.sun.identity.authentication.super.user": "uid=amAdmin,ou=People,%ROOT_SUFFIX%", + "com.sun.identity.authentication.uniqueCookieName": "sunIdentityServerAuthNServer", + "com.sun.identity.cookie.httponly": true, + "com.sun.identity.cookie.samesite": "off", + "com.sun.identity.enableUniqueSSOTokenCookie": false, + "com.sun.identity.jss.donotInstallAtHighestPriority": true, + "com.sun.identity.monitoring": "off", + "com.sun.identity.monitoring.local.conn.server.url": "service:jmx:rmi://", + "com.sun.identity.password.deploymentDescriptor": "%SERVER_URI%", + "com.sun.identity.plugin.configuration.class": "@CONFIGURATION_PROVIDER_CLASS@", + "com.sun.identity.plugin.datastore.class.default": "@DATASTORE_PROVIDER_CLASS@", + "com.sun.identity.plugin.log.class": "@LOG_PROVIDER_CLASS@", + "com.sun.identity.plugin.monitoring.agent.class": "@MONAGENT_PROVIDER_CLASS@", + "com.sun.identity.plugin.monitoring.saml2.class": "@MONSAML2_PROVIDER_CLASS@", + "com.sun.identity.plugin.session.class": "@SESSION_PROVIDER_CLASS@", + "com.sun.identity.policy.Policy.policy_evaluation_weights": "10:10:10", + "com.sun.identity.policy.resultsCacheMaxSize": "10000", + "com.sun.identity.policy.resultsCacheResourceCap": "20", + "com.sun.identity.saml.xmlsig.keyprovider.class": "@XMLSIG_KEY_PROVIDER@", + "com.sun.identity.saml.xmlsig.passwordDecoder": "@PASSWORD_DECODER_CLASS@", + "com.sun.identity.saml.xmlsig.signatureprovider.class": "@XML_SIGNATURE_PROVIDER@", + "com.sun.identity.security.checkcaller": false, + "com.sun.identity.server.fqdnMap[dnsfirst]": "dnsfirst", + "com.sun.identity.server.fqdnMap[hello]": "hello", + "com.sun.identity.server.fqdnMap[localhost]": "localhost", + "com.sun.identity.server.fqdnMap[openam-frodo-dev.classic.com]": "openam-frodo-dev.classic.com", + "com.sun.identity.server.fqdnMap[openam]": "openam", + "com.sun.identity.server.fqdnMap[secondDNS]": "secondDNS", + "com.sun.identity.session.repository.enableAttributeCompression": false, + "com.sun.identity.session.repository.enableCompression": false, + "com.sun.identity.session.repository.enableEncryption": false, + "com.sun.identity.sm.cache.ttl": "30", + "com.sun.identity.sm.cache.ttl.enable": false, + "com.sun.identity.url.readTimeout": "30000", + "com.sun.identity.webcontainer": "WEB_CONTAINER", + "dynamic.datastore.creation.enabled": false, + "openam.auth.destroy_session_after_upgrade": true, + "openam.auth.distAuthCookieName": "AMDistAuthCookie", + "openam.auth.session_property_upgrader": "org.forgerock.openam.authentication.service.DefaultSessionPropertyUpgrader", + "openam.auth.version.header.enabled": false, + "openam.authentication.ignore_goto_during_logout": false, + "openam.cdm.default.charset": "UTF-8", + "openam.forbidden.to.copy.headers": "connection", + "openam.forbidden.to.copy.request.headers": "connection", + "openam.oauth2.client.jwt.encryption.algorithm.allow.list": "RSA-OAEP,RSA-OAEP-256,ECDH-ES", + "openam.oauth2.client.jwt.unreasonable.lifetime.limit.minutes": "30", + "openam.retained.http.headers": "X-DSAMEVersion", + "openam.retained.http.request.headers": "X-DSAMEVersion", + "openam.serviceattributevalidator.classes.whitelist": "org.forgerock.openam.auth.nodes.validators.GreaterThanZeroValidator,org.forgerock.openam.auth.nodes.validators.HMACKeyLengthValidator,org.forgerock.openam.auth.nodes.validators.HmacSigningKeyValidator,org.forgerock.openam.auth.nodes.validators.PercentageValidator,org.forgerock.openam.auth.nodes.validators.QueryFilterValidator,org.forgerock.openam.auth.nodes.validators.SessionPropertyNameValidator,org.forgerock.openam.auth.nodes.validators.SessionPropertyValidator,org.forgerock.openam.auth.nodes.framework.validators.NodeValueValidator,org.forgerock.openam.audit.validation.PositiveIntegerValidator,org.forgerock.openam.authentication.modules.fr.oath.validators.AlphaNumericValidator,org.forgerock.openam.authentication.modules.fr.oath.validators.CodeLengthValidator,org.forgerock.openam.authentication.modules.persistentcookie.validation.SigningKeyValidator,com.sun.identity.common.configuration.DuplicateKeyMapValueValidator,com.sun.identity.common.configuration.AgentClientIpModeValueValidator,com.sun.identity.common.configuration.FilterModeValueValidator,com.sun.identity.common.configuration.GlobalMapValueValidator,com.sun.identity.common.configuration.ListValueValidator,com.sun.identity.common.configuration.MapValueValidator,com.sun.identity.common.configuration.ServerPropertyValidator,com.sun.identity.policy.ResourceComparatorValidator,com.sun.identity.sm.EmailValidator,com.sun.identity.sm.IPAddressValidator,com.sun.identity.sm.RequiredValueValidator,com.sun.identity.sm.ServerIDValidator,com.sun.identity.sm.SiteIDValidator,org.forgerock.openam.sm.validation.Base64EncodedBinaryValidator,org.forgerock.openam.sm.validation.BlankValueValidator,org.forgerock.openam.sm.validation.DurationValidator,org.forgerock.openam.sm.validation.EndpointValidator,org.forgerock.openam.sm.validation.HostnameValidator,org.forgerock.openam.sm.validation.PortValidator,org.forgerock.openam.sm.validation.SecretIdValidator,org.forgerock.openam.sm.validation.StatelessSessionSigningAlgorithmValidator,org.forgerock.openam.sm.validation.StringMapValidator,org.forgerock.openam.sm.validation.URLValidator,org.forgerock.openam.selfservice.config.KeyAliasValidator,org.forgerock.openam.sm.validation.UniqueIndexedValuesValidator,org.forgerock.openam.webhook.HttpHeaderValidator,org.forgerock.oauth2.core.ClientRedirectUriValidator", + "openam.session.case.sensitive.uuid": false, + "org.forgerock.allow.http.client.debug": false, + "org.forgerock.am.auth.chains.authindexuser.strict": true, + "org.forgerock.am.auth.node.otp.inSharedState": false, + "org.forgerock.am.auth.trees.authenticate.identified.identity": true, + "org.forgerock.openam.audit.additionalSuccessStatusCodesEnabled": true, + "org.forgerock.openam.audit.identity.activity.events.blacklist": "AM-ACCESS-ATTEMPT,AM-IDENTITY-CHANGE,AM-GROUP-CHANGE", + "org.forgerock.openam.auth.transactionauth.returnErrorOnAuthFailure": false, + "org.forgerock.openam.authLevel.excludeRequiredOrRequisite": false, + "org.forgerock.openam.authentication.forceAuth.enabled": false, + "org.forgerock.openam.console.autocomplete.enabled": true, + "org.forgerock.openam.core.resource.lookup.cache.enabled": true, + "org.forgerock.openam.core.sms.placeholder_api_enabled": "OFF", + "org.forgerock.openam.devices.recovery.use_insecure_storage": false, + "org.forgerock.openam.encryption.key.digest": "SHA1", + "org.forgerock.openam.encryption.key.iterations": "10000", + "org.forgerock.openam.encryption.key.size": "128", + "org.forgerock.openam.httpclienthandler.system.clients.connection.timeout": "10 seconds", + "org.forgerock.openam.httpclienthandler.system.clients.max.connections": "64", + "org.forgerock.openam.httpclienthandler.system.clients.pool.ttl": "-1", + "org.forgerock.openam.httpclienthandler.system.clients.response.timeout": "10 seconds", + "org.forgerock.openam.httpclienthandler.system.clients.retry.failed.requests.enabled": true, + "org.forgerock.openam.httpclienthandler.system.clients.reuse.connections.enabled": true, + "org.forgerock.openam.httpclienthandler.system.nonProxyHosts": "localhost,127.*,[::1],0.0.0.0,[::0]", + "org.forgerock.openam.httpclienthandler.system.proxy.enabled": false, + "org.forgerock.openam.httpclienthandler.system.proxy.password": null, + "org.forgerock.openam.httpclienthandler.system.proxy.uri": "", + "org.forgerock.openam.httpclienthandler.system.proxy.username": "", + "org.forgerock.openam.idm.attribute.names.lower.case": false, + "org.forgerock.openam.idrepo.ldapv3.passwordpolicy.allowDiagnosticMessage": false, + "org.forgerock.openam.idrepo.ldapv3.proxyauth.passwordreset.adminRequest": "isAdminPasswordChangeRequest", + "org.forgerock.openam.introspect.token.query.param.allowed": false, + "org.forgerock.openam.ldap.dncache.expire.time": "0", + "org.forgerock.openam.ldap.heartbeat.timeout": "10", + "org.forgerock.openam.ldap.keepalive.search.base": "", + "org.forgerock.openam.ldap.keepalive.search.filter": "(objectClass=*)", + "org.forgerock.openam.ldap.secure.protocol.version": "TLSv1.3,TLSv1.2", + "org.forgerock.openam.notifications.agents.enabled": true, + "org.forgerock.openam.oauth2.checkIssuerForIdTokenInfo": true, + "org.forgerock.openam.radius.server.context.cache.size": "5000", + "org.forgerock.openam.redirecturlvalidator.maxUrlLength": "2000", + "org.forgerock.openam.request.max.bytes.entity.size": "1048576", + "org.forgerock.openam.saml2.authenticatorlookup.skewAllowance": "60", + "org.forgerock.openam.scripting.maxinterpreterstackdepth": "10000", + "org.forgerock.openam.secrets.special.user.passwords.format": "ENCRYPTED_PLAIN", + "org.forgerock.openam.secrets.special.user.secret.refresh.seconds": "900", + "org.forgerock.openam.session.service.persistence.deleteAsynchronously": true, + "org.forgerock.openam.session.stateless.encryption.method": "A128CBC-HS256", + "org.forgerock.openam.session.stateless.rsa.padding": "RSA-OAEP-256", + "org.forgerock.openam.session.stateless.signing.allownone": false, + "org.forgerock.openam.showServletTraceInBrowser": false, + "org.forgerock.openam.slf4j.enableTraceInMessage": false, + "org.forgerock.openam.smtp.system.connect.timeout": "10000", + "org.forgerock.openam.smtp.system.socket.read.timeout": "10000", + "org.forgerock.openam.smtp.system.socket.write.timeout": "10000", + "org.forgerock.openam.sso.providers.list": "org.forgerock.openidconnect.ssoprovider.OpenIdConnectSSOProvider", + "org.forgerock.openam.timerpool.shutdown.retry.interval": "15000", + "org.forgerock.openam.timerpool.shutdown.retry.limit": "3", + "org.forgerock.openam.timerpool.shutdown.retry.multiplier": "1.5", + "org.forgerock.openam.trees.consumedstatedata.cache.size": "15", + "org.forgerock.openam.trees.ids.cache.size": "50", + "org.forgerock.openam.url.connectTimeout": "1000", + "org.forgerock.openam.xui.user.session.validation.enabled": true, + "org.forgerock.openidconnect.ssoprovider.maxcachesize": "5000", + "org.forgerock.security.entitlement.enforce.realm": true, + "org.forgerock.security.oauth2.enforce.sub.claim.uniqueness": true, + "org.forgerock.services.cts.store.reaper.enabled": true, + "org.forgerock.services.cts.store.ttlsupport.enabled": false, + "org.forgerock.services.cts.store.ttlsupport.exclusionlist": "", + "org.forgerock.services.default.store.max.connections": "", + "org.forgerock.services.default.store.min.connections": "", + "org.forgerock.services.openid.request.object.lifespan": "120000", + "securidHelper.ports": "58943", + }, + "cts": { + "_id": "null/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": "default", + "org.forgerock.services.cts.store.max.connections": "100", + "org.forgerock.services.cts.store.page.size": "0", + "org.forgerock.services.cts.store.root.suffix": "", + "org.forgerock.services.cts.store.vlv.page.size": "1000", + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.directory.name": "", + "org.forgerock.services.cts.store.heartbeat": "10", + "org.forgerock.services.cts.store.loginid": "", + "org.forgerock.services.cts.store.mtls.enabled": "", + "org.forgerock.services.cts.store.password": null, + "org.forgerock.services.cts.store.ssl.enabled": "", + "org.forgerock.services.cts.store.starttls.enabled": "", + }, + }, + "general": { + "_id": "null/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": "%BASE_DIR%/var/debug", + "com.iplanet.services.debug.level": "off", + "com.sun.services.debug.mergeall": "on", + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": "en_US", + "com.iplanet.am.util.xml.validating": "off", + "com.iplanet.services.configpath": "%BASE_DIR%", + "com.sun.identity.client.notification.url": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": "localhost", + "com.iplanet.am.smtpport": "25", + }, + }, + "sdk": { + "_id": "null/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": "10000", + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": false, + "com.sun.identity.sm.notification.threadpool.size": "1", + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": "3000", + "com.iplanet.am.event.connection.ldap.error.codes.retries": "80,81,91", + "com.iplanet.am.event.connection.num.retries": "3", + "com.sun.am.event.connection.disable.list": "aci,um,sm", + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": "1000", + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": "80,81,91", + "com.iplanet.am.ldap.connection.num.retries": "3", + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": "30", + "com.iplanet.am.sdk.cache.entry.expire.enabled": false, + "com.iplanet.am.sdk.cache.entry.user.expire.time": "15", + }, + }, + "security": { + "_id": "null/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": false, + "com.iplanet.am.cookie.name": "iPlanetDirectoryPro", + "com.iplanet.am.cookie.secure": false, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": "", + "com.sun.identity.crl.cache.directory.mtlsenabled": false, + "com.sun.identity.crl.cache.directory.password": null, + "com.sun.identity.crl.cache.directory.port": "", + "com.sun.identity.crl.cache.directory.searchattr": "", + "com.sun.identity.crl.cache.directory.searchlocs": "", + "com.sun.identity.crl.cache.directory.ssl": false, + "com.sun.identity.crl.cache.directory.user": "", + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + "amconfig.header.encryption": { + "am.encryption.pwd": "@AM_ENC_PWD@", + "am.encryption.secret.enabled": false, + "am.encryption.secret.keystoreType": "JCEKS", + "com.iplanet.security.SecureRandomFactoryImpl": "com.iplanet.am.util.SecureRandomFactoryImpl", + "com.iplanet.security.encryptor": "com.iplanet.services.util.JCEEncryption", + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": "", + "com.sun.identity.authentication.ocsp.responder.url": "", + "com.sun.identity.authentication.ocspCheck": false, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": "test", + "com.sun.identity.saml.xmlsig.keypass": "%BASE_DIR%/security/secrets/default/.keypass", + "com.sun.identity.saml.xmlsig.keystore": "%BASE_DIR%/security/keystores/keystore.jceks", + "com.sun.identity.saml.xmlsig.storepass": "%BASE_DIR%/security/secrets/default/.storepass", + "com.sun.identity.saml.xmlsig.storetype": "JCEKS", + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": false, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": "16384", + }, + }, + "session": { + "_id": "null/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": "60", + "com.iplanet.services.stats.directory": "%BASE_DIR%/var/stats", + "com.iplanet.services.stats.state": "file", + "com.sun.am.session.enableHostLookUp": false, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": "10", + "com.iplanet.am.notification.threadpool.threshold": "5000", + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": "3", + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": "5000", + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": true, + }, + }, + "uma": { + "_id": "null/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": "default", + "org.forgerock.services.resourcesets.store.max.connections": "10", + "org.forgerock.services.resourcesets.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": "", + "org.forgerock.services.resourcesets.store.heartbeat": "10", + "org.forgerock.services.resourcesets.store.loginid": "", + "org.forgerock.services.resourcesets.store.mtls.enabled": "", + "org.forgerock.services.resourcesets.store.password": null, + "org.forgerock.services.resourcesets.store.ssl.enabled": "", + "org.forgerock.services.resourcesets.store.starttls.enabled": "", + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": "default", + "org.forgerock.services.uma.labels.store.max.connections": "2", + "org.forgerock.services.uma.labels.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": "", + "org.forgerock.services.uma.labels.store.heartbeat": "10", + "org.forgerock.services.uma.labels.store.loginid": "", + "org.forgerock.services.uma.labels.store.mtls.enabled": "", + "org.forgerock.services.uma.labels.store.password": null, + "org.forgerock.services.uma.labels.store.ssl.enabled": "", + "org.forgerock.services.uma.labels.store.starttls.enabled": "", + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": "default", + "org.forgerock.services.uma.pendingrequests.store.max.connections": "10", + "org.forgerock.services.uma.pendingrequests.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": "", + "org.forgerock.services.uma.pendingrequests.store.heartbeat": "10", + "org.forgerock.services.uma.pendingrequests.store.loginid": "", + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": "", + "org.forgerock.services.uma.pendingrequests.store.password": null, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": "", + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": "", + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": "default", + "org.forgerock.services.umaaudit.store.max.connections": "10", + "org.forgerock.services.umaaudit.store.root.suffix": "", + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": "", + "org.forgerock.services.umaaudit.store.heartbeat": "10", + "org.forgerock.services.umaaudit.store.loginid": "", + "org.forgerock.services.umaaudit.store.mtls.enabled": "", + "org.forgerock.services.umaaudit.store.password": null, + "org.forgerock.services.umaaudit.store.ssl.enabled": "", + "org.forgerock.services.umaaudit.store.starttls.enabled": "", + }, + }, + }, + "server": { + "01": { + "_id": "01", + "properties": { + "advanced": { + "_id": "01/properties/advanced", + "bootstrap.file": "/root/.openamcfg/AMConfig_usr_local_tomcat_webapps_am_", + "com.iplanet.am.lbcookie.value": "01", + "com.iplanet.am.serverMode": true, + "com.iplanet.security.SSLSocketFactoryImpl": "com.sun.identity.shared.ldap.factory.JSSESocketFactory", + "com.sun.embedded.replicationport": "", + "com.sun.embedded.sync.servers": "on", + "com.sun.identity.common.systemtimerpool.size": "3", + "com.sun.identity.sm.sms_object_class_name": "com.sun.identity.sm.SmsWrapperObject", + "com.sun.identity.urlconnection.useCache": false, + "opensso.protocol.handler.pkgs": "", + "org.forgerock.embedded.dsadminport": "4444", + }, + "cts": { + "_id": "01/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.cts.store.max.connections": { + "inherited": true, + "value": "100", + }, + "org.forgerock.services.cts.store.page.size": { + "inherited": true, + "value": "0", + }, + "org.forgerock.services.cts.store.root.suffix": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.vlv.page.size": { + "inherited": true, + "value": "1000", + }, + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.affinity.enabled": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.cts.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + "directoryConfiguration": { + "_id": "01/properties/directoryConfiguration", + "directoryConfiguration": { + "bindDn": "cn=Directory Manager", + "bindPassword": null, + "maxConnectionPool": 10, + "minConnectionPool": 1, + "mtlsAlias": "", + "mtlsEnabled": false, + "mtlsKeyPasswordFile": "", + "mtlsKeyStoreFile": "", + "mtlsKeyStorePasswordFile": "", + "mtlsKeyStoreType": null, + }, + "directoryServers": [ + { + "connectionType": "SSL", + "hostName": "localhost", + "portNumber": "50636", + "serverName": "Server1", + }, + ], + }, + "general": { + "_id": "01/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/debug", + }, + "com.iplanet.services.debug.level": { + "inherited": true, + "value": "off", + }, + "com.sun.services.debug.mergeall": { + "inherited": true, + "value": "on", + }, + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": { + "inherited": false, + "value": "en_US", + }, + "com.iplanet.am.util.xml.validating": { + "inherited": true, + "value": "off", + }, + "com.iplanet.services.configpath": { + "inherited": false, + "value": "/root/am", + }, + "com.sun.identity.client.notification.url": { + "inherited": true, + "value": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": { + "inherited": true, + "value": "localhost", + }, + "com.iplanet.am.smtpport": { + "inherited": true, + "value": "25", + }, + }, + "amconfig.header.site": { + "singleChoiceSite": "[Empty]", + }, + }, + "sdk": { + "_id": "01/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": { + "inherited": true, + "value": "10000", + }, + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": { + "inherited": false, + "value": true, + }, + "com.sun.identity.sm.notification.threadpool.size": { + "inherited": true, + "value": "1", + }, + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": { + "inherited": true, + "value": "3000", + }, + "com.iplanet.am.event.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.event.connection.num.retries": { + "inherited": true, + "value": "3", + }, + "com.sun.am.event.connection.disable.list": { + "inherited": false, + "value": "aci,um", + }, + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": { + "inherited": true, + "value": "1000", + }, + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": { + "inherited": false, + "value": "80,81,91", + }, + "com.iplanet.am.ldap.connection.num.retries": { + "inherited": true, + "value": "3", + }, + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": { + "inherited": true, + "value": "30", + }, + "com.iplanet.am.sdk.cache.entry.expire.enabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.sdk.cache.entry.user.expire.time": { + "inherited": true, + "value": "15", + }, + }, + }, + "security": { + "_id": "01/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.cookie.name": { + "inherited": true, + "value": "iPlanetDirectoryPro", + }, + "com.iplanet.am.cookie.secure": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.mtlsenabled": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.password": { + "inherited": true, + "value": null, + }, + "com.sun.identity.crl.cache.directory.port": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchattr": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchlocs": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.ssl": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.user": { + "inherited": true, + "value": "", + }, + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": { + "inherited": true, + "value": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + }, + "amconfig.header.encryption": { + "am.encryption.pwd": { + "inherited": false, + "value": "efSYcwIhr7uKH30rgciGTVTFzb63LhYu", + }, + "am.encryption.secret.alias": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.enabled": { + "inherited": true, + "value": false, + }, + "am.encryption.secret.keyPass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreFile": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystorePass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreType": { + "inherited": true, + "value": "JCEKS", + }, + "com.iplanet.security.SecureRandomFactoryImpl": { + "inherited": true, + "value": "com.iplanet.am.util.SecureRandomFactoryImpl", + }, + "com.iplanet.security.encryptor": { + "inherited": true, + "value": "com.iplanet.services.util.JCEEncryption", + }, + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocsp.responder.url": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocspCheck": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": { + "inherited": true, + "value": "test", + }, + "com.sun.identity.saml.xmlsig.keypass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.keypass", + }, + "com.sun.identity.saml.xmlsig.keystore": { + "inherited": true, + "value": "%BASE_DIR%/security/keystores/keystore.jceks", + }, + "com.sun.identity.saml.xmlsig.storepass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.storepass", + }, + "com.sun.identity.saml.xmlsig.storetype": { + "inherited": true, + "value": "JCEKS", + }, + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": { + "inherited": true, + "value": "16384", + }, + }, + }, + "session": { + "_id": "01/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": { + "inherited": true, + "value": "60", + }, + "com.iplanet.services.stats.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/stats", + }, + "com.iplanet.services.stats.state": { + "inherited": true, + "value": "file", + }, + "com.sun.am.session.enableHostLookUp": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": { + "inherited": true, + "value": "10", + }, + "com.iplanet.am.notification.threadpool.threshold": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": { + "inherited": true, + "value": "3", + }, + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": { + "inherited": true, + "value": true, + }, + }, + }, + "uma": { + "_id": "01/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.resourcesets.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.resourcesets.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.labels.store.max.connections": { + "inherited": true, + "value": "2", + }, + "org.forgerock.services.uma.labels.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.labels.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.labels.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.pendingrequests.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.umaaudit.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.umaaudit.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + }, + "siteName": null, + "url": "http://localhost:8080/am", + }, + "03": { + "_id": "03", + "properties": { + "advanced": { + "_id": "03/properties/advanced", + "com.iplanet.am.lbcookie.value": "03", + }, + "cts": { + "_id": "03/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.cts.store.max.connections": { + "inherited": true, + "value": "100", + }, + "org.forgerock.services.cts.store.page.size": { + "inherited": true, + "value": "0", + }, + "org.forgerock.services.cts.store.root.suffix": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.vlv.page.size": { + "inherited": true, + "value": "1000", + }, + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.affinity.enabled": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.cts.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + "directoryConfiguration": { + "_id": "03/properties/directoryConfiguration", + "directoryConfiguration": { + "bindDn": "cn=Directory Manager", + "bindPassword": null, + "maxConnectionPool": 10, + "minConnectionPool": 1, + "mtlsAlias": "", + "mtlsEnabled": false, + "mtlsKeyPasswordFile": "", + "mtlsKeyStoreFile": "", + "mtlsKeyStorePasswordFile": "", + "mtlsKeyStoreType": null, + }, + "directoryServers": [ + { + "connectionType": "SSL", + "hostName": "localhost", + "portNumber": "50636", + "serverName": "Server1", + }, + ], + }, + "general": { + "_id": "03/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/debug", + }, + "com.iplanet.services.debug.level": { + "inherited": true, + "value": "off", + }, + "com.sun.services.debug.mergeall": { + "inherited": true, + "value": "on", + }, + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": { + "inherited": true, + "value": "en_US", + }, + "com.iplanet.am.util.xml.validating": { + "inherited": true, + "value": "off", + }, + "com.iplanet.services.configpath": { + "inherited": true, + "value": "%BASE_DIR%", + }, + "com.sun.identity.client.notification.url": { + "inherited": true, + "value": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": { + "inherited": true, + "value": "localhost", + }, + "com.iplanet.am.smtpport": { + "inherited": true, + "value": "25", + }, + }, + "amconfig.header.site": { + "singleChoiceSite": "testsite", + }, + }, + "sdk": { + "_id": "03/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": { + "inherited": true, + "value": "10000", + }, + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": { + "inherited": true, + "value": false, + }, + "com.sun.identity.sm.notification.threadpool.size": { + "inherited": true, + "value": "1", + }, + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": { + "inherited": true, + "value": "3000", + }, + "com.iplanet.am.event.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.event.connection.num.retries": { + "inherited": true, + "value": "3", + }, + "com.sun.am.event.connection.disable.list": { + "inherited": true, + "value": "aci,um,sm", + }, + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": { + "inherited": true, + "value": "1000", + }, + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.ldap.connection.num.retries": { + "inherited": true, + "value": "3", + }, + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": { + "inherited": true, + "value": "30", + }, + "com.iplanet.am.sdk.cache.entry.expire.enabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.sdk.cache.entry.user.expire.time": { + "inherited": true, + "value": "15", + }, + }, + }, + "security": { + "_id": "03/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.cookie.name": { + "inherited": true, + "value": "iPlanetDirectoryPro", + }, + "com.iplanet.am.cookie.secure": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.mtlsenabled": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.password": { + "inherited": true, + "value": null, + }, + "com.sun.identity.crl.cache.directory.port": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchattr": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchlocs": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.ssl": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.user": { + "inherited": true, + "value": "", + }, + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": { + "inherited": true, + "value": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + }, + "amconfig.header.encryption": { + "am.encryption.pwd": { + "inherited": true, + "value": "@AM_ENC_PWD@", + }, + "am.encryption.secret.alias": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.enabled": { + "inherited": true, + "value": false, + }, + "am.encryption.secret.keyPass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreFile": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystorePass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreType": { + "inherited": true, + "value": "JCEKS", + }, + "com.iplanet.security.SecureRandomFactoryImpl": { + "inherited": true, + "value": "com.iplanet.am.util.SecureRandomFactoryImpl", + }, + "com.iplanet.security.encryptor": { + "inherited": true, + "value": "com.iplanet.services.util.JCEEncryption", + }, + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocsp.responder.url": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocspCheck": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": { + "inherited": true, + "value": "test", + }, + "com.sun.identity.saml.xmlsig.keypass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.keypass", + }, + "com.sun.identity.saml.xmlsig.keystore": { + "inherited": true, + "value": "%BASE_DIR%/security/keystores/keystore.jceks", + }, + "com.sun.identity.saml.xmlsig.storepass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.storepass", + }, + "com.sun.identity.saml.xmlsig.storetype": { + "inherited": true, + "value": "JCEKS", + }, + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": { + "inherited": true, + "value": "16384", + }, + }, + }, + "session": { + "_id": "03/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": { + "inherited": true, + "value": "60", + }, + "com.iplanet.services.stats.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/stats", + }, + "com.iplanet.services.stats.state": { + "inherited": true, + "value": "file", + }, + "com.sun.am.session.enableHostLookUp": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": { + "inherited": true, + "value": "10", + }, + "com.iplanet.am.notification.threadpool.threshold": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": { + "inherited": true, + "value": "3", + }, + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": { + "inherited": true, + "value": true, + }, + }, + }, + "uma": { + "_id": "03/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.resourcesets.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.resourcesets.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.labels.store.max.connections": { + "inherited": true, + "value": "2", + }, + "org.forgerock.services.uma.labels.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.labels.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.labels.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.pendingrequests.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.umaaudit.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.umaaudit.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + }, + "siteName": "testsite", + "url": "http://localhost:8081/am", + }, + "04": { + "_id": "04", + "properties": { + "advanced": { + "_id": "04/properties/advanced", + "com.iplanet.am.lbcookie.value": "04", + }, + "cts": { + "_id": "04/properties/cts", + "amconfig.org.forgerock.services.cts.store.common.section": { + "org.forgerock.services.cts.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.cts.store.max.connections": { + "inherited": true, + "value": "100", + }, + "org.forgerock.services.cts.store.page.size": { + "inherited": true, + "value": "0", + }, + "org.forgerock.services.cts.store.root.suffix": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.vlv.page.size": { + "inherited": true, + "value": "1000", + }, + }, + "amconfig.org.forgerock.services.cts.store.external.section": { + "org.forgerock.services.cts.store.affinity.enabled": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.cts.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.cts.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.cts.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + "directoryConfiguration": { + "_id": "04/properties/directoryConfiguration", + "directoryConfiguration": { + "bindDn": "cn=Directory Manager", + "bindPassword": null, + "maxConnectionPool": 10, + "minConnectionPool": 1, + "mtlsAlias": "", + "mtlsEnabled": false, + "mtlsKeyPasswordFile": "", + "mtlsKeyStoreFile": "", + "mtlsKeyStorePasswordFile": "", + "mtlsKeyStoreType": null, + }, + "directoryServers": [ + { + "connectionType": "SSL", + "hostName": "localhost", + "portNumber": "50636", + "serverName": "Server1", + }, + ], + }, + "general": { + "_id": "04/properties/general", + "amconfig.header.debug": { + "com.iplanet.services.debug.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/debug", + }, + "com.iplanet.services.debug.level": { + "inherited": true, + "value": "off", + }, + "com.sun.services.debug.mergeall": { + "inherited": true, + "value": "on", + }, + }, + "amconfig.header.installdir": { + "com.iplanet.am.locale": { + "inherited": true, + "value": "en_US", + }, + "com.iplanet.am.util.xml.validating": { + "inherited": true, + "value": "off", + }, + "com.iplanet.services.configpath": { + "inherited": true, + "value": "%BASE_DIR%", + }, + "com.sun.identity.client.notification.url": { + "inherited": true, + "value": "%SERVER_PROTO%://%SERVER_HOST%:%SERVER_PORT%/%SERVER_URI%/notificationservice", + }, + }, + "amconfig.header.mailserver": { + "com.iplanet.am.smtphost": { + "inherited": true, + "value": "localhost", + }, + "com.iplanet.am.smtpport": { + "inherited": true, + "value": "25", + }, + }, + "amconfig.header.site": { + "singleChoiceSite": "[Empty]", + }, + }, + "sdk": { + "_id": "04/properties/sdk", + "amconfig.header.cachingreplica": { + "com.iplanet.am.sdk.cache.maxSize": { + "inherited": true, + "value": "10000", + }, + }, + "amconfig.header.datastore": { + "com.sun.identity.sm.enableDataStoreNotification": { + "inherited": true, + "value": false, + }, + "com.sun.identity.sm.notification.threadpool.size": { + "inherited": true, + "value": "1", + }, + }, + "amconfig.header.eventservice": { + "com.iplanet.am.event.connection.delay.between.retries": { + "inherited": true, + "value": "3000", + }, + "com.iplanet.am.event.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.event.connection.num.retries": { + "inherited": true, + "value": "3", + }, + "com.sun.am.event.connection.disable.list": { + "inherited": true, + "value": "aci,um,sm", + }, + }, + "amconfig.header.ldapconnection": { + "com.iplanet.am.ldap.connection.delay.between.retries": { + "inherited": true, + "value": "1000", + }, + "com.iplanet.am.ldap.connection.ldap.error.codes.retries": { + "inherited": true, + "value": "80,81,91", + }, + "com.iplanet.am.ldap.connection.num.retries": { + "inherited": true, + "value": "3", + }, + }, + "amconfig.header.sdktimetoliveconfig": { + "com.iplanet.am.sdk.cache.entry.default.expire.time": { + "inherited": true, + "value": "30", + }, + "com.iplanet.am.sdk.cache.entry.expire.enabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.sdk.cache.entry.user.expire.time": { + "inherited": true, + "value": "15", + }, + }, + }, + "security": { + "_id": "04/properties/security", + "amconfig.header.cookie": { + "com.iplanet.am.cookie.encode": { + "inherited": true, + "value": false, + }, + "com.iplanet.am.cookie.name": { + "inherited": true, + "value": "iPlanetDirectoryPro", + }, + "com.iplanet.am.cookie.secure": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.crlcache": { + "com.sun.identity.crl.cache.directory.host": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.mtlsenabled": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.password": { + "inherited": true, + "value": null, + }, + "com.sun.identity.crl.cache.directory.port": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchattr": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.searchlocs": { + "inherited": true, + "value": "", + }, + "com.sun.identity.crl.cache.directory.ssl": { + "inherited": true, + "value": false, + }, + "com.sun.identity.crl.cache.directory.user": { + "inherited": true, + "value": "", + }, + }, + "amconfig.header.deserialisationwhitelist": { + "openam.deserialisation.classes.whitelist": { + "inherited": true, + "value": "com.iplanet.dpro.session.DNOrIPAddressListTokenRestriction,com.sun.identity.common.CaseInsensitiveHashMap,com.sun.identity.common.CaseInsensitiveHashSet,com.sun.identity.common.CaseInsensitiveKey,com.sun.identity.console.base.model.SMSubConfig,com.sun.identity.console.session.model.SMSessionData,com.sun.identity.console.user.model.UMUserPasswordResetOptionsData,com.sun.identity.shared.datastruct.OrderedSet,com.sun.xml.bind.util.ListImpl,com.sun.xml.bind.util.ProxyListImpl,java.lang.Boolean,java.lang.Integer,java.lang.Number,java.lang.StringBuffer,java.net.InetAddress,java.security.cert.Certificate,java.security.cert.Certificate$CertificateRep,java.util.ArrayList,java.util.Collections$EmptyMap,java.util.Collections$EmptySet,java.util.Collections$SingletonList,java.util.HashMap,java.util.HashSet,java.util.LinkedHashSet,java.util.Locale,org.forgerock.openam.authentication.service.protocol.RemoteCookie,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteHttpServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteServletRequest,org.forgerock.openam.authentication.service.protocol.RemoteServletResponse,org.forgerock.openam.authentication.service.protocol.RemoteSession,org.forgerock.openam.dpro.session.NoOpTokenRestriction,org.forgerock.openam.dpro.session.ProofOfPossessionTokenRestriction", + }, + }, + "amconfig.header.encryption": { + "am.encryption.pwd": { + "inherited": true, + "value": "@AM_ENC_PWD@", + }, + "am.encryption.secret.alias": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.enabled": { + "inherited": true, + "value": false, + }, + "am.encryption.secret.keyPass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreFile": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystorePass": { + "inherited": true, + "value": null, + }, + "am.encryption.secret.keystoreType": { + "inherited": true, + "value": "JCEKS", + }, + "com.iplanet.security.SecureRandomFactoryImpl": { + "inherited": true, + "value": "com.iplanet.am.util.SecureRandomFactoryImpl", + }, + "com.iplanet.security.encryptor": { + "inherited": true, + "value": "com.iplanet.services.util.JCEEncryption", + }, + }, + "amconfig.header.ocsp.check": { + "com.sun.identity.authentication.ocsp.responder.nickname": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocsp.responder.url": { + "inherited": true, + "value": "", + }, + "com.sun.identity.authentication.ocspCheck": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.securitykey": { + "com.sun.identity.saml.xmlsig.certalias": { + "inherited": true, + "value": "test", + }, + "com.sun.identity.saml.xmlsig.keypass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.keypass", + }, + "com.sun.identity.saml.xmlsig.keystore": { + "inherited": true, + "value": "%BASE_DIR%/security/keystores/keystore.jceks", + }, + "com.sun.identity.saml.xmlsig.storepass": { + "inherited": true, + "value": "%BASE_DIR%/security/secrets/default/.storepass", + }, + "com.sun.identity.saml.xmlsig.storetype": { + "inherited": true, + "value": "JCEKS", + }, + }, + "amconfig.header.validation": { + "com.iplanet.am.clientIPCheckEnabled": { + "inherited": true, + "value": false, + }, + "com.iplanet.services.comm.server.pllrequest.maxContentLength": { + "inherited": true, + "value": "16384", + }, + }, + }, + "session": { + "_id": "04/properties/session", + "amconfig.header.sessionlogging": { + "com.iplanet.am.stats.interval": { + "inherited": true, + "value": "60", + }, + "com.iplanet.services.stats.directory": { + "inherited": true, + "value": "%BASE_DIR%/var/stats", + }, + "com.iplanet.services.stats.state": { + "inherited": true, + "value": "file", + }, + "com.sun.am.session.enableHostLookUp": { + "inherited": true, + "value": false, + }, + }, + "amconfig.header.sessionnotification": { + "com.iplanet.am.notification.threadpool.size": { + "inherited": true, + "value": "10", + }, + "com.iplanet.am.notification.threadpool.threshold": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionthresholds": { + "com.iplanet.am.session.invalidsessionmaxtime": { + "inherited": true, + "value": "3", + }, + "org.forgerock.openam.session.service.access.persistence.caching.maxsize": { + "inherited": true, + "value": "5000", + }, + }, + "amconfig.header.sessionvalidation": { + "com.sun.am.session.caseInsensitiveDN": { + "inherited": true, + "value": true, + }, + }, + }, + "uma": { + "_id": "04/properties/uma", + "amconfig.org.forgerock.services.resourcesets.store.common.section": { + "org.forgerock.services.resourcesets.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.resourcesets.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.resourcesets.store.external.section": { + "org.forgerock.services.resourcesets.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.resourcesets.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.resourcesets.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.resourcesets.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.common.section": { + "org.forgerock.services.uma.labels.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.labels.store.max.connections": { + "inherited": true, + "value": "2", + }, + "org.forgerock.services.uma.labels.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.labels.store.external.section": { + "org.forgerock.services.uma.labels.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.labels.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.labels.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.labels.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.common.section": { + "org.forgerock.services.uma.pendingrequests.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.uma.pendingrequests.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.uma.pendingrequests.store.external.section": { + "org.forgerock.services.uma.pendingrequests.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.uma.pendingrequests.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.uma.pendingrequests.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.uma.pendingrequests.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.common.section": { + "org.forgerock.services.umaaudit.store.location": { + "inherited": true, + "value": "default", + }, + "org.forgerock.services.umaaudit.store.max.connections": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.root.suffix": { + "inherited": true, + "value": "", + }, + }, + "amconfig.org.forgerock.services.umaaudit.store.external.section": { + "org.forgerock.services.umaaudit.store.directory.name": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.heartbeat": { + "inherited": true, + "value": "10", + }, + "org.forgerock.services.umaaudit.store.loginid": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.mtls.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.password": { + "inherited": true, + "value": null, + }, + "org.forgerock.services.umaaudit.store.ssl.enabled": { + "inherited": true, + "value": "", + }, + "org.forgerock.services.umaaudit.store.starttls.enabled": { + "inherited": true, + "value": "", + }, + }, + }, + }, + "siteName": null, + "url": "http://localhost:8082/am", + }, + }, + }, + "service": { + "ConfigurationVersionService": { + "_id": "", + "_type": { + "_id": "ConfigurationVersionService", + "collection": false, + "name": "Configuration Version Service", + }, + "appliedRuleIds": [ + "AME-23273", + "AME-21032", + "AME-21768", + ], + "configurationVersion": "8.0.0.0", + "location": "global", + "nextDescendents": [], + }, + "CorsService": { + "_id": "", + "_type": { + "_id": "CorsService", + "collection": false, + "name": "CORS Service", + }, + "enabled": true, + "location": "global", + "nextDescendents": [], + }, + "DataStoreService": { + "_id": "", + "_type": { + "_id": "DataStoreService", + "collection": false, + "name": "External Data Stores", + }, + "defaults": { + "applicationDataStoreId": "fd270e31-1788-4193-8734-eb2d500c47f3", + "policyDataStoreId": "fd270e31-1788-4193-8734-eb2d500c47f3", + }, + "location": "global", + "nextDescendents": [], + }, + "GoogleCloudServiceAccountService": { + "_id": "", + "_type": { + "_id": "GoogleCloudServiceAccountService", + "collection": false, + "name": "Google Cloud Platform Service Accounts", + }, + "enabled": true, + "location": "global", + "nextDescendents": [ + { + "_id": "default", + "_type": { + "_id": "serviceAccounts", + "collection": true, + "name": "GCP Service Account", + }, + "allowedRealms": [ + "*", + ], + "allowedSecretNamePatterns": [ + "*", + ], + "disallowedSecretNamePatterns": [], + }, + ], + }, + "IdentityAssertionService": { + "_id": "", + "_type": { + "_id": "IdentityAssertionService", + "collection": false, + "name": "Identity Assertion Service", + }, + "cacheDuration": 120, + "defaults": { + "cacheDuration": 120, + "enable": true, + }, + "enable": true, + "location": "global", + "nextDescendents": [], + }, + "RadiusServerService": { + "_id": "", + "_type": { + "_id": "RadiusServerService", + "collection": false, + "name": "RADIUS Server", + }, + "location": "global", + "nextDescendents": [], + "radiusListenerEnabled": "NO", + "radiusServerPort": 1812, + "radiusThreadPoolCoreSize": 1, + "radiusThreadPoolKeepaliveSeconds": 10, + "radiusThreadPoolMaxSize": 10, + "radiusThreadPoolQueueSize": 20, + }, + "RemoteConsentService": { + "_id": "", + "_type": { + "_id": "RemoteConsentService", + "collection": false, + "name": "Remote Consent Service", + }, + "defaults": { + "consentResponseTimeLimit": 2, + "jwkStoreCacheMissCacheTime": 1, + "jwkStoreCacheTimeout": 5, + }, + "location": "global", + "nextDescendents": [], + }, + "SocialIdentityProviders": { + "_id": "", + "_type": { + "_id": "SocialIdentityProviders", + "collection": false, + "name": "Social Identity Provider Service", + }, + "defaults": { + "enabled": true, + }, + "location": "global", + "nextDescendents": [], + }, + "amSessionPropertyWhitelist": { + "_id": "", + "_type": { + "_id": "amSessionPropertyWhitelist", + "collection": false, + "name": "Session Property Whitelist Service", + }, + "defaults": { + "sessionPropertyWhitelist": [ + "AMCtxId", + ], + "whitelistedQueryProperties": [], + }, + "location": "global", + "nextDescendents": [], + }, + "androidKeyAttestation": { + "_id": "", + "_type": { + "_id": "androidKeyAttestation", + "collection": false, + "name": "Android Key Attestation", + }, + "cacheDuration": 24, + "defaults": { + "crlUrl": "https://android.googleapis.com/attestation/status", + }, + "location": "global", + "nextDescendents": [], + }, + "audit": { + "_id": "", + "_type": { + "_id": "audit", + "collection": false, + "name": "Audit Logging", + }, + "auditEnabled": true, + "blacklistFieldFilters": [], + "defaults": { + "auditEnabled": true, + "blacklistFieldFilters": [], + "whitelistFieldFilters": [], + }, + "location": "global", + "nextDescendents": [ + { + "_id": "Global JSON Handler", + "_type": { + "_id": "JSON", + "collection": true, + "name": "JSON", + }, + "commonHandler": { + "enabled": true, + "topics": [ + "access", + "activity", + "config", + "authentication", + ], + }, + "commonHandlerPlugin": { + "handlerFactory": "org.forgerock.openam.audit.events.handlers.JsonAuditEventHandlerFactory", + }, + "jsonBuffering": { + "bufferingMaxSize": "100000", + "bufferingWriteInterval": "5", + }, + "jsonConfig": { + "elasticsearchCompatible": false, + "location": "%BASE_DIR%/var/audit/", + "rotationRetentionCheckInterval": "5", + }, + "jsonFileRetention": { + "retentionMaxDiskSpaceToUse": "-1", + "retentionMaxNumberOfHistoryFiles": "1", + "retentionMinFreeSpaceRequired": "-1", + }, + "jsonFileRotation": { + "rotationEnabled": true, + "rotationFileSuffix": "-yyyy.MM.dd-HH.mm.ss", + "rotationInterval": "-1", + "rotationMaxFileSize": "100000000", + "rotationTimes": [], + }, + }, + ], + "whitelistFieldFilters": [], + }, + "authenticatorOathService": { + "_id": "", + "_type": { + "_id": "authenticatorOathService", + "collection": false, + "name": "ForgeRock Authenticator (OATH) Service", + }, + "defaults": { + "authenticatorOATHDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "authenticatorOATHDeviceSettingsEncryptionKeystoreKeyPairAlias": "pushDeviceProfiles", + "authenticatorOATHDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorOATHDeviceSettingsEncryptionKeystoreType": "JKS", + "authenticatorOATHDeviceSettingsEncryptionScheme": "NONE", + "authenticatorOATHSkippableName": "oath2faEnabled", + "oathAttrName": "oathDeviceProfiles", + }, + "location": "global", + "nextDescendents": [], + }, + "authenticatorPushService": { + "_id": "", + "_type": { + "_id": "authenticatorPushService", + "collection": false, + "name": "ForgeRock Authenticator (Push) Service", + }, + "defaults": { + "authenticatorPushDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "authenticatorPushDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorPushDeviceSettingsEncryptionKeystoreType": "JKS", + "authenticatorPushDeviceSettingsEncryptionScheme": "NONE", + "authenticatorPushSkippableName": "push2faEnabled", + "pushAttrName": "pushDeviceProfiles", + }, + "location": "global", + "nextDescendents": [], + }, + "authenticatorWebAuthnService": { + "_id": "", + "_type": { + "_id": "authenticatorWebAuthnService", + "collection": false, + "name": "WebAuthn Profile Encryption Service", + }, + "defaults": { + "authenticatorWebAuthnDeviceSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jceks", + "authenticatorWebAuthnDeviceSettingsEncryptionKeystorePassword": null, + "authenticatorWebAuthnDeviceSettingsEncryptionKeystoreType": "JCEKS", + "authenticatorWebAuthnDeviceSettingsEncryptionScheme": "NONE", + "webauthnAttrName": "webauthnDeviceProfiles", + }, + "location": "global", + "nextDescendents": [], + }, + "baseurl": { + "_id": "", + "_type": { + "_id": "baseurl", + "collection": false, + "name": "Base URL Source", + }, + "defaults": { + "contextPath": "/am", + "source": "REQUEST_VALUES", + }, + "location": "global", + "nextDescendents": [], + }, + "dashboard": { + "_id": "", + "_type": { + "_id": "dashboard", + "collection": false, + "name": "Dashboard", + }, + "defaults": { + "assignedDashboard": [], + }, + "location": "global", + "nextDescendents": [ + { + "_id": "Google", + "_type": { + "_id": "instances", + "collection": true, + "name": "instance", + }, + "className": "SAML2ApplicationClass", + "displayName": "Google", + "icfIdentifier": "idm magic 34", + "icon": "images/logos/googleplus.png", + "login": "http://www.google.com", + "name": "Google", + }, + { + "_id": "SalesForce", + "_type": { + "_id": "instances", + "collection": true, + "name": "instance", + }, + "className": "SAML2ApplicationClass", + "displayName": "SalesForce", + "icfIdentifier": "idm magic 12", + "icon": "images/logos/salesforce.png", + "login": "http://www.salesforce.com", + "name": "SalesForce", + }, + { + "_id": "ZenDesk", + "_type": { + "_id": "instances", + "collection": true, + "name": "instance", + }, + "className": "SAML2ApplicationClass", + "displayName": "ZenDesk", + "icfIdentifier": "idm magic 56", + "icon": "images/logos/zendesk.png", + "login": "http://www.ZenDesk.com", + "name": "ZenDesk", + }, + ], + }, + "deviceBindingService": { + "_id": "", + "_type": { + "_id": "deviceBindingService", + "collection": false, + "name": "Device Binding Service", + }, + "defaults": { + "deviceBindingAttrName": "boundDevices", + "deviceBindingSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceBindingSettingsEncryptionKeystorePassword": null, + "deviceBindingSettingsEncryptionKeystoreType": "JKS", + "deviceBindingSettingsEncryptionScheme": "NONE", + }, + "location": "global", + "nextDescendents": [], + }, + "deviceIdService": { + "_id": "", + "_type": { + "_id": "deviceIdService", + "collection": false, + "name": "Device ID Service", + }, + "defaults": { + "deviceIdAttrName": "devicePrintProfiles", + "deviceIdSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceIdSettingsEncryptionKeystorePassword": null, + "deviceIdSettingsEncryptionKeystoreType": "JKS", + "deviceIdSettingsEncryptionScheme": "NONE", + }, + "location": "global", + "nextDescendents": [], + }, + "deviceProfilesService": { + "_id": "", + "_type": { + "_id": "deviceProfilesService", + "collection": false, + "name": "Device Profiles Service", + }, + "defaults": { + "deviceProfilesAttrName": "deviceProfiles", + "deviceProfilesSettingsEncryptionKeystore": "/root/am/security/keystores/keystore.jks", + "deviceProfilesSettingsEncryptionKeystorePassword": null, + "deviceProfilesSettingsEncryptionKeystoreType": "JKS", + "deviceProfilesSettingsEncryptionScheme": "NONE", + }, + "location": "global", + "nextDescendents": [], + }, + "email": { + "_id": "", + "_type": { + "_id": "email", + "collection": false, + "name": "Email Service", + }, + "defaults": { + "emailAddressAttribute": "mail", + "emailImplClassName": "org.forgerock.openam.services.email.MailServerImpl", + "emailRateLimitSeconds": 1, + "port": 465, + "sslState": "SSL", + }, + "location": "global", + "nextDescendents": [], + }, + "federation/common": { + "_id": "", + "_type": { + "_id": "federation/common", + "collection": false, + "name": "Common Federation Configuration", + }, + "algorithms": { + "DigestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha256", + "QuerySignatureAlgorithmDSA": "http://www.w3.org/2009/xmldsig11#dsa-sha256", + "QuerySignatureAlgorithmEC": "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512", + "QuerySignatureAlgorithmRSA": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", + "aesKeyWrapAlgorithm": "http://www.w3.org/2001/04/xmlenc#kw-aes256", + "canonicalizationAlgorithm": "http://www.w3.org/2001/10/xml-exc-c14n#", + "maskGenerationFunction": "http://www.w3.org/2009/xmlenc11#mgf1sha256", + "rsaKeyTransportAlgorithm": "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p", + "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", + "transformationAlgorithm": "http://www.w3.org/2001/10/xml-exc-c14n#", + }, + "generalConfig": { + "certificateChecking": "on", + "maxContentLength": 20480, + "samlErrorPageHttpBinding": "HTTP-POST", + "samlErrorPageUrl": "/saml2/jsp/saml2error.jsp", + }, + "implementationClasses": { + "configurationClass": "com.sun.identity.plugin.configuration.impl.ConfigurationInstanceImpl", + "datastoreClass": "com.sun.identity.plugin.datastore.impl.IdRepoDataStoreProvider", + "keyProviderClass": "com.sun.identity.saml.xmlsig.JKSKeyProvider", + "loggerClass": "com.sun.identity.plugin.log.impl.LogProvider", + "passwordDecoderClass": "com.sun.identity.saml.xmlsig.FMPasswordDecoder", + "rootUrlProviderClass": "org.forgerock.openam.federation.plugin.rooturl.impl.FmRootUrlProvider", + "sessionProviderClass": "com.sun.identity.plugin.session.impl.FMSessionProvider", + "signatureProviderClass": "com.sun.identity.saml.xmlsig.AMSignatureProvider", + }, + "location": "global", + "montoring": { + "monitoringAgentClass": "com.sun.identity.plugin.monitoring.impl.AgentProvider", + "monitoringSaml2Class": "com.sun.identity.plugin.monitoring.impl.FedMonSAML2SvcProvider", + }, + "nextDescendents": [], + }, + "federation/multi": { + "_id": "", + "_type": { + "_id": "federation/multi", + "collection": false, + "name": "Multi-Federation Protocol", + }, + "location": "global", + "nextDescendents": [], + "singleLogoutHandlerList": [ + "key=WSFED|class=com.sun.identity.multiprotocol.WSFederationSingleLogoutHandler", + "key=SAML2|class=com.sun.identity.multiprotocol.SAML2SingleLogoutHandler", + ], + }, + "federation/saml2soapbinding": { + "_id": "", + "_type": { + "_id": "federation/saml2soapbinding", + "collection": false, + "name": "SAML v2.0 SOAP Binding", + }, + "location": "global", + "nextDescendents": [], + "requestHandlers": [], + }, + "globalization": { + "_id": "", + "_type": { + "_id": "globalization", + "collection": false, + "name": "Globalization Settings", + }, + "charsetMappings": [ + "locale=zh|charset=UTF-8;GB2312", + "locale=ar|charset=UTF-8;ISO-8859-6", + "locale=es|charset=UTF-8;ISO-8859-15", + "locale=de|charset=UTF-8;ISO-8859-15", + "locale=zh_TW|charset=UTF-8;BIG5", + "locale=fr|charset=UTF-8;ISO-8859-15", + "locale=ko|charset=UTF-8;EUC-KR", + "locale=en|charset=UTF-8;ISO-8859-1", + "locale=th|charset=UTF-8;TIS-620", + "locale=ja|charset=UTF-8;Shift_JIS;EUC-JP", + ], + "defaults": { + "commonNameFormats": [ + "zh={sn}{givenname}", + ], + }, + "location": "global", + "nextDescendents": [], + "sun-identity-g11n-settings-charset-alias-mapping": [ + "mimeName=EUC-KR|javaName=EUC_KR", + "mimeName=EUC-JP|javaName=EUC_JP", + "mimeName=Shift_JIS|javaName=SJIS", + ], + }, + "id-repositories": { + "_id": "", + "_type": { + "_id": "id-repositories", + "collection": false, + "name": "sunIdentityRepositoryService", + }, + "defaults": { + "sunIdRepoAttributeCombiner": "com.iplanet.am.sdk.AttributeCombiner", + "sunIdRepoAttributeValidator": [ + "class=com.sun.identity.idm.server.IdRepoAttributeValidatorImpl", + "minimumPasswordLength=8", + "usernameInvalidChars=*|(|)|&|!", + ], + }, + "location": "global", + "nextDescendents": [ + { + "_id": "agent", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "agentgroup", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "agentonly", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "filteredrole", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "group", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "realm", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "role", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "user", + "_type": { + "_id": "SupportedIdentities", + "collection": true, + "name": "SupportedIdentities", + }, + }, + { + "_id": "amAdmin", + "_type": { + "_id": "user", + "collection": true, + "name": "User", + }, + "cn": "amAdmin", + "dn": "uid=amAdmin,ou=people,", + "givenName": "amAdmin", + "inetUserStatus": "Active", + "iplanet-am-user-auth-config": "[Empty]", + "roles": [], + "sn": "amAdmin", + "userPassword": null, + }, + { + "_id": "anonymous", + "_type": { + "_id": "user", + "collection": true, + "name": "User", + }, + "cn": "anonymous", + "dn": "uid=anonymous,ou=people,", + "givenName": "anonymous", + "inetUserStatus": "Inactive", + "iplanet-am-user-auth-config": "[Empty]", + "roles": [], + "sn": "anonymous", + "userPassword": null, + }, + { + "_id": "dsameuser", + "_type": { + "_id": "user", + "collection": true, + "name": "User", + }, + "dn": "cn=dsameuser,ou=DSAME Users,", + "inetUserStatus": "Active", + "iplanet-am-user-auth-config": "[Empty]", + "roles": [], + "userPassword": null, + }, + ], + }, + "idm-integration": { + "_id": "", + "_type": { + "_id": "idm-integration", + "collection": false, + "name": "IDM Provisioning", + }, + "configurationCacheDuration": 0, + "enabled": false, + "idmProvisioningClient": "idm-provisioning", + "jwtSigningCompatibilityMode": false, + "location": "global", + "nextDescendents": [], + "provisioningClientScopes": [ + "fr:idm:*", + ], + "useInternalOAuth2Provider": false, + }, + "iot": { + "_id": "", + "_type": { + "_id": "iot", + "collection": false, + "name": "IoT Service", + }, + "defaults": { + "attributeAllowlist": [ + "thingConfig", + ], + "createOAuthClient": false, + "createOAuthJwtIssuer": false, + "oauthClientName": "forgerock-iot-oauth2-client", + "oauthJwtIssuerName": "forgerock-iot-jwt-issuer", + }, + "location": "global", + "nextDescendents": [], + }, + "logging": { + "_id": "", + "_type": { + "_id": "logging", + "collection": false, + "name": "Logging", + }, + "database": { + "databaseFailureMemoryBufferSize": 2, + "driver": "oracle.jdbc.driver.OracleDriver", + "maxRecords": 500, + "user": "dbuser", + }, + "file": { + "location": "%BASE_DIR%/var/audit/", + "maxFileSize": 100000000, + "numberHistoryFiles": 1, + "rotationEnabled": true, + "rotationInterval": -1, + "suffix": "-MM.dd.yy-kk.mm", + }, + "general": { + "bufferSize": 25, + "bufferTime": 60, + "buffering": "ON", + "certificateStore": "%BASE_DIR%/var/audit/Logger.jks", + "fields": [ + "IPAddr", + "LoggedBy", + "LoginID", + "NameID", + "ModuleName", + "ContextID", + "Domain", + "LogLevel", + "HostName", + "MessageID", + ], + "filesPerKeystore": 5, + "jdkLoggingLevel": "INFO", + "security": "OFF", + "signaturePeriod": 900, + "signingAlgorithm": "SHA1withRSA", + "status": "INACTIVE", + "type": "File", + "verifyPeriod": 3600, + }, + "location": "global", + "nextDescendents": [], + "resolveHostName": false, + "syslog": { + "facility": "local5", + "host": "localhost", + "port": 514, + "protocol": "UDP", + "timeout": 30, + }, + }, + "monitoring": { + "_id": "", + "_type": { + "_id": "monitoring", + "collection": false, + "name": "Monitoring", + }, + "authfilePath": "%BASE_DIR%/security/openam_mon_auth", + "enabled": true, + "httpEnabled": false, + "httpPort": 8082, + "location": "global", + "nextDescendents": [ + { + "_id": "crest", + "_type": { + "_id": "crest", + "collection": true, + "name": "CREST Reporter", + }, + "enabled": false, + }, + { + "_id": "prometheus", + "_type": { + "_id": "prometheus", + "collection": true, + "name": "Prometheus Reporter", + }, + "authenticationType": "BASIC", + "enabled": false, + "password": null, + "username": "prometheus", + }, + ], + "policyHistoryWindowSize": 10000, + "rmiEnabled": false, + "rmiPort": 9999, + "sessionHistoryWindowSize": 10000, + "snmpEnabled": false, + "snmpPort": 8085, + }, + "naming": { + "_id": "", + "_type": { + "_id": "naming", + "collection": false, + "name": "Naming", + }, + "endpointConfig": { + "jaxwsUrl": "%protocol://%host:%port%uri/identityservices/", + "stsMexUrl": "%protocol://%host:%port%uri/sts/mex", + "stsUrl": "%protocol://%host:%port%uri/sts", + }, + "federationConfig": { + "jaxrpcUrl": "%protocol://%host:%port%uri/jaxrpc/", + "samlAssertionManagerUrl": "%protocol://%host:%port%uri/AssertionManagerServlet/AssertionManagerIF", + "samlAwareServletUrl": "%protocol://%host:%port%uri/SAMLAwareServlet", + "samlPostServletUrl": "%protocol://%host:%port%uri/SAMLPOSTProfileServlet", + "samlSoapReceiverUrl": "%protocol://%host:%port%uri/SAMLSOAPReceiver", + }, + "generalConfig": { + "authUrl": "%protocol://%host:%port%uri/authservice", + "loggingUrl": "%protocol://%host:%port%uri/loggingservice", + "policyUrl": "%protocol://%host:%port%uri/policyservice", + "profileUrl": "%protocol://%host:%port%uri/profileservice", + "sessionUrl": "%protocol://%host:%port%uri/sessionservice", + }, + "location": "global", + "nextDescendents": [], + }, + "oauth-oidc": { + "_id": "", + "_type": { + "_id": "oauth-oidc", + "collection": false, + "name": "OAuth2 Provider", + }, + "allowUnauthorisedAccessToUserCodeForm": false, + "blacklistCacheSize": 10000, + "blacklistPollInterval": 60, + "blacklistPurgeDelay": 1, + "defaults": { + "advancedOAuth2Config": { + "allowClientCredentialsInTokenRequestQueryParameters": false, + "allowedAudienceValues": [], + "authenticationAttributes": [ + "uid", + ], + "codeVerifierEnforced": "false", + "defaultScopes": [], + "displayNameAttribute": "cn", + "expClaimRequiredInRequestObject": false, + "grantTypes": [ + "implicit", + "urn:ietf:params:oauth:grant-type:saml2-bearer", + "refresh_token", + "password", + "client_credentials", + "urn:ietf:params:oauth:grant-type:device_code", + "authorization_code", + "urn:openid:params:grant-type:ciba", + "urn:ietf:params:oauth:grant-type:uma-ticket", + "urn:ietf:params:oauth:grant-type:token-exchange", + "urn:ietf:params:oauth:grant-type:jwt-bearer", + ], + "hashSalt": "changeme", + "includeSubnameInTokenClaims": true, + "macaroonTokenFormat": "V2", + "maxAgeOfRequestObjectNbfClaim": 0, + "maxDifferenceBetweenRequestObjectNbfAndExp": 0, + "moduleMessageEnabledInPasswordGrant": false, + "nbfClaimRequiredInRequestObject": false, + "parRequestUriLifetime": 90, + "persistentClaims": [], + "refreshTokenGracePeriod": 0, + "requestObjectProcessing": "OIDC", + "requirePushedAuthorizationRequests": false, + "responseTypeClasses": [ + "code|org.forgerock.oauth2.core.AuthorizationCodeResponseTypeHandler", + "id_token|org.forgerock.openidconnect.IdTokenResponseTypeHandler", + "token|org.forgerock.oauth2.core.TokenResponseTypeHandler", + ], + "supportedScopes": [], + "supportedSubjectTypes": [ + "public", + "pairwise", + ], + "tlsCertificateBoundAccessTokensEnabled": true, + "tlsCertificateRevocationCheckingEnabled": false, + "tlsClientCertificateHeaderFormat": "URLENCODED_PEM", + "tokenCompressionEnabled": false, + "tokenEncryptionEnabled": false, + "tokenExchangeClasses": [ + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToAccessTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToAccessTokenExchanger", + ], + "tokenSigningAlgorithm": "HS256", + "tokenValidatorClasses": [ + "urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.OidcIdTokenValidator", + "urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.OAuth2AccessTokenValidator", + ], + }, + "advancedOIDCConfig": { + "alwaysAddClaimsToToken": false, + "amrMappings": {}, + "authorisedIdmDelegationClients": [], + "authorisedOpenIdConnectSSOClients": [], + "claimsParameterSupported": false, + "defaultACR": [], + "idTokenInfoClientAuthenticationEnabled": true, + "includeAllKtyAlgCombinationsInJwksUri": false, + "loaMapping": {}, + "storeOpsTokens": true, + "supportedAuthorizationResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedAuthorizationResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedAuthorizationResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRequestParameterEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRequestParameterEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRequestParameterSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenEndpointAuthenticationSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenIntrospectionResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedTokenIntrospectionResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedTokenIntrospectionResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedUserInfoEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedUserInfoEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedUserInfoSigningAlgorithms": [ + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + ], + "useForceAuthnForMaxAge": false, + "useForceAuthnForPromptLogin": false, + }, + "cibaConfig": { + "cibaAuthReqIdLifetime": 600, + "cibaMinimumPollingInterval": 2, + "supportedCibaSigningAlgorithms": [ + "ES256", + "PS256", + ], + }, + "clientDynamicRegistrationConfig": { + "allowDynamicRegistration": false, + "dynamicClientRegistrationScope": "dynamic_client_registration", + "dynamicClientRegistrationSoftwareStatementRequired": false, + "generateRegistrationAccessTokens": true, + "requiredSoftwareStatementAttestedAttributes": [ + "redirect_uris", + ], + }, + "consent": { + "clientsCanSkipConsent": false, + "enableRemoteConsent": false, + "supportedRcsRequestEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsRequestEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsRequestSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRcsResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsResponseEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsResponseSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "coreOAuth2Config": { + "accessTokenLifetime": 3600, + "accessTokenMayActScript": "[Empty]", + "codeLifetime": 120, + "issueRefreshToken": true, + "issueRefreshTokenOnRefreshedToken": true, + "macaroonTokensEnabled": false, + "oidcMayActScript": "[Empty]", + "refreshTokenLifetime": 604800, + "scopesPolicySet": "oauth2Scopes", + "statelessTokensEnabled": false, + "usePolicyEngineForScope": false, + }, + "coreOIDCConfig": { + "jwtTokenLifetime": 3600, + "oidcDiscoveryEndpointEnabled": false, + "overrideableOIDCClaims": [], + "supportedClaims": [], + "supportedIDTokenEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedIDTokenEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedIDTokenSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "deviceCodeConfig": { + "deviceCodeLifetime": 300, + "devicePollInterval": 5, + "deviceUserCodeCharacterSet": "234567ACDEFGHJKLMNPQRSTWXYZabcdefhijkmnopqrstwxyz", + "deviceUserCodeLength": 8, + }, + "pluginsConfig": { + "accessTokenEnricherClass": "org.forgerock.oauth2.core.plugins.registry.DefaultAccessTokenEnricher", + "accessTokenModificationPluginType": "SCRIPTED", + "accessTokenModificationScript": "d22f9a0c-426a-4466-b95e-d0f125b0d5fa", + "authorizeEndpointDataProviderClass": "org.forgerock.oauth2.core.plugins.registry.DefaultEndpointDataProvider", + "authorizeEndpointDataProviderPluginType": "JAVA", + "authorizeEndpointDataProviderScript": "3f93ef6e-e54a-4393-aba1-f322656db28a", + "evaluateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeEvaluator", + "evaluateScopePluginType": "JAVA", + "evaluateScopeScript": "da56fe60-8b38-4c46-a405-d6b306d4b336", + "oidcClaimsPluginType": "SCRIPTED", + "oidcClaimsScript": "36863ffb-40ec-48b9-94b1-9a99f71cc3b5", + "userCodeGeneratorClass": "org.forgerock.oauth2.core.plugins.registry.DefaultUserCodeGenerator", + "validateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeValidator", + "validateScopePluginType": "JAVA", + "validateScopeScript": "25e6c06d-cf70-473b-bd28-26931edc476b", + }, + }, + "jwtTokenLifetimeValidationEnabled": true, + "jwtTokenRequiredClaims": [], + "jwtTokenUnreasonableLifetime": 86400, + "location": "global", + "nextDescendents": [], + "statelessGrantTokenUpgradeCompatibilityMode": false, + "storageScheme": "CTS_ONE_TO_ONE_MODEL", + }, + "pingOneWorkerService": { + "_id": "", + "_type": { + "_id": "pingOneWorkerService", + "collection": false, + "name": "PingOne Worker Service", + }, + "defaults": { + "enabled": true, + }, + "location": "global", + "nextDescendents": [], + }, + "platform": { + "_id": "", + "_type": { + "_id": "platform", + "collection": false, + "name": "Platform", + }, + "cookieDomains": [], + "locale": "en_US", + "location": "global", + "nextDescendents": [], + }, + "policyconfiguration": { + "_id": "", + "_type": { + "_id": "policyconfiguration", + "collection": false, + "name": "Policy Configuration", + }, + "continueEvaluationOnDeny": false, + "defaults": { + "bindDn": "cn=Directory Manager", + "checkIfResourceTypeExists": true, + "connectionPoolMaximumSize": 10, + "connectionPoolMinimumSize": 1, + "ldapServer": [ + "localhost:50636", + ], + "maximumSearchResults": 100, + "mtlsEnabled": false, + "policyHeartbeatInterval": 10, + "policyHeartbeatTimeUnit": "SECONDS", + "realmSearchFilter": "(objectclass=sunismanagedorganization)", + "searchTimeout": 5, + "sslEnabled": true, + "subjectsResultTTL": 10, + "userAliasEnabled": false, + "usersBaseDn": "dc=openam,dc=forgerock,dc=org", + "usersSearchAttribute": "uid", + "usersSearchFilter": "(objectclass=inetorgperson)", + "usersSearchScope": "SCOPE_SUB", + }, + "location": "global", + "nextDescendents": [], + "realmAliasReferrals": false, + "resourceComparators": [ + "serviceType=iPlanetAMWebAgentService|class=com.sun.identity.policy.plugins.HttpURLResourceName|wildcard=*|oneLevelWildcard=-*-|delimiter=/|caseSensitive=false", + ], + }, + "pushNotification": { + "_id": "", + "_type": { + "_id": "pushNotification", + "collection": false, + "name": "Push Notification Service", + }, + "defaults": { + "delegateFactory": "org.forgerock.openam.services.push.sns.SnsHttpDelegateFactory", + "mdCacheSize": 10000, + "mdConcurrency": 16, + "mdDuration": 120, + "region": "us-east-1", + }, + "location": "global", + "nextDescendents": [], + }, + "rest": { + "_id": "", + "_type": { + "_id": "rest", + "collection": false, + "name": "REST APIs", + }, + "csrfFilterEnabled": true, + "defaultProtocolVersion": "Latest", + "defaultVersion": "Latest", + "descriptionsState": "STATIC", + "location": "global", + "nextDescendents": [], + "warningHeader": true, + }, + "saml2": { + "_id": "", + "_type": { + "_id": "saml2", + "collection": false, + "name": "SAML v2.0 Service Configuration", + }, + "bufferLength": 2048, + "caCertValidation": false, + "cacheCleanupInterval": 600, + "encryptedKeyInKeyInfo": true, + "idpDiscoveryCookieType": "PERSISTENT", + "idpDiscoveryUrlSchema": "HTTPS", + "location": "global", + "nameIDInfoAttribute": "sun-fm-saml2-nameid-info", + "nameIDInfoKeyAttribute": "sun-fm-saml2-nameid-infokey", + "nextDescendents": [], + "signingCertValidation": false, + "xmlEncryptionClass": "com.sun.identity.saml2.xmlenc.FMEncProvider", + "xmlSigningClass": "com.sun.identity.saml2.xmlsig.FMSigProvider", + }, + "security": { + "_id": "", + "_type": { + "_id": "security", + "collection": false, + "name": "Legacy User Self Service", + }, + "defaults": { + "confirmationIdHmacKey": "YcGfeuzSM14OG5djEcxEnvPydX28nsuxAZyDX1VA8iY=", + "forgotPasswordConfirmationUrl": "http://localhost:8080/am/XUI/confirm.html", + "forgotPasswordEnabled": false, + "forgotPasswordTokenLifetime": 900, + "protectedUserAttributes": [], + "selfRegistrationConfirmationUrl": "http://localhost:8080/am/XUI/confirm.html", + "selfRegistrationEnabled": false, + "selfRegistrationTokenLifetime": 900, + "selfServiceEnabled": false, + "userRegisteredDestination": "default", + }, + "location": "global", + "nextDescendents": [], + }, + "selfService": { + "_id": "", + "_type": { + "_id": "selfService", + "collection": false, + "name": "User Self-Service", + }, + "defaults": { + "advancedConfig": { + "forgottenPasswordConfirmationUrl": "http://localhost:8080/am/XUI/?realm=\${realm}#passwordReset/", + "forgottenPasswordServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.ForgottenPasswordConfigProvider", + "forgottenUsernameServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.ForgottenUsernameConfigProvider", + "userRegistrationConfirmationUrl": "http://localhost:8080/am/XUI/?realm=\${realm}#register/", + "userRegistrationServiceConfigClass": "org.forgerock.openam.selfservice.config.flows.UserRegistrationConfigProvider", + }, + "forgottenPassword": { + "forgottenPasswordCaptchaEnabled": false, + "forgottenPasswordEmailBody": [ + "en|

Click on this link to reset your password.

", + ], + "forgottenPasswordEmailSubject": [ + "en|Forgotten password email", + ], + "forgottenPasswordEmailVerificationEnabled": true, + "forgottenPasswordEnabled": false, + "forgottenPasswordKbaEnabled": false, + "forgottenPasswordTokenPaddingLength": 450, + "forgottenPasswordTokenTTL": 300, + "numberOfAllowedAttempts": 1, + "numberOfAttemptsEnforced": false, + }, + "forgottenUsername": { + "forgottenUsernameCaptchaEnabled": false, + "forgottenUsernameEmailBody": [ + "en|

Your username is %username%.

", + ], + "forgottenUsernameEmailSubject": [ + "en|Forgotten username email", + ], + "forgottenUsernameEmailUsernameEnabled": true, + "forgottenUsernameEnabled": false, + "forgottenUsernameKbaEnabled": false, + "forgottenUsernameShowUsernameEnabled": false, + "forgottenUsernameTokenTTL": 300, + }, + "generalConfig": { + "captchaVerificationUrl": "https://www.google.com/recaptcha/api/siteverify", + "kbaQuestions": [ + "4|en|What is your mother's maiden name?", + "3|en|What was the name of your childhood pet?", + "2|en|What was the model of your first car?", + "1|en|What is the name of your favourite restaurant?", + ], + "minimumAnswersToDefine": 1, + "minimumAnswersToVerify": 1, + "validQueryAttributes": [ + "uid", + "mail", + "givenName", + "sn", + ], + }, + "profileManagement": { + "profileAttributeWhitelist": [ + "uid", + "telephoneNumber", + "mail", + "kbaInfo", + "givenName", + "sn", + "cn", + ], + "profileProtectedUserAttributes": [ + "telephoneNumber", + "mail", + ], + }, + "userRegistration": { + "userRegisteredDestination": "default", + "userRegistrationCaptchaEnabled": false, + "userRegistrationEmailBody": [ + "en|

Click on this link to register.

", + ], + "userRegistrationEmailSubject": [ + "en|Registration email", + ], + "userRegistrationEmailVerificationEnabled": true, + "userRegistrationEmailVerificationFirstEnabled": false, + "userRegistrationEnabled": false, + "userRegistrationKbaEnabled": false, + "userRegistrationTokenTTL": 300, + "userRegistrationValidUserAttributes": [ + "userPassword", + "mail", + "givenName", + "kbaInfo", + "inetUserStatus", + "sn", + "username", + ], + }, + }, + "location": "global", + "nextDescendents": [], + }, + "selfServiceTrees": { + "_id": "", + "_type": { + "_id": "selfServiceTrees", + "collection": false, + "name": "Self Service Trees", + }, + "defaults": { + "enabled": true, + "treeMapping": {}, + }, + "location": "global", + "nextDescendents": [], + }, + "session": { + "_id": "", + "_type": { + "_id": "session", + "collection": false, + "name": "Session", + }, + "dynamic": { + "maxCachingTime": 3, + "maxIdleTime": 30, + "maxSessionTime": 120, + "quotaLimit": 5, + }, + "general": { + "crossUpgradeReferenceFlag": false, + "dnRestrictionOnly": false, + "latestAccessTimeUpdateFrequency": 60, + "timeoutHandlers": [], + }, + "location": "global", + "nextDescendents": [], + "notifications": { + "notificationPropertyList": [], + "propertyChangeNotifications": "OFF", + }, + "quotas": { + "behaviourWhenQuotaExhausted": "org.forgerock.openam.session.service.DestroyNextExpiringAction", + "denyLoginWhenRepoDown": "NO", + "iplanet-am-session-enable-session-constraint": "OFF", + "quotaConstraintMaxWaitTime": 6000, + }, + "search": { + "maxSessionListSize": 120, + "sessionListRetrievalTimeout": 5, + }, + "stateless": { + "openam-session-stateless-blacklist-cache-size": 10000, + "openam-session-stateless-blacklist-poll-interval": 60, + "openam-session-stateless-blacklist-purge-delay": 1, + "openam-session-stateless-enable-session-blacklisting": false, + "openam-session-stateless-logout-poll-interval": 60, + "statelessCompressionType": "NONE", + "statelessEncryptionAesKey": null, + "statelessEncryptionType": "DIRECT", + "statelessLogoutByUser": false, + "statelessSigningHmacSecret": null, + "statelessSigningType": "HS256", + }, + }, + "socialauthentication": { + "_id": "", + "_type": { + "_id": "socialauthentication", + "collection": false, + "name": "Social Authentication Implementations", + }, + "defaults": { + "authenticationChains": {}, + "displayNames": {}, + "enabledKeys": [], + "icons": {}, + }, + "location": "global", + "nextDescendents": [], + }, + "transaction": { + "_id": "", + "_type": { + "_id": "transaction", + "collection": false, + "name": "Transaction Authentication Service", + }, + "defaults": { + "timeToLive": "180", + }, + "location": "global", + "nextDescendents": [], + }, + "uma": { + "_id": "", + "_type": { + "_id": "uma", + "collection": false, + "name": "UMA Provider", + }, + "defaults": { + "claimsGathering": { + "claimsGatheringService": "[Empty]", + "interactiveClaimsGatheringEnabled": false, + "pctLifetime": 604800, + }, + "generalSettings": { + "deletePoliciesOnDeleteRS": true, + "deleteResourceSetsOnDeleteRS": true, + "emailRequestingPartyOnPendingRequestApproval": true, + "emailResourceOwnerOnPendingRequestCreation": true, + "grantResourceOwnerImplicitConsent": true, + "grantRptConditions": [ + "REQUEST_PARTIAL", + "REQUEST_NONE", + "TICKET_PARTIAL", + ], + "pendingRequestsEnabled": true, + "permissionTicketLifetime": 120, + "resharingMode": "IMPLICIT", + "userProfileLocaleAttribute": "inetOrgPerson", + }, + }, + "location": "global", + "nextDescendents": [], + "umaPolicyUpgradeCompatibilityMode": false, + }, + "user": { + "_id": "", + "_type": { + "_id": "user", + "collection": false, + "name": "User", + }, + "dynamic": { + "defaultUserStatus": "Active", + }, + "location": "global", + "nextDescendents": [], + }, + "validation": { + "_id": "", + "_type": { + "_id": "validation", + "collection": false, + "name": "Validation Service", + }, + "defaults": { + "validGotoDestinations": [], + }, + "location": "global", + "nextDescendents": [], + "validGotoDestinations": [], + }, + }, + "site": { + "testsite": { + "_id": "testsite", + "secondaryURLs": [], + "servers": [ + { + "id": "03", + "url": "http://localhost:8081/am", + }, + ], + "url": "http://testurl.com:8080", + }, + }, + "webhookService": { + "webhooks": { + "_id": "", + "_type": { + "_id": "webhooks", + "collection": false, + "name": "Webhook Service", + }, + }, + }, + }, + "realm": { + "root": { + "agent": { + "Test IG": { + "_id": "Test IG", + "_type": { + "_id": "IdentityGatewayAgent", + "collection": true, + "name": "Identity Gateway Agents", + }, + "agentgroup": null, + "igCdssoLoginUrlTemplate": null, + "igCdssoRedirectUrls": [], + "igTokenIntrospection": "None", + "secretLabelIdentifier": null, + "status": "Active", + "userpassword": null, + }, + "Test SOAP STS": { + "_id": "Test SOAP STS", + "_type": { + "_id": "SoapSTSAgent", + "collection": true, + "name": "SOAP STS Agents", + }, + "agentgroup": null, + "publishServicePollInterval": 300, + }, + "Test Web": { + "_id": "Test Web", + "_type": { + "_id": "WebAgent", + "collection": true, + "name": "Web Agents", + }, + "advancedWebAgentConfig": { + "apacheAuthDirectives": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "fragmentRedirectEnabled": false, + "hostnameToIpAddress": [], + "logonAndImpersonation": false, + "overrideRequestHost": false, + "overrideRequestPort": false, + "overrideRequestProtocol": false, + "pdpJavascriptRepost": false, + "pdpSkipPostUrl": [ + "", + ], + "pdpStickySessionCookieName": null, + "pdpStickySessionMode": "OFF", + "pdpStickySessionValue": null, + "postDataCachePeriod": 10, + "postDataPreservation": false, + "replayPasswordKey": null, + "retainSessionCache": false, + "showPasswordInHeader": false, + }, + "amServicesWebAgent": { + "amLoginUrl": [], + "amLogoutUrl": [ + "http://testurl.com:8080/UI/Logout", + ], + "applicationLogoutUrls": [ + "", + ], + "conditionalLoginUrl": [ + "", + ], + "customLoginMode": 0, + "enableLogoutRegex": false, + "fetchPoliciesFromRootResource": false, + "invalidateLogoutSession": true, + "logoutRedirectDisabled": false, + "logoutRedirectUrl": null, + "logoutResetCookies": [ + "", + ], + "logoutUrlRegex": null, + "policyCachePollingInterval": 3, + "policyClockSkew": 0, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "publicAmUrl": null, + "regexConditionalLoginPattern": [ + "", + ], + "regexConditionalLoginUrl": [ + "", + ], + "retrieveClientHostname": false, + "ssoCachePollingInterval": 3, + "userIdParameter": "UserToken", + "userIdParameterType": "session", + }, + "applicationWebAgentConfig": { + "attributeMultiValueSeparator": "|", + "clientIpValidation": false, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "fetchAttributesForNotEnforcedUrls": false, + "ignorePathInfoForNotEnforcedUrls": true, + "invertNotEnforcedUrls": false, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsList": [ + "", + ], + "notEnforcedIpsRegex": false, + "notEnforcedUrls": [ + "", + ], + "notEnforcedUrlsRegex": false, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalWebAgentConfig": { + "accessDeniedUrl": null, + "agentConfigChangeNotificationsEnabled": true, + "agentDebugLevel": "Error", + "agentUriPrefix": "http://testurl.com:8080/amagent", + "agentgroup": null, + "amLbCookieEnable": false, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [ + "agentRootURL=http://testurl.com:8080/", + ], + "configurationPollingInterval": 60, + "disableJwtAudit": false, + "fqdnCheck": false, + "fqdnDefault": "testurl.com", + "fqdnMapping": {}, + "jwtAuditWhitelist": null, + "jwtName": "am-auth-jwt", + "notificationsEnabled": true, + "repositoryLocation": "centralized", + "resetIdleTime": false, + "secretLabelIdentifier": null, + "ssoOnlyMode": false, + "status": "Active", + "userpassword": null, + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscWebAgentConfig": { + "addCacheControlHeader": false, + "anonymousUserEnabled": false, + "anonymousUserId": "anonymous", + "caseInsensitiveUrlComparison": true, + "compositeAdviceEncode": false, + "compositeAdviceRedirect": false, + "encodeSpecialCharsInCookies": false, + "encodeUrlSpecialCharacters": false, + "gotoParameterName": "goto", + "headerJsonResponse": {}, + "ignorePathInfo": false, + "invalidUrlRegex": null, + "invertUrlJsonResponse": false, + "mineEncodeHeader": 0, + "profileAttributesCookieMaxAge": 300, + "profileAttributesCookiePrefix": "HTTP_", + "statusCodeJsonResponse": 202, + "urlJsonResponse": [ + "", + ], + }, + "ssoWebAgentConfig": { + "acceptSsoToken": false, + "cdssoCookieDomain": [ + "", + ], + "cdssoRedirectUri": "agent/cdsso-oauth2", + "cookieName": "iPlanetDirectoryPro", + "cookieResetEnabled": false, + "cookieResetList": [ + "", + ], + "cookieResetOnRedirect": false, + "httpOnly": true, + "multivaluePreAuthnCookie": false, + "persistentJwtCookie": false, + "sameSite": null, + "secureCookies": false, + }, + }, + "my-policy-agent": { + "_id": "my-policy-agent", + "_type": { + "_id": "2.2_Agent", + "collection": true, + "name": "Policy Agents", + }, + "cdssoRootUrl": [], + "description": null, + "status": "Active", + "userpassword": null, + }, + "test": { + "_id": "test", + "_type": { + "_id": "RemoteConsentAgent", + "collection": true, + "name": "OAuth2 Remote Consent Service", + }, + "agentgroup": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "remoteConsentRedirectUrl": null, + "remoteConsentRequestEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentRequestEncryptionEnabled": true, + "remoteConsentRequestEncryptionMethod": "A128GCM", + "remoteConsentRequestSigningAlgorithm": "RS256", + "remoteConsentResponseEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentResponseEncryptionMethod": "A128GCM", + "remoteConsentResponseSigningAlg": "RS256", + "requestTimeLimit": 180, + }, + "test java": { + "_id": "test java", + "_type": { + "_id": "J2EEAgent", + "collection": true, + "name": "J2EE Agents", + }, + "advancedJ2EEAgentConfig": { + "alternativeAgentHostname": null, + "alternativeAgentPort": null, + "alternativeAgentProtocol": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "expiredSessionCacheSize": 500, + "expiredSessionCacheTTL": 20, + "fragmentRelayUri": null, + "idleTimeRefreshWindow": 1, + "jwtCacheSize": 5000, + "jwtCacheTTL": 30, + "missingPostDataPreservationEntryUri": [ + "", + ], + "monitoringToCSV": false, + "policyCachePerUser": 50, + "policyCacheSize": 5000, + "policyClientPollingInterval": 3, + "possibleXssCodeElements": [ + "", + ], + "postDataCacheTtlMin": 5, + "postDataPreservation": false, + "postDataPreserveCacheEntryMaxEntries": 1000, + "postDataPreserveCacheEntryMaxTotalSizeMb": -1, + "postDataPreserveMultipartLimitBytes": 104857600, + "postDataPreserveMultipartParameterLimitBytes": 104857600, + "postDataStickySessionKeyValue": null, + "postDataStickySessionMode": "URL", + "retainPreviousOverrideBehavior": true, + "sessionCacheTTL": 15, + "ssoExchangeCacheSize": 100, + "ssoExchangeCacheTTL": 5, + "xssDetectionRedirectUri": {}, + }, + "amServicesJ2EEAgent": { + "agentAdviceEncode": false, + "amLoginUrl": [], + "authServiceHost": "testurl.com", + "authServicePort": 8080, + "authServiceProtocol": "http", + "authSuccessRedirectUrl": false, + "conditionalLoginUrl": [ + "", + ], + "conditionalLogoutUrl": [ + "", + ], + "customLoginEnabled": false, + "legacyLoginUrlList": [ + "", + ], + "overridePolicyEvaluationRealmEnabled": false, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "policyNotifications": true, + "restrictToRealm": {}, + "strategyWhenAMUnavailable": "EVAL_NER_USE_CACHE_UNTIL_EXPIRED_ELSE_503", + "urlPolicyEnvGetParameters": [ + "", + ], + "urlPolicyEnvJsessionParameters": [ + "", + ], + "urlPolicyEnvPostParameters": [ + "", + ], + }, + "applicationJ2EEAgentConfig": { + "applicationLogoutUris": {}, + "clientIpValidationMode": { + "": "OFF", + }, + "clientIpValidationRange": {}, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "cookieAttributeMultiValueSeparator": "|", + "cookieAttributeUrlEncoded": true, + "headerAttributeDateFormat": "EEE, d MMM yyyy hh:mm:ss z", + "invertNotEnforcedIps": false, + "invertNotEnforcedUris": false, + "logoutEntryUri": {}, + "logoutIntrospection": false, + "logoutRequestParameters": {}, + "notEnforcedFavicon": true, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsCacheEnabled": true, + "notEnforcedIpsCacheSize": 1000, + "notEnforcedRuleCompoundSeparator": "|", + "notEnforcedUris": [ + "", + ], + "notEnforcedUrisCacheEnabled": true, + "notEnforcedUrisCacheSize": 1000, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "resourceAccessDeniedUri": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalJ2EEAgentConfig": { + "agentConfigChangeNotificationsEnabled": true, + "agentgroup": "Test Java Group", + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [ + "agentRootURL=http://testurl.com:8080/", + ], + "configurationReloadInterval": 0, + "customResponseHeader": {}, + "debugLevel": "error", + "debugLogfilePrefix": null, + "debugLogfileRetentionCount": -1, + "debugLogfileRotationMinutes": -1, + "debugLogfileRotationSize": 52428800, + "debugLogfileSuffix": "-yyyy.MM.dd-HH.mm.ss", + "filterMode": { + "": "ALL", + }, + "fqdnCheck": false, + "fqdnDefault": "testurl.com", + "fqdnMapping": {}, + "httpSessionBinding": true, + "jwtName": "am-auth-jwt", + "lbCookieEnabled": false, + "lbCookieName": "amlbcookie", + "localAuditLogRotation": false, + "localAuditLogfileRetentionCount": -1, + "localAuditRotationSize": 52428800, + "loginAttemptLimit": 0, + "loginAttemptLimitCookieName": "amFilterParam", + "preAuthCookieMaxAge": 300, + "preAuthCookieName": "amFilterCDSSORequest", + "recheckAmUnavailabilityInSeconds": 5, + "redirectAttemptLimit": 0, + "redirectAttemptLimitCookieName": "amFilterRDParam", + "repositoryLocation": "centralized", + "secretLabelIdentifier": null, + "status": "Active", + "userAttributeName": "employeenumber", + "userMappingMode": "USER_ID", + "userPrincipalFlag": false, + "userTokenName": "UserToken", + "userpassword": null, + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscJ2EEAgentConfig": { + "agent302RedirectContentType": "application/json", + "agent302RedirectEnabled": true, + "agent302RedirectHttpData": "{redirect:{requestUri:%REQUEST_URI%,requestUrl:%REQUEST_URL%,targetUrl:%TARGET%}}", + "agent302RedirectInvertEnabled": false, + "agent302RedirectNerList": [ + "", + ], + "agent302RedirectStatusCode": 200, + "authFailReasonParameterName": null, + "authFailReasonParameterRemapper": {}, + "authFailReasonUrl": null, + "gotoParameterName": "goto", + "gotoUrl": null, + "ignorePathInfo": false, + "legacyRedirectUri": "/test/sunwLegacySupportURI", + "legacyUserAgentList": [ + "Mozilla/4.7*", + ], + "legacyUserAgentSupport": false, + "localeCountry": "US", + "localeLanguage": "en", + "loginReasonMap": {}, + "loginReasonParameterName": null, + "portCheckEnabled": false, + "portCheckFile": "PortCheckContent.txt", + "portCheckSetting": { + "8080": "http", + }, + "unwantedHttpUrlParams": [ + "", + ], + "unwantedHttpUrlRegexParams": [ + "", + ], + "wantedHttpUrlParams": [ + "", + ], + "wantedHttpUrlRegexParams": [ + "", + ], + }, + "ssoJ2EEAgentConfig": { + "acceptIPDPCookie": false, + "acceptSsoTokenDomainList": [ + "", + ], + "acceptSsoTokenEnabled": false, + "authExchangeCookieName": null, + "authExchangeUri": null, + "cdssoDomainList": [ + "", + ], + "cdssoRedirectUri": "/test/post-authn-redirect", + "cdssoSecureCookies": false, + "cookieResetDomains": {}, + "cookieResetEnabled": false, + "cookieResetNames": [ + "", + ], + "cookieResetPaths": {}, + "encodeCookies": false, + "excludedUserAgentsList": [], + "httpOnly": true, + "setCookieAttributeMap": {}, + "setCookieInternalMap": {}, + }, + }, + "test software publisher": { + "_id": "test software publisher", + "_type": { + "_id": "SoftwarePublisher", + "collection": true, + "name": "OAuth2 Software Publisher", + }, + "agentgroup": null, + "issuer": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "softwareStatementSigningAlgorithm": "RS256", + }, + }, + "agentGroup": { + "Oauth2 group": { + "_id": "Oauth2 group", + "_type": { + "_id": "OAuth2Client", + "collection": true, + "name": "OAuth2 Clients", + }, + "advancedOAuth2ClientConfig": { + "clientUri": [], + "contacts": [], + "customProperties": [], + "descriptions": [], + "grantTypes": [ + "authorization_code", + ], + "isConsentImplied": false, + "javascriptOrigins": [], + "logoUri": [], + "mixUpMitigation": false, + "name": [], + "policyUri": [], + "refreshTokenGracePeriod": 0, + "requestUris": [], + "require_pushed_authorization_requests": false, + "responseTypes": [ + "code", + "token", + "id_token", + "code token", + "token id_token", + "code id_token", + "code token id_token", + "device_code", + "device_code id_token", + ], + "sectorIdentifierUri": null, + "softwareIdentity": null, + "softwareVersion": null, + "subjectType": "public", + "tokenEndpointAuthMethod": "client_secret_basic", + "tokenExchangeAuthLevel": 0, + "tosURI": [], + "updateAccessToken": null, + }, + "coreOAuth2ClientConfig": { + "accessTokenLifetime": 0, + "authorizationCodeLifetime": 0, + "clientName": [], + "clientType": "Confidential", + "defaultScopes": [], + "loopbackInterfaceRedirection": false, + "redirectionUris": [], + "refreshTokenLifetime": 0, + "scopes": [], + "status": "Active", + }, + "coreOpenIDClientConfig": { + "backchannel_logout_session_required": false, + "backchannel_logout_uri": null, + "claims": [], + "clientSessionUri": null, + "defaultAcrValues": [], + "defaultMaxAge": 600, + "defaultMaxAgeEnabled": false, + "jwtTokenLifetime": 0, + "postLogoutRedirectUri": [], + }, + "coreUmaClientConfig": { + "claimsRedirectionUris": [], + }, + "signEncOAuth2ClientConfig": { + "authorizationResponseEncryptionAlgorithm": null, + "authorizationResponseEncryptionMethod": null, + "authorizationResponseSigningAlgorithm": "RS256", + "clientJwtPublicKey": null, + "idTokenEncryptionAlgorithm": "RSA-OAEP-256", + "idTokenEncryptionEnabled": false, + "idTokenEncryptionMethod": "A128CBC-HS256", + "idTokenPublicEncryptionKey": null, + "idTokenSignedResponseAlg": "RS256", + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "mTLSCertificateBoundAccessTokens": false, + "mTLSSubjectDN": null, + "mTLSTrustedCert": null, + "publicKeyLocation": "jwks_uri", + "requestParameterEncryptedAlg": null, + "requestParameterEncryptedEncryptionAlgorithm": "A128CBC-HS256", + "requestParameterSignedAlg": null, + "tokenEndpointAuthSigningAlgorithm": "RS256", + "tokenIntrospectionEncryptedResponseAlg": "RSA-OAEP-256", + "tokenIntrospectionEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "tokenIntrospectionResponseFormat": "JSON", + "tokenIntrospectionSignedResponseAlg": "RS256", + "userinfoEncryptedResponseAlg": null, + "userinfoEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "userinfoResponseFormat": "JSON", + "userinfoSignedResponseAlg": null, + }, + }, + "Remote consent group": { + "_id": "Remote consent group", + "_type": { + "_id": "RemoteConsentAgent", + "collection": true, + "name": "OAuth2 Remote Consent Service", + }, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "remoteConsentRedirectUrl": null, + "remoteConsentRequestEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentRequestEncryptionEnabled": true, + "remoteConsentRequestEncryptionMethod": "A128GCM", + "remoteConsentRequestSigningAlgorithm": "RS256", + "remoteConsentResponseEncryptionAlgorithm": "RSA-OAEP-256", + "remoteConsentResponseEncryptionMethod": "A128GCM", + "remoteConsentResponseSigningAlg": "RS256", + "requestTimeLimit": 180, + }, + "Software publisher group": { + "_id": "Software publisher group", + "_type": { + "_id": "SoftwarePublisher", + "collection": true, + "name": "OAuth2 Software Publisher", + }, + "issuer": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "publicKeyLocation": "jwks_uri", + "softwareStatementSigningAlgorithm": "RS256", + }, + "Test IG Group": { + "_id": "Test IG Group", + "_type": { + "_id": "IdentityGatewayAgent", + "collection": true, + "name": "Identity Gateway Agents", + }, + "igCdssoLoginUrlTemplate": null, + "igCdssoRedirectUrls": [], + "igTokenIntrospection": "None", + "status": "Active", + }, + "Test Java Group": { + "_id": "Test Java Group", + "_type": { + "_id": "J2EEAgent", + "collection": true, + "name": "J2EE Agents", + }, + "advancedJ2EEAgentConfig": { + "alternativeAgentHostname": null, + "alternativeAgentPort": null, + "alternativeAgentProtocol": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "expiredSessionCacheSize": 500, + "expiredSessionCacheTTL": 20, + "fragmentRelayUri": null, + "idleTimeRefreshWindow": 1, + "jwtCacheSize": 5000, + "jwtCacheTTL": 30, + "missingPostDataPreservationEntryUri": [ + "", + ], + "monitoringToCSV": false, + "policyCachePerUser": 50, + "policyCacheSize": 5000, + "policyClientPollingInterval": 3, + "possibleXssCodeElements": [ + "", + ], + "postDataCacheTtlMin": 5, + "postDataPreservation": false, + "postDataPreserveCacheEntryMaxEntries": 1000, + "postDataPreserveCacheEntryMaxTotalSizeMb": -1, + "postDataPreserveMultipartLimitBytes": 104857600, + "postDataPreserveMultipartParameterLimitBytes": 104857600, + "postDataStickySessionKeyValue": null, + "postDataStickySessionMode": "URL", + "retainPreviousOverrideBehavior": true, + "sessionCacheTTL": 15, + "ssoExchangeCacheSize": 100, + "ssoExchangeCacheTTL": 5, + "xssDetectionRedirectUri": {}, + }, + "amServicesJ2EEAgent": { + "agentAdviceEncode": false, + "amLoginUrl": [], + "authServiceHost": "testurl.com", + "authServicePort": 8080, + "authServiceProtocol": "http", + "authSuccessRedirectUrl": false, + "conditionalLoginUrl": [ + "", + ], + "conditionalLogoutUrl": [ + "", + ], + "customLoginEnabled": false, + "legacyLoginUrlList": [ + "", + ], + "overridePolicyEvaluationRealmEnabled": false, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "policyNotifications": true, + "restrictToRealm": {}, + "strategyWhenAMUnavailable": "EVAL_NER_USE_CACHE_UNTIL_EXPIRED_ELSE_503", + "urlPolicyEnvGetParameters": [ + "", + ], + "urlPolicyEnvJsessionParameters": [ + "", + ], + "urlPolicyEnvPostParameters": [ + "", + ], + }, + "applicationJ2EEAgentConfig": { + "applicationLogoutUris": {}, + "clientIpValidationMode": { + "": "OFF", + }, + "clientIpValidationRange": {}, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "cookieAttributeMultiValueSeparator": "|", + "cookieAttributeUrlEncoded": true, + "headerAttributeDateFormat": "EEE, d MMM yyyy hh:mm:ss z", + "invertNotEnforcedIps": false, + "invertNotEnforcedUris": false, + "logoutEntryUri": {}, + "logoutIntrospection": false, + "logoutRequestParameters": {}, + "notEnforcedFavicon": true, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsCacheEnabled": true, + "notEnforcedIpsCacheSize": 1000, + "notEnforcedRuleCompoundSeparator": "|", + "notEnforcedUris": [ + "", + ], + "notEnforcedUrisCacheEnabled": true, + "notEnforcedUrisCacheSize": 1000, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "resourceAccessDeniedUri": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalJ2EEAgentConfig": { + "agentConfigChangeNotificationsEnabled": true, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [], + "configurationReloadInterval": 0, + "customResponseHeader": {}, + "debugLevel": "error", + "debugLogfilePrefix": null, + "debugLogfileRetentionCount": -1, + "debugLogfileRotationMinutes": -1, + "debugLogfileRotationSize": 52428800, + "debugLogfileSuffix": "-yyyy.MM.dd-HH.mm.ss", + "filterMode": { + "": "ALL", + }, + "fqdnCheck": false, + "fqdnDefault": null, + "fqdnMapping": {}, + "httpSessionBinding": true, + "jwtName": "am-auth-jwt", + "lbCookieEnabled": false, + "lbCookieName": "amlbcookie", + "localAuditLogRotation": false, + "localAuditLogfileRetentionCount": -1, + "localAuditRotationSize": 52428800, + "loginAttemptLimit": 0, + "loginAttemptLimitCookieName": "amFilterParam", + "preAuthCookieMaxAge": 300, + "preAuthCookieName": "amFilterCDSSORequest", + "recheckAmUnavailabilityInSeconds": 5, + "redirectAttemptLimit": 0, + "redirectAttemptLimitCookieName": "amFilterRDParam", + "status": "Active", + "userAttributeName": "employeenumber", + "userMappingMode": "USER_ID", + "userPrincipalFlag": false, + "userTokenName": "UserToken", + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscJ2EEAgentConfig": { + "agent302RedirectContentType": "application/json", + "agent302RedirectEnabled": true, + "agent302RedirectHttpData": "{redirect:{requestUri:%REQUEST_URI%,requestUrl:%REQUEST_URL%,targetUrl:%TARGET%}}", + "agent302RedirectInvertEnabled": false, + "agent302RedirectNerList": [ + "", + ], + "agent302RedirectStatusCode": 200, + "authFailReasonParameterName": null, + "authFailReasonParameterRemapper": {}, + "authFailReasonUrl": null, + "gotoParameterName": "goto", + "gotoUrl": null, + "ignorePathInfo": false, + "legacyRedirectUri": null, + "legacyUserAgentList": [ + "Mozilla/4.7*", + ], + "legacyUserAgentSupport": false, + "localeCountry": "US", + "localeLanguage": "en", + "loginReasonMap": {}, + "loginReasonParameterName": null, + "portCheckEnabled": false, + "portCheckFile": "PortCheckContent.txt", + "portCheckSetting": {}, + "unwantedHttpUrlParams": [ + "", + ], + "unwantedHttpUrlRegexParams": [ + "", + ], + "wantedHttpUrlParams": [ + "", + ], + "wantedHttpUrlRegexParams": [ + "", + ], + }, + "ssoJ2EEAgentConfig": { + "acceptIPDPCookie": false, + "acceptSsoTokenDomainList": [ + "", + ], + "acceptSsoTokenEnabled": false, + "authExchangeCookieName": null, + "authExchangeUri": null, + "cdssoDomainList": [ + "", + ], + "cdssoRedirectUri": null, + "cdssoSecureCookies": false, + "cookieResetDomains": {}, + "cookieResetEnabled": false, + "cookieResetNames": [ + "", + ], + "cookieResetPaths": {}, + "encodeCookies": false, + "excludedUserAgentsList": [], + "httpOnly": true, + "setCookieAttributeMap": {}, + "setCookieInternalMap": {}, + }, + }, + "Test SOAP STS group": { + "_id": "Test SOAP STS group", + "_type": { + "_id": "SoapSTSAgent", + "collection": true, + "name": "SOAP STS Agents", + }, + "publishServicePollInterval": 300, + }, + "Test Web Group": { + "_id": "Test Web Group", + "_type": { + "_id": "WebAgent", + "collection": true, + "name": "Web Agents", + }, + "advancedWebAgentConfig": { + "apacheAuthDirectives": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "fragmentRedirectEnabled": false, + "hostnameToIpAddress": [], + "logonAndImpersonation": false, + "overrideRequestHost": false, + "overrideRequestPort": false, + "overrideRequestProtocol": false, + "pdpJavascriptRepost": false, + "pdpSkipPostUrl": [ + "", + ], + "pdpStickySessionCookieName": null, + "pdpStickySessionMode": "OFF", + "pdpStickySessionValue": null, + "postDataCachePeriod": 10, + "postDataPreservation": false, + "replayPasswordKey": null, + "retainSessionCache": false, + "showPasswordInHeader": false, + }, + "amServicesWebAgent": { + "amLoginUrl": [], + "amLogoutUrl": [ + "http://testurl.com:8080/UI/Logout", + ], + "applicationLogoutUrls": [ + "", + ], + "conditionalLoginUrl": [ + "", + ], + "customLoginMode": 0, + "enableLogoutRegex": false, + "fetchPoliciesFromRootResource": false, + "invalidateLogoutSession": true, + "logoutRedirectDisabled": false, + "logoutRedirectUrl": null, + "logoutResetCookies": [ + "", + ], + "logoutUrlRegex": null, + "policyCachePollingInterval": 3, + "policyClockSkew": 0, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "publicAmUrl": null, + "regexConditionalLoginPattern": [ + "", + ], + "regexConditionalLoginUrl": [ + "", + ], + "retrieveClientHostname": false, + "ssoCachePollingInterval": 3, + "userIdParameter": "UserToken", + "userIdParameterType": "session", + }, + "applicationWebAgentConfig": { + "attributeMultiValueSeparator": "|", + "clientIpValidation": false, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "fetchAttributesForNotEnforcedUrls": false, + "ignorePathInfoForNotEnforcedUrls": true, + "invertNotEnforcedUrls": false, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsList": [ + "", + ], + "notEnforcedIpsRegex": false, + "notEnforcedUrls": [ + "", + ], + "notEnforcedUrlsRegex": false, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalWebAgentConfig": { + "accessDeniedUrl": null, + "agentConfigChangeNotificationsEnabled": true, + "agentDebugLevel": "Error", + "agentUriPrefix": null, + "amLbCookieEnable": false, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [], + "configurationPollingInterval": 60, + "disableJwtAudit": false, + "fqdnCheck": false, + "fqdnDefault": null, + "fqdnMapping": {}, + "jwtAuditWhitelist": null, + "jwtName": "am-auth-jwt", + "notificationsEnabled": true, + "resetIdleTime": false, + "ssoOnlyMode": false, + "status": "Active", + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscWebAgentConfig": { + "addCacheControlHeader": false, + "anonymousUserEnabled": false, + "anonymousUserId": "anonymous", + "caseInsensitiveUrlComparison": true, + "compositeAdviceEncode": false, + "compositeAdviceRedirect": false, + "encodeSpecialCharsInCookies": false, + "encodeUrlSpecialCharacters": false, + "gotoParameterName": "goto", + "headerJsonResponse": {}, + "ignorePathInfo": false, + "invalidUrlRegex": null, + "invertUrlJsonResponse": false, + "mineEncodeHeader": 0, + "profileAttributesCookieMaxAge": 300, + "profileAttributesCookiePrefix": "HTTP_", + "statusCodeJsonResponse": 202, + "urlJsonResponse": [ + "", + ], + }, + "ssoWebAgentConfig": { + "acceptSsoToken": false, + "cdssoCookieDomain": [ + "", + ], + "cdssoRedirectUri": "agent/cdsso-oauth2", + "cookieName": "iPlanetDirectoryPro", + "cookieResetEnabled": false, + "cookieResetList": [ + "", + ], + "cookieResetOnRedirect": false, + "httpOnly": true, + "multivaluePreAuthnCookie": false, + "persistentJwtCookie": false, + "sameSite": null, + "secureCookies": false, + }, + }, + "Trusted JWT group": { + "_id": "Trusted JWT group", + "_type": { + "_id": "TrustedJwtIssuer", + "collection": true, + "name": "OAuth2 Trusted JWT Issuer", + }, + "allowedSubjects": [], + "consentedScopesClaim": "scope", + "issuer": null, + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "resourceOwnerIdentityClaim": "sub", + }, + "testwebgroup": { + "_id": "testwebgroup", + "_type": { + "_id": "WebAgent", + "collection": true, + "name": "Web Agents", + }, + "advancedWebAgentConfig": { + "apacheAuthDirectives": null, + "clientHostnameHeader": null, + "clientIpHeader": null, + "customProperties": [], + "fragmentRedirectEnabled": false, + "hostnameToIpAddress": [], + "logonAndImpersonation": false, + "overrideRequestHost": false, + "overrideRequestPort": false, + "overrideRequestProtocol": false, + "pdpJavascriptRepost": false, + "pdpSkipPostUrl": [ + "", + ], + "pdpStickySessionCookieName": null, + "pdpStickySessionMode": "OFF", + "pdpStickySessionValue": null, + "postDataCachePeriod": 10, + "postDataPreservation": false, + "replayPasswordKey": null, + "retainSessionCache": false, + "showPasswordInHeader": false, + }, + "amServicesWebAgent": { + "amLoginUrl": [], + "amLogoutUrl": [ + "http://test.com:8080/cool/UI/Logout", + ], + "applicationLogoutUrls": [ + "", + ], + "conditionalLoginUrl": [ + "", + ], + "customLoginMode": 0, + "enableLogoutRegex": false, + "fetchPoliciesFromRootResource": false, + "invalidateLogoutSession": true, + "logoutRedirectDisabled": false, + "logoutRedirectUrl": null, + "logoutResetCookies": [ + "", + ], + "logoutUrlRegex": null, + "policyCachePollingInterval": 3, + "policyClockSkew": 0, + "policyEvaluationApplication": "iPlanetAMWebAgentService", + "policyEvaluationRealm": "/", + "publicAmUrl": null, + "regexConditionalLoginPattern": [ + "", + ], + "regexConditionalLoginUrl": [ + "", + ], + "retrieveClientHostname": false, + "ssoCachePollingInterval": 3, + "userIdParameter": "UserToken", + "userIdParameterType": "session", + }, + "applicationWebAgentConfig": { + "attributeMultiValueSeparator": "|", + "clientIpValidation": false, + "continuousSecurityCookies": {}, + "continuousSecurityHeaders": {}, + "fetchAttributesForNotEnforcedUrls": false, + "ignorePathInfoForNotEnforcedUrls": true, + "invertNotEnforcedUrls": false, + "notEnforcedIps": [ + "", + ], + "notEnforcedIpsList": [ + "", + ], + "notEnforcedIpsRegex": false, + "notEnforcedUrls": [ + "", + ], + "notEnforcedUrlsRegex": false, + "profileAttributeFetchMode": "NONE", + "profileAttributeMap": {}, + "responseAttributeFetchMode": "NONE", + "responseAttributeMap": {}, + "sessionAttributeFetchMode": "NONE", + "sessionAttributeMap": {}, + }, + "globalWebAgentConfig": { + "accessDeniedUrl": null, + "agentConfigChangeNotificationsEnabled": true, + "agentDebugLevel": "Error", + "agentUriPrefix": null, + "amLbCookieEnable": false, + "auditAccessType": "LOG_NONE", + "auditLogLocation": "REMOTE", + "cdssoRootUrl": [], + "configurationPollingInterval": 60, + "disableJwtAudit": false, + "fqdnCheck": false, + "fqdnDefault": null, + "fqdnMapping": {}, + "jwtAuditWhitelist": null, + "jwtName": "am-auth-jwt", + "notificationsEnabled": true, + "resetIdleTime": false, + "ssoOnlyMode": false, + "status": "Active", + "webSocketConnectionIntervalInMinutes": 30, + }, + "miscWebAgentConfig": { + "addCacheControlHeader": false, + "anonymousUserEnabled": false, + "anonymousUserId": "anonymous", + "caseInsensitiveUrlComparison": true, + "compositeAdviceEncode": false, + "compositeAdviceRedirect": false, + "encodeSpecialCharsInCookies": false, + "encodeUrlSpecialCharacters": false, + "gotoParameterName": "goto", + "headerJsonResponse": {}, + "ignorePathInfo": false, + "invalidUrlRegex": null, + "invertUrlJsonResponse": false, + "mineEncodeHeader": 0, + "profileAttributesCookieMaxAge": 300, + "profileAttributesCookiePrefix": "HTTP_", + "statusCodeJsonResponse": 202, + "urlJsonResponse": [ + "", + ], + }, + "ssoWebAgentConfig": { + "acceptSsoToken": false, + "cdssoCookieDomain": [ + "", + ], + "cdssoRedirectUri": "agent/cdsso-oauth2", + "cookieName": "iPlanetDirectoryPro", + "cookieResetEnabled": false, + "cookieResetList": [ + "", + ], + "cookieResetOnRedirect": false, + "httpOnly": true, + "multivaluePreAuthnCookie": false, + "persistentJwtCookie": false, + "sameSite": null, + "secureCookies": false, + }, + }, + }, + "application": { + "test client": { + "_id": "test client", + "_provider": { + "_id": "", + "_type": { + "_id": "oauth-oidc", + "collection": false, + "name": "OAuth2 Provider", + }, + "advancedOAuth2Config": { + "allowClientCredentialsInTokenRequestQueryParameters": false, + "allowedAudienceValues": [], + "authenticationAttributes": [ + "uid", + ], + "codeVerifierEnforced": "false", + "defaultScopes": [], + "displayNameAttribute": "cn", + "expClaimRequiredInRequestObject": false, + "grantTypes": [ + "implicit", + "urn:ietf:params:oauth:grant-type:saml2-bearer", + "refresh_token", + "password", + "client_credentials", + "urn:ietf:params:oauth:grant-type:device_code", + "authorization_code", + "urn:openid:params:grant-type:ciba", + "urn:ietf:params:oauth:grant-type:uma-ticket", + "urn:ietf:params:oauth:grant-type:token-exchange", + "urn:ietf:params:oauth:grant-type:jwt-bearer", + ], + "hashSalt": "changeme", + "includeSubnameInTokenClaims": true, + "macaroonTokenFormat": "V2", + "maxAgeOfRequestObjectNbfClaim": 0, + "maxDifferenceBetweenRequestObjectNbfAndExp": 0, + "moduleMessageEnabledInPasswordGrant": false, + "nbfClaimRequiredInRequestObject": false, + "parRequestUriLifetime": 90, + "passwordGrantAuthService": "[Empty]", + "persistentClaims": [], + "refreshTokenGracePeriod": 0, + "requestObjectProcessing": "OIDC", + "requirePushedAuthorizationRequests": false, + "responseTypeClasses": [ + "code|org.forgerock.oauth2.core.AuthorizationCodeResponseTypeHandler", + "id_token|org.forgerock.openidconnect.IdTokenResponseTypeHandler", + "token|org.forgerock.oauth2.core.TokenResponseTypeHandler", + ], + "supportedScopes": [], + "supportedSubjectTypes": [ + "public", + "pairwise", + ], + "tlsCertificateBoundAccessTokensEnabled": true, + "tlsCertificateRevocationCheckingEnabled": false, + "tlsClientCertificateHeaderFormat": "URLENCODED_PEM", + "tokenCompressionEnabled": false, + "tokenEncryptionEnabled": false, + "tokenExchangeClasses": [ + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToAccessTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:access_token=>urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.AccessTokenToIdTokenExchanger", + "urn:ietf:params:oauth:token-type:id_token=>urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.idtoken.IdTokenToAccessTokenExchanger", + ], + "tokenSigningAlgorithm": "HS256", + "tokenValidatorClasses": [ + "urn:ietf:params:oauth:token-type:id_token|org.forgerock.oauth2.core.tokenexchange.idtoken.OidcIdTokenValidator", + "urn:ietf:params:oauth:token-type:access_token|org.forgerock.oauth2.core.tokenexchange.accesstoken.OAuth2AccessTokenValidator", + ], + }, + "advancedOIDCConfig": { + "alwaysAddClaimsToToken": false, + "amrMappings": {}, + "authorisedIdmDelegationClients": [], + "authorisedOpenIdConnectSSOClients": [], + "claimsParameterSupported": false, + "defaultACR": [], + "idTokenInfoClientAuthenticationEnabled": true, + "includeAllKtyAlgCombinationsInJwksUri": false, + "loaMapping": {}, + "storeOpsTokens": true, + "supportedAuthorizationResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedAuthorizationResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedAuthorizationResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRequestParameterEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRequestParameterEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRequestParameterSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenEndpointAuthenticationSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedTokenIntrospectionResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedTokenIntrospectionResponseEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedTokenIntrospectionResponseSigningAlgorithms": [ + "PS384", + "RS384", + "EdDSA", + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedUserInfoEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedUserInfoEncryptionEnc": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedUserInfoSigningAlgorithms": [ + "ES384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + ], + "useForceAuthnForMaxAge": false, + "useForceAuthnForPromptLogin": false, + }, + "cibaConfig": { + "cibaAuthReqIdLifetime": 600, + "cibaMinimumPollingInterval": 2, + "supportedCibaSigningAlgorithms": [ + "ES256", + "PS256", + ], + }, + "clientDynamicRegistrationConfig": { + "allowDynamicRegistration": false, + "dynamicClientRegistrationScope": "dynamic_client_registration", + "dynamicClientRegistrationSoftwareStatementRequired": false, + "generateRegistrationAccessTokens": true, + "requiredSoftwareStatementAttestedAttributes": [ + "redirect_uris", + ], + }, + "consent": { + "clientsCanSkipConsent": false, + "enableRemoteConsent": false, + "supportedRcsRequestEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsRequestEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsRequestSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + "supportedRcsResponseEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "ECDH-ES+A128KW", + "RSA-OAEP", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedRcsResponseEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedRcsResponseSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "coreOAuth2Config": { + "accessTokenLifetime": 3600, + "accessTokenMayActScript": "[Empty]", + "codeLifetime": 120, + "issueRefreshToken": true, + "issueRefreshTokenOnRefreshedToken": true, + "macaroonTokensEnabled": false, + "oidcMayActScript": "[Empty]", + "refreshTokenLifetime": 604800, + "scopesPolicySet": "oauth2Scopes", + "statelessTokensEnabled": false, + "usePolicyEngineForScope": false, + }, + "coreOIDCConfig": { + "jwtTokenLifetime": 3600, + "oidcDiscoveryEndpointEnabled": false, + "overrideableOIDCClaims": [], + "supportedClaims": [], + "supportedIDTokenEncryptionAlgorithms": [ + "ECDH-ES+A256KW", + "ECDH-ES+A192KW", + "RSA-OAEP", + "ECDH-ES+A128KW", + "RSA-OAEP-256", + "A128KW", + "A256KW", + "ECDH-ES", + "dir", + "A192KW", + ], + "supportedIDTokenEncryptionMethods": [ + "A256GCM", + "A192GCM", + "A128GCM", + "A128CBC-HS256", + "A192CBC-HS384", + "A256CBC-HS512", + ], + "supportedIDTokenSigningAlgorithms": [ + "PS384", + "ES384", + "RS384", + "HS256", + "HS512", + "ES256", + "RS256", + "HS384", + "ES512", + "PS256", + "PS512", + "RS512", + ], + }, + "deviceCodeConfig": { + "deviceCodeLifetime": 300, + "devicePollInterval": 5, + "deviceUserCodeCharacterSet": "234567ACDEFGHJKLMNPQRSTWXYZabcdefhijkmnopqrstwxyz", + "deviceUserCodeLength": 8, + }, + "pluginsConfig": { + "accessTokenEnricherClass": "org.forgerock.oauth2.core.plugins.registry.DefaultAccessTokenEnricher", + "accessTokenModificationPluginType": "SCRIPTED", + "accessTokenModificationScript": "d22f9a0c-426a-4466-b95e-d0f125b0d5fa", + "authorizeEndpointDataProviderClass": "org.forgerock.oauth2.core.plugins.registry.DefaultEndpointDataProvider", + "authorizeEndpointDataProviderPluginType": "JAVA", + "authorizeEndpointDataProviderScript": "3f93ef6e-e54a-4393-aba1-f322656db28a", + "evaluateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeEvaluator", + "evaluateScopePluginType": "JAVA", + "evaluateScopeScript": "da56fe60-8b38-4c46-a405-d6b306d4b336", + "oidcClaimsPluginType": "SCRIPTED", + "oidcClaimsScript": "36863ffb-40ec-48b9-94b1-9a99f71cc3b5", + "userCodeGeneratorClass": "org.forgerock.oauth2.core.plugins.registry.DefaultUserCodeGenerator", + "validateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeValidator", + "validateScopePluginType": "JAVA", + "validateScopeScript": "25e6c06d-cf70-473b-bd28-26931edc476b", + }, + }, + "_type": { + "_id": "OAuth2Client", + "collection": true, + "name": "OAuth2 Clients", + }, + "advancedOAuth2ClientConfig": { + "clientUri": [], + "contacts": [], + "customProperties": [], + "descriptions": [], + "grantTypes": [ + "authorization_code", + ], + "isConsentImplied": false, + "javascriptOrigins": [], + "logoUri": [], + "mixUpMitigation": false, + "name": [], + "policyUri": [], + "refreshTokenGracePeriod": 0, + "requestUris": [], + "require_pushed_authorization_requests": false, + "responseTypes": [ + "code", + "token", + "id_token", + "code token", + "token id_token", + "code id_token", + "code token id_token", + "device_code", + "device_code id_token", + ], + "sectorIdentifierUri": null, + "softwareIdentity": null, + "softwareVersion": null, + "subjectType": "public", + "tokenEndpointAuthMethod": "client_secret_basic", + "tokenExchangeAuthLevel": 0, + "tosURI": [], + "updateAccessToken": null, + }, + "coreOAuth2ClientConfig": { + "accessTokenLifetime": 0, + "agentgroup": null, + "authorizationCodeLifetime": 0, + "clientName": [], + "clientType": "Confidential", + "defaultScopes": [], + "loopbackInterfaceRedirection": false, + "redirectionUris": [], + "refreshTokenLifetime": 0, + "scopes": [], + "secretLabelIdentifier": null, + "status": "Active", + }, + "coreOpenIDClientConfig": { + "backchannel_logout_session_required": false, + "backchannel_logout_uri": null, + "claims": [], + "clientSessionUri": null, + "defaultAcrValues": [], + "defaultMaxAge": 600, + "defaultMaxAgeEnabled": false, + "jwtTokenLifetime": 0, + "postLogoutRedirectUri": [], + }, + "coreUmaClientConfig": { + "claimsRedirectionUris": [], + }, + "overrideOAuth2ClientConfig": { + "accessTokenMayActScript": "[Empty]", + "accessTokenModificationPluginType": "PROVIDER", + "accessTokenModificationScript": "[Empty]", + "authorizeEndpointDataProviderClass": "org.forgerock.oauth2.core.plugins.registry.DefaultEndpointDataProvider", + "authorizeEndpointDataProviderPluginType": "PROVIDER", + "authorizeEndpointDataProviderScript": "[Empty]", + "clientsCanSkipConsent": false, + "enableRemoteConsent": false, + "evaluateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeEvaluator", + "evaluateScopePluginType": "PROVIDER", + "evaluateScopeScript": "[Empty]", + "issueRefreshToken": true, + "issueRefreshTokenOnRefreshedToken": true, + "oidcClaimsPluginType": "PROVIDER", + "oidcClaimsScript": "[Empty]", + "oidcMayActScript": "[Empty]", + "overrideableOIDCClaims": [], + "providerOverridesEnabled": false, + "remoteConsentServiceId": null, + "scopesPolicySet": "oauth2Scopes", + "statelessTokensEnabled": false, + "tokenEncryptionEnabled": false, + "useForceAuthnForMaxAge": false, + "usePolicyEngineForScope": false, + "validateScopeClass": "org.forgerock.oauth2.core.plugins.registry.DefaultScopeValidator", + "validateScopePluginType": "PROVIDER", + "validateScopeScript": "[Empty]", + }, + "signEncOAuth2ClientConfig": { + "authorizationResponseEncryptionAlgorithm": null, + "authorizationResponseEncryptionMethod": null, + "authorizationResponseSigningAlgorithm": "RS256", + "clientJwtPublicKey": null, + "idTokenEncryptionAlgorithm": "RSA-OAEP-256", + "idTokenEncryptionEnabled": false, + "idTokenEncryptionMethod": "A128CBC-HS256", + "idTokenPublicEncryptionKey": null, + "idTokenSignedResponseAlg": "RS256", + "jwkSet": null, + "jwkStoreCacheMissCacheTime": 60000, + "jwksCacheTimeout": 3600000, + "jwksUri": null, + "mTLSCertificateBoundAccessTokens": false, + "mTLSSubjectDN": null, + "mTLSTrustedCert": null, + "publicKeyLocation": "jwks_uri", + "requestParameterEncryptedAlg": null, + "requestParameterEncryptedEncryptionAlgorithm": "A128CBC-HS256", + "requestParameterSignedAlg": null, + "tokenEndpointAuthSigningAlgorithm": "RS256", + "tokenIntrospectionEncryptedResponseAlg": "RSA-OAEP-256", + "tokenIntrospectionEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "tokenIntrospectionResponseFormat": "JSON", + "tokenIntrospectionSignedResponseAlg": "RS256", + "userinfoEncryptedResponseAlg": null, + "userinfoEncryptedResponseEncryptionAlgorithm": "A128CBC-HS256", + "userinfoResponseFormat": "JSON", + "userinfoSignedResponseAlg": null, + }, + }, + }, + "authentication": { + "_id": "", + "_type": { + "_id": "EMPTY", + "collection": false, + "name": "Core", + }, + "accountlockout": { + "lockoutDuration": 0, + "lockoutDurationMultiplier": 1, + "lockoutWarnUserCount": 0, + "loginFailureCount": 5, + "loginFailureDuration": 300, + "loginFailureLockoutMode": false, + "storeInvalidAttemptsInDataStore": true, + }, + "core": { + "adminAuthModule": "ldapService", + "orgConfig": "ldapService", + }, + "general": { + "defaultAuthLevel": 0, + "identityType": [ + "agent", + "user", + ], + "locale": "en_US", + "statelessSessionsEnabled": false, + "twoFactorRequired": false, + "userStatusCallbackPlugins": [], + }, + "postauthprocess": { + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [ + "/am/console", + ], + "userAttributeSessionMapping": [], + "usernameGeneratorClass": "com.sun.identity.authentication.spi.DefaultUserIDGenerator", + "usernameGeneratorEnabled": true, + }, + "security": { + "addClearSiteDataHeader": true, + "moduleBasedAuthEnabled": true, + "sharedSecret": null, + "zeroPageLoginAllowedWithoutReferrer": true, + "zeroPageLoginEnabled": false, + "zeroPageLoginReferrerWhiteList": [], + }, + "trees": { + "authenticationSessionsMaxDuration": 5, + "authenticationSessionsStateManagement": "JWT", + "authenticationSessionsWhitelist": false, + "authenticationTreeCookieHttpOnly": true, + "suspendedAuthenticationTimeout": 5, + }, + "userprofile": { + "aliasAttributeName": [ + "uid", + ], + "defaultRole": [], + "dynamicProfileCreation": "false", + }, + }, + "authenticationChains": { + "amsterService": { + "_id": "amsterService", + "_type": { + "_id": "EMPTY", + "collection": true, + "name": "Authentication Configuration", + }, + "authChainConfiguration": [ + { + "criteria": "REQUIRED", + "module": "Amster", + "options": {}, + }, + ], + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [], + }, + "ldapService": { + "_id": "ldapService", + "_type": { + "_id": "EMPTY", + "collection": true, + "name": "Authentication Configuration", + }, + "authChainConfiguration": [ + { + "criteria": "REQUIRED", + "module": "DataStore", + "options": {}, + }, + ], + "loginFailureUrl": [], + "loginPostProcessClass": [], + "loginSuccessUrl": [], + }, + }, + "idp": { + "Google Test": { + "_id": "Google Test", + "_type": { + "_id": "googleConfig", + "collection": true, + "name": "Client configuration for Google.", + }, + "acrValues": [], + "authenticationIdKey": "sub", + "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth", + "clientAuthenticationMethod": "CLIENT_SECRET_POST", + "clientId": "test", + "enableNativeNonce": true, + "enabled": true, + "encryptJwtRequestParameter": false, + "encryptedIdTokens": false, + "issuer": "https://accounts.google.com", + "issuerComparisonCheckType": "EXACT", + "jwtEncryptionAlgorithm": "NONE", + "jwtEncryptionMethod": "NONE", + "jwtRequestParameterOption": "NONE", + "jwtSigningAlgorithm": "NONE", + "pkceMethod": "S256", + "privateKeyJwtExpTime": 600, + "redirectURI": "https://testurl.com", + "responseMode": "DEFAULT", + "revocationCheckOptions": [], + "scopeDelimiter": " ", + "scopes": [ + "openid", + "profile", + "email", + ], + "tokenEndpoint": "https://www.googleapis.com/oauth2/v4/token", + "transform": "58d29080-4563-480b-89bb-1e7719776a21", + "uiConfig": { + "buttonClass": "", + "buttonCustomStyle": "background-color: #fff; color: #757575; border-color: #ddd;", + "buttonCustomStyleHover": "color: #6d6d6d; background-color: #eee; border-color: #ccc;", + "buttonDisplayName": "Google", + "buttonImage": "images/g-logo.png", + "iconBackground": "#4184f3", + "iconClass": "fa-google", + "iconFontColor": "white", + }, + "useCustomTrustStore": false, + "userInfoEndpoint": "https://www.googleapis.com/oauth2/v3/userinfo", + "userInfoResponseType": "JSON", + "wellKnownEndpoint": "https://accounts.google.com/.well-known/openid-configuration", + }, + }, + "policy": { + "Test Policy": { + "_id": "Test Policy", + "actionValues": {}, + "active": true, + "applicationName": "iPlanetAMWebAgentService", + "createdBy": "id=amadmin,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": "2024-06-27T17:07:04.220Z", + "description": "", + "name": "Test Policy", + "resourceTypeUuid": "76656a38-5f8e-401b-83aa-4ccb74ce88d2", + "resources": [ + "*://*:*/*?*", + ], + "subject": { + "subjects": [ + { + "type": "NONE", + }, + { + "subjectValues": [ + "id=phales,ou=user,dc=openam,dc=forgerock,dc=org", + ], + "type": "Identity", + }, + ], + "type": "AND", + }, + }, + }, + "policyset": { + "iPlanetAMWebAgentService": { + "applicationType": "iPlanetAMWebAgentService", + "attributeNames": [], + "conditions": [ + "AND", + "OR", + "NOT", + "AMIdentityMembership", + "AuthLevel", + "LEAuthLevel", + "AuthScheme", + "AuthenticateToRealm", + "AuthenticateToService", + "IPv4", + "IPv6", + "LDAPFilter", + "OAuth2Scope", + "ResourceEnvIP", + "Session", + "SessionProperty", + "SimpleTime", + "Script", + "Transaction", + ], + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1718897366825, + "description": "The built-in Application used by OpenAM Policy Agents.", + "displayName": "Default Policy Set", + "editable": true, + "entitlementCombiner": "DenyOverride", + "name": "iPlanetAMWebAgentService", + "resourceComparator": null, + "resourceTypeUuids": [ + "76656a38-5f8e-401b-83aa-4ccb74ce88d2", + ], + "saveIndex": null, + "searchIndex": null, + "subjects": [ + "AND", + "OR", + "NOT", + "AuthenticatedUsers", + "Identity", + "JwtClaim", + "NONE", + ], + }, + "oauth2Scopes": { + "applicationType": "iPlanetAMWebAgentService", + "attributeNames": [], + "conditions": [ + "AND", + "OR", + "NOT", + "AMIdentityMembership", + "AuthLevel", + "LEAuthLevel", + "AuthScheme", + "AuthenticateToRealm", + "AuthenticateToService", + "IPv4", + "IPv6", + "LDAPFilter", + "OAuth2Scope", + "ResourceEnvIP", + "Session", + "SessionProperty", + "SimpleTime", + "Script", + "Transaction", + ], + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1718897366918, + "description": "The built-in Application used by the OAuth2 scope authorization process.", + "displayName": "Default OAuth2 Scopes Policy Set", + "editable": true, + "entitlementCombiner": "DenyOverride", + "name": "oauth2Scopes", + "resourceComparator": null, + "resourceTypeUuids": [ + "d60b7a71-1dc6-44a5-8e48-e4b9d92dee8b", + ], + "saveIndex": null, + "searchIndex": null, + "subjects": [ + "AND", + "OR", + "NOT", + "AuthenticatedUsers", + "Identity", + "JwtClaim", + "NONE", + ], + }, + }, + "resourcetype": { + "76656a38-5f8e-401b-83aa-4ccb74ce88d2": { + "actions": { + "DELETE": true, + "GET": true, + "HEAD": true, + "OPTIONS": true, + "PATCH": true, + "POST": true, + "PUT": true, + }, + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1422892465848, + "description": "The built-in URL Resource Type available to OpenAM Policies.", + "name": "URL", + "patterns": [ + "*://*:*/*", + "*://*:*/*?*", + ], + "uuid": "76656a38-5f8e-401b-83aa-4ccb74ce88d2", + }, + "d60b7a71-1dc6-44a5-8e48-e4b9d92dee8b": { + "actions": { + "GRANT": true, + }, + "createdBy": "id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org", + "creationDate": 1517161800564, + "description": "The built-in OAuth2 Scope Resource Type for OAuth2 policy-provided scope.", + "name": "OAuth2 Scope", + "patterns": [ + "*://*:*/*", + "*://*:*/*?*", + "*", + ], + "uuid": "d60b7a71-1dc6-44a5-8e48-e4b9d92dee8b", + }, + }, + "saml": { + "cot": { + "Test COT": { + "_id": "Test COT", + "_type": { + "_id": "circlesoftrust", + "collection": true, + "name": "Circle of Trust", + }, + "status": "active", + "trustedProviders": [], + }, + }, + "hosted": { + "VGVzdCBFbnRpdHk": { + "_id": "VGVzdCBFbnRpdHk", + "entityId": "Test Entity", + "identityProvider": { + "advanced": { + "ecpConfiguration": { + "idpSessionMapper": "com.sun.identity.saml2.plugins.DefaultIDPECPSessionMapper", + }, + "idpAdapter": { + "idpAdapterScript": "[Empty]", + }, + "idpFinderImplementation": {}, + "relayStateUrlList": {}, + "saeConfiguration": { + "idpUrl": "http://localhost:8080/am/idpsaehandler/metaAlias/test", + }, + "sessionSynchronization": {}, + }, + "assertionContent": { + "assertionCache": {}, + "assertionTime": { + "effectiveTime": 600, + "notBeforeTimeSkew": 600, + }, + "authenticationContext": { + "authContextItems": [ + { + "contextReference": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", + "level": 0, + }, + ], + "authenticationContextMapper": "com.sun.identity.saml2.plugins.DefaultIDPAuthnContextMapper", + }, + "basicAuthentication": {}, + "nameIdFormat": { + "nameIdFormatList": [ + "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + "urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + "urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + ], + "nameIdValueMap": [ + { + "binary": false, + "key": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + "value": "mail", + }, + ], + }, + "signingAndEncryption": { + "encryption": {}, + "requestResponseSigning": {}, + "secretIdAndAlgorithms": {}, + }, + }, + "assertionProcessing": { + "accountMapper": { + "accountMapper": "com.sun.identity.saml2.plugins.DefaultIDPAccountMapper", + }, + "attributeMapper": { + "attributeMapper": "com.sun.identity.saml2.plugins.DefaultIDPAttributeMapper", + "attributeMapperScript": "[Empty]", + }, + "localConfiguration": {}, + }, + "services": { + "assertionIdRequest": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/AIDReqSoap/IDPRole/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:URI", + "location": "http://localhost:8080/am/AIDReqUri/IDPRole/metaAlias/test", + }, + ], + "metaAlias": "/test", + "nameIdMapping": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/NIMSoap/metaAlias/test", + }, + ], + "serviceAttributes": { + "artifactResolutionService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/ArtifactResolver/metaAlias/test", + }, + ], + "nameIdService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/IDPMniRedirect/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPMniRedirect/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/IDPMniPOST/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPMniPOST/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/IDPMniSoap/metaAlias/test", + }, + ], + "singleLogoutService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/IDPSloRedirect/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPSloRedirect/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/IDPSloPOST/metaAlias/test", + "responseLocation": "http://localhost:8080/am/IDPSloPOST/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/IDPSloSoap/metaAlias/test", + }, + ], + "singleSignOnService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/SSORedirect/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/SSOPOST/metaAlias/test", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/SSOSoap/metaAlias/test", + }, + ], + }, + }, + }, + "serviceProvider": { + "advanced": { + "ecpConfiguration": { + "ecpRequestIdpListFinderImpl": "com.sun.identity.saml2.plugins.ECPIDPFinder", + }, + "idpProxy": {}, + "relayStateUrlList": {}, + "saeConfiguration": { + "spUrl": "http://localhost:8080/am/spsaehandler/metaAlias/test2", + }, + }, + "assertionContent": { + "assertionTimeSkew": 300, + "authenticationContext": { + "authContextItems": [ + { + "contextReference": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport", + "defaultItem": true, + "level": 0, + }, + ], + "authenticationComparisonType": "Exact", + "authenticationContextMapper": "com.sun.identity.saml2.plugins.DefaultSPAuthnContextMapper", + "includeRequestedAuthenticationContext": true, + }, + "basicAuthentication": {}, + "nameIdFormat": { + "nameIdFormatList": [ + "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + "urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + "urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + ], + }, + "signingAndEncryption": { + "encryption": {}, + "requestResponseSigning": {}, + "secretIdAndAlgorithms": {}, + }, + }, + "assertionProcessing": { + "accountMapping": { + "spAccountMapper": "com.sun.identity.saml2.plugins.DefaultSPAccountMapper", + }, + "adapter": { + "spAdapterScript": "[Empty]", + }, + "attributeMapper": { + "attributeMap": [ + { + "key": "*", + "value": "*", + }, + ], + "attributeMapper": "com.sun.identity.saml2.plugins.DefaultSPAttributeMapper", + }, + "autoFederation": {}, + "responseArtifactMessageEncoding": { + "encoding": "URI", + }, + "url": {}, + }, + "services": { + "metaAlias": "/test2", + "serviceAttributes": { + "assertionConsumerService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact", + "index": 0, + "isDefault": true, + "location": "http://localhost:8080/am/Consumer/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "index": 1, + "isDefault": false, + "location": "http://localhost:8080/am/Consumer/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:PAOS", + "index": 2, + "isDefault": false, + "location": "http://localhost:8080/am/Consumer/ECP/metaAlias/test2", + }, + ], + "nameIdService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/SPMniRedirect/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPMniRedirect/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/SPMniPOST/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPMniPOST/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/SPMniSoap/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPMniSoap/metaAlias/test2", + }, + ], + "singleLogoutService": [ + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", + "location": "http://localhost:8080/am/SPSloRedirect/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPSloRedirect/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + "location": "http://localhost:8080/am/SPSloPOST/metaAlias/test2", + "responseLocation": "http://localhost:8080/am/SPSloPOST/metaAlias/test2", + }, + { + "binding": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP", + "location": "http://localhost:8080/am/SPSloSoap/metaAlias/test2", + }, + ], + }, + }, + }, + }, + }, + "metadata": { + "VGVzdCBFbnRpdHk": [ + "", + "", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " 128", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + " urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + " urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + " urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + " urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + " urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + " urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " PGNlcnRpZmljYXRlPg==", + " ", + " ", + " ", + " ", + " ", + " ", + " 128", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + " urn:oasis:names:tc:SAML:2.0:nameid-format:transient", + " urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", + " urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", + " urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName", + " urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos", + " urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", + " ", + " ", + " ", + " ", + "", + "", + "", + ], + }, + "remote": {}, + }, + "script": { + "01e1a3c0-038b-4c16-956a-6c9d89328cff": { + "_id": "01e1a3c0-038b-4c16-956a-6c9d89328cff", + "context": "AUTHENTICATION_TREE_DECISION_NODE", + "createdBy": "null", + "creationDate": 0, + "default": true, + "description": "Default global script for a scripted decision node", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "Authentication Tree Decision Node Script", + "script": "/* + - Data made available by nodes that have already executed are available in the sharedState variable. + - The script should set outcome to either "true" or "false". + */ + +outcome = "true"; +", + }, + "1244e639-4a31-401d-ab61-d75133d8dc9e": { + "_id": "1244e639-4a31-401d-ab61-d75133d8dc9e", + "context": "SOCIAL_IDP_PROFILE_TRANSFORMATION", + "createdBy": "null", + "creationDate": 0, + "default": true, + "description": "Normalizes raw profile data from Instagram", + "evaluatorVersion": "1.0", + "language": "GROOVY", + "name": "Instagram Profile Normalization", + "script": "/* + * Copyright 2020 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ + +import static org.forgerock.json.JsonValue.field +import static org.forgerock.json.JsonValue.json +import static org.forgerock.json.JsonValue.object + +return json(object( + field("id", rawProfile.id), + field("username", rawProfile.username))) +", + }, + "13e3f263-9cd3-4844-8d1c-040fd0dd02eb": { + "_id": "13e3f263-9cd3-4844-8d1c-040fd0dd02eb", + "context": "AUTHENTICATION_TREE_DECISION_NODE", + "createdBy": "null", + "creationDate": 0, + "default": true, + "description": "Default global script template for Device Profile Match decision node script for Authentication Tree", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "Device Profile Match Template - Decision Node Script", + "script": "/* + * Copyright 2020-2022 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ + +/** ****************************************************************** + * + * The following script is a simplified template for understanding + * the basics of device matching. _This is not functionally complete._ + * For a functionally complete script as well as a development toolkit, + * visit https://github.com/ForgeRock/forgerock-device-match-script. + * + * Global node variables accessible within this scope: + * 1. \`sharedState\` provides access to incoming request + * 2. \`deviceProfilesDao\` provides access to stored profiles + * 3. \`outcome\` variable maps to auth tree node outcomes; values are + * 'true', 'false', or 'unknownDevice' (notice _all_ are strings). + * ******************************************************************/ + +/** + * Get the incoming request's device profile. + * Returns serialized JSON (type string); parsing this will result a + * native JS object. + */ +var incomingJson = sharedState.get('forgeRock.device.profile').toString(); +var incoming = JSON.parse(incomingJson); + +/** + * Get the incoming user's username and realm. + * Notice the use of \`.asString()\`. + */ +var username = sharedState.get("username").asString(); +var realm = sharedState.get("realm").asString(); + +/** + * Get the user's stored profiles for appropriate realm. + * Returns a _special_ object with methods for profile data + */ +var storedProfiles = deviceProfilesDao.getDeviceProfiles(username, realm); + +// Default to \`outcome\` of 'unknownDevice' +outcome = 'unknownDevice'; + +if (storedProfiles) { + var i = 0; + // NOTE: \`.size()\` method returns the number of stored profiles + var len = storedProfiles.size(); + + for (i; i < len; i++) { + /** + * Get the stored profile. + * Returns serialized JSON (type string); parsing this will result + * a native JS object. + */ + var storedJson = storedProfiles.get(i); + var stored = JSON.parse(storedJson); + + /** + * Find a stored profile with the same identifier. + */ + if (incoming.identifier === stored.identifier) { + + /** + * Now that you've found the appropriate profile, you will perform + * the logic here to match the values of the \`incoming\` profile + * with that of the \`stored\` profile. + * + * The result of the matching logic is assigned to \`outcome\`. Since + * we have profiles of the same identifier, the value (type string) + * should now be either 'true' or 'false' (properties matched or not). + * + * For more information about this topic, visit this Github repo: + * https://github.com/ForgeRock/forgerock-device-match-script + */ + outcome = 'false'; + } + } +} +", + }, + "157298c0-7d31-4059-a95b-eeb08473b7e5": { + "_id": "157298c0-7d31-4059-a95b-eeb08473b7e5", + "context": "AUTHENTICATION_CLIENT_SIDE", + "createdBy": "null", + "creationDate": 0, + "default": true, + "description": "Default global script for client side Device Id (Match) Authentication Module", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "Device Id (Match) - Client Side", + "script": "var fontDetector = (function () { + /** + * JavaScript code to detect available availability of a + * particular font in a browser using JavaScript and CSS. + * + * Author : Lalit Patel + * Website: http://www.lalit.org/lab/javascript-css-font-detect/ + * License: Apache Software License 2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * Version: 0.15 (21 Sep 2009) + * Changed comparision font to default from sans-default-default, + * as in FF3.0 font of child element didn't fallback + * to parent element if the font is missing. + * Version: 0.2 (04 Mar 2012) + * Comparing font against all the 3 generic font families ie, + * 'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3 + * then that font is 100% not available in the system + * Version: 0.3 (24 Mar 2012) + * Replaced sans with serif in the list of baseFonts + */ + /* + * Portions Copyrighted 2013 ForgeRock AS. + */ + var detector = {}, baseFonts, testString, testSize, h, s, defaultWidth = {}, defaultHeight = {}, index; + + // a font will be compared against all the three default fonts. + // and if it doesn't match all 3 then that font is not available. + baseFonts = ['monospace', 'sans-serif', 'serif']; + + //we use m or w because these two characters take up the maximum width. + // And we use a LLi so that the same matching fonts can get separated + testString = "mmmmmmmmmmlli"; + + //we test using 72px font size, we may use any size. I guess larger the better. + testSize = '72px'; + + h = document.getElementsByTagName("body")[0]; + + // create a SPAN in the document to get the width of the text we use to test + s = document.createElement("span"); + s.style.fontSize = testSize; + s.innerHTML = testString; + for (index in baseFonts) { + //get the default width for the three base fonts + s.style.fontFamily = baseFonts[index]; + h.appendChild(s); + defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font + defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font + h.removeChild(s); + } + + detector.detect = function(font) { + var detected = false, index, matched; + for (index in baseFonts) { + s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback. + h.appendChild(s); + matched = (s.offsetWidth !== defaultWidth[baseFonts[index]] || s.offsetHeight !== defaultHeight[baseFonts[index]]); + h.removeChild(s); + detected = detected || matched; + } + return detected; + }; + + return detector; +}()); +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2009 Sun Microsystems Inc. All Rights Reserved + * + * The contents of this file are subject to the terms + * of the Common Development and Distribution License + * (the License). You may not use this file except in + * compliance with the License. + * + * You can obtain a copy of the License at + * https://opensso.dev.java.net/public/CDDLv1.0.html or + * opensso/legal/CDDLv1.0.txt + * See the License for the specific language governing + * permission and limitations under the License. + * + * When distributing Covered Code, include this CDDL + * Header Notice in each file and include the License file + * at opensso/legal/CDDLv1.0.txt. + * If applicable, add the following below the CDDL Header, + * with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + */ +/* + * Portions Copyrighted 2013 Syntegrity. + * Portions Copyrighted 2013-2014 ForgeRock AS. + */ + +var collectScreenInfo = function () { + var screenInfo = {}; + if (screen) { + if (screen.width) { + screenInfo.screenWidth = screen.width; + } + + if (screen.height) { + screenInfo.screenHeight = screen.height; + } + + if (screen.pixelDepth) { + screenInfo.screenColourDepth = screen.pixelDepth; + } + } else { + console.warn("Cannot collect screen information. screen is not defined."); + } + return screenInfo; + }, + collectTimezoneInfo = function () { + var timezoneInfo = {}, offset = new Date().getTimezoneOffset(); + + if (offset) { + timezoneInfo.timezone = offset; + } else { + console.warn("Cannot collect timezone information. timezone is not defined."); + } + + return timezoneInfo; + }, + collectBrowserPluginsInfo = function () { + + if (navigator && navigator.plugins) { + var pluginsInfo = {}, i, plugins = navigator.plugins; + pluginsInfo.installedPlugins = ""; + + for (i = 0; i < plugins.length; i++) { + pluginsInfo.installedPlugins = pluginsInfo.installedPlugins + plugins[i].filename + ";"; + } + + return pluginsInfo; + } else { + console.warn("Cannot collect browser plugin information. navigator.plugins is not defined."); + return {}; + } + + }, +// Getting geolocation takes some time and is done asynchronously, hence need a callback which is called once geolocation is retrieved. + collectGeolocationInfo = function (callback) { + var geolocationInfo = {}, + successCallback = function(position) { + geolocationInfo.longitude = position.coords.longitude; + geolocationInfo.latitude = position.coords.latitude; + callback(geolocationInfo); + }, errorCallback = function(error) { + console.warn("Cannot collect geolocation information. " + error.code + ": " + error.message); + callback(geolocationInfo); + }; + if (navigator && navigator.geolocation) { + // NB: If user chooses 'Not now' on Firefox neither callback gets called + // https://bugzilla.mozilla.org/show_bug.cgi?id=675533 + navigator.geolocation.getCurrentPosition(successCallback, errorCallback); + } else { + console.warn("Cannot collect geolocation information. navigator.geolocation is not defined."); + callback(geolocationInfo); + } + }, + collectBrowserFontsInfo = function () { + var fontsInfo = {}, i, fontsList = ["cursive","monospace","serif","sans-serif","fantasy","default","Arial","Arial Black", + "Arial Narrow","Arial Rounded MT Bold","Bookman Old Style","Bradley Hand ITC","Century","Century Gothic", + "Comic Sans MS","Courier","Courier New","Georgia","Gentium","Impact","King","Lucida Console","Lalit", + "Modena","Monotype Corsiva","Papyrus","Tahoma","TeX","Times","Times New Roman","Trebuchet MS","Verdana", + "Verona"]; + fontsInfo.installedFonts = ""; + + for (i = 0; i < fontsList.length; i++) { + if (fontDetector.detect(fontsList[i])) { + fontsInfo.installedFonts = fontsInfo.installedFonts + fontsList[i] + ";"; + } + } + return fontsInfo; + }, + devicePrint = {}; + +devicePrint.screen = collectScreenInfo(); +devicePrint.timezone = collectTimezoneInfo(); +devicePrint.plugins = collectBrowserPluginsInfo(); +devicePrint.fonts = collectBrowserFontsInfo(); + +if (navigator.userAgent) { + devicePrint.userAgent = navigator.userAgent; +} +if (navigator.appName) { + devicePrint.appName = navigator.appName; +} +if (navigator.appCodeName) { + devicePrint.appCodeName = navigator.appCodeName; +} +if (navigator.appVersion) { + devicePrint.appVersion = navigator.appVersion; +} +if (navigator.appMinorVersion) { + devicePrint.appMinorVersion = navigator.appMinorVersion; +} +if (navigator.buildID) { + devicePrint.buildID = navigator.buildID; +} +if (navigator.platform) { + devicePrint.platform = navigator.platform; +} +if (navigator.cpuClass) { + devicePrint.cpuClass = navigator.cpuClass; +} +if (navigator.oscpu) { + devicePrint.oscpu = navigator.oscpu; +} +if (navigator.product) { + devicePrint.product = navigator.product; +} +if (navigator.productSub) { + devicePrint.productSub = navigator.productSub; +} +if (navigator.vendor) { + devicePrint.vendor = navigator.vendor; +} +if (navigator.vendorSub) { + devicePrint.vendorSub = navigator.vendorSub; +} +if (navigator.language) { + devicePrint.language = navigator.language; +} +if (navigator.userLanguage) { + devicePrint.userLanguage = navigator.userLanguage; +} +if (navigator.browserLanguage) { + devicePrint.browserLanguage = navigator.browserLanguage; +} +if (navigator.systemLanguage) { + devicePrint.systemLanguage = navigator.systemLanguage; +} + +// Attempt to collect geo-location information and return this with the data collected so far. +// Otherwise, if geo-location fails or takes longer than 30 seconds, auto-submit the data collected so far. +autoSubmitDelay = 30000; +output.value = JSON.stringify(devicePrint); +collectGeolocationInfo(function(geolocationInfo) { + devicePrint.geolocation = geolocationInfo; + output.value = JSON.stringify(devicePrint); + submit(); +}); +", + }, + "1817cc25-fc84-4053-8f91-4ef130616e25": { + "_id": "1817cc25-fc84-4053-8f91-4ef130616e25", + "context": "OIDC_CLAIMS", + "createdBy": "null", + "creationDate": 0, + "default": false, + "description": "null", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "Legacy", + "script": "/* + * Copyright 2014-2020 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ +import com.iplanet.sso.SSOException +import com.sun.identity.idm.IdRepoException +import org.forgerock.oauth2.core.exceptions.InvalidRequestException +import org.forgerock.oauth2.core.UserInfoClaims +import org.forgerock.openidconnect.Claim + +/* +* Defined variables: +* logger - always presents, the "OAuth2Provider" debug logger instance +* claims - always present, default server provided claims - Map +* claimObjects - always present, default server provided claims - List +* session - present if the request contains the session cookie, the user's session object +* identity - always present, the identity of the resource owner +* scopes - always present, the requested scopes +* scriptName - always present, the display name of the script +* requestProperties - always present, contains a map of request properties: +* requestUri - the request URI +* realm - the realm that the request relates to +* requestParams - a map of the request params and/or posted data. Each value is a list of one or +* more properties. Please note that these should be handled in accordance with OWASP best practices. +* clientProperties - present if the client specified in the request was identified, contains a map of client +* properties: +* clientId - the client's Uri for the request locale +* allowedGrantTypes - list of the allowed grant types (org.forgerock.oauth2.core.GrantType) +* for the client +* allowedResponseTypes - list of the allowed response types for the client +* allowedScopes - list of the allowed scopes for the client +* customProperties - A map of the custom properties of the client. +* Lists or maps will be included as sub-maps, e.g: +* testMap[Key1]=Value1 will be returned as testmap -> Key1 -> Value1 +* requestedClaims - Map> +* always present, not empty if the request contains a claims parameter and server has enabled +* claims_parameter_supported, map of requested claims to possible values, otherwise empty, +* requested claims with no requested values will have a key but no value in the map. A key with +* a single value in its Set indicates this is the only value that should be returned. +* requestedTypedClaims - List +* always present, not empty if the request contains a claims parameter and server has enabled +* claims_parameter_supported, list of requested claims with claim name, requested possible values +* and if claim is essential, otherwise empty, +* requested claims with no requested values will have a claim with no values. A claims with +* a single value indicates this is the only value that should be returned. +* claimsLocales - the values from the 'claims_locales' parameter - List +* Required to return a Map of claims to be added to the id_token claims +* +* Expected return value structure: +* UserInfoClaims { +* Map values; // The values of the claims for the user information +* Map> compositeScopes; // Mapping of scope name to a list of claim names. +* } +*/ + +// user session not guaranteed to be present +boolean sessionPresent = session != null + +/* + * Pulls first value from users profile attribute + * + * @param claim The claim object. + * @param attr The profile attribute name. + */ +def fromSet = { claim, attr -> + if (attr != null && attr.size() == 1){ + attr.iterator().next() + } else if (attr != null && attr.size() > 1){ + attr + } else if (logger.warningEnabled()) { + logger.warning("OpenAMScopeValidator.getUserInfo(): Got an empty result for claim=$claim"); + } +} + +// ---vvvvvvvvvv--- EXAMPLE CLAIM ATTRIBUTE RESOLVER FUNCTIONS ---vvvvvvvvvv--- +/* + * Claim resolver which resolves the value of the claim from its requested values. + * + * This resolver will return a value if the claim has one requested values, otherwise an exception is thrown. + */ +defaultClaimResolver = { claim -> + if (claim.getValues().size() == 1) { + [(claim.getName()): claim.getValues().iterator().next()] + } else { + [:] + } +} + +/* + * Claim resolver which resolves the value of the claim by looking up the user's profile. + * + * This resolver will return a value for the claim if: + * # the user's profile attribute is not null + * # AND the claim contains no requested values + * # OR the claim contains requested values and the value from the user's profile is in the list of values + * + * If no match is found an exception is thrown. + */ +userProfileClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (userProfileValue != null && (claim.getValues() == null || claim.getValues().isEmpty() || claim.getValues().contains(userProfileValue))) { + return [(claim.getName()): userProfileValue] + } + } + [:] +} + +/* + * Claim resolver which resolves the value of the claim of the user's address. + * + * This resolver will return a value for the claim if: + * # the value of the address is not null + * + */ +userAddressClaimResolver = { claim, identity -> + if (identity != null) { + addressFormattedValue = fromSet(claim.getName(), identity.getAttribute("postaladdress")) + if (addressFormattedValue != null) { + return [ + "formatted" : addressFormattedValue + ] + } + } + [:] +} + +/* + * Claim resolver which resolves the value of the claim by looking up the user's profile. + * + * This resolver will return a value for the claim if: + * # the user's profile attribute is not null + * # AND the claim contains no requested values + * # OR the claim contains requested values and the value from the user's profile is in the list of values + * + * If the claim is essential and no value is found an InvalidRequestException will be thrown and returned to the user. + * If no match is found an exception is thrown. + */ +essentialClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (claim.isEssential() && (userProfileValue == null || userProfileValue.isEmpty())) { + throw new InvalidRequestException("Could not provide value for essential claim $claim") + } + if (userProfileValue != null && (claim.getValues() == null || claim.getValues().isEmpty() || claim.getValues().contains(userProfileValue))) { + return [(claim.getName()): userProfileValue] + } + } + return [:] +} + +/* + * Claim resolver which expects the user's profile attribute value to be in the following format: + * "language_tag|value_for_language,...". + * + * This resolver will take the list of requested languages from the 'claims_locales' authorize request + * parameter and attempt to match it to a value from the users' profile attribute. + * If no match is found an exception is thrown. + */ +claimLocalesClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (userProfileValue != null) { + localeValues = parseLocaleAwareString(userProfileValue) + locale = claimsLocales.find { locale -> localeValues.containsKey(locale) } + if (locale != null) { + return [(claim.getName()): localeValues.get(locale)] + } + } + } + return [:] +} + +/* + * Claim resolver which expects the user's profile attribute value to be in the following format: + * "language_tag|value_for_language,...". + * + * This resolver will take the language tag specified in the claim object and attempt to match it to a value + * from the users' profile attribute. If no match is found an exception is thrown. + */ +languageTagClaimResolver = { attribute, claim, identity -> + if (identity != null) { + userProfileValue = fromSet(claim.getName(), identity.getAttribute(attribute)) + if (userProfileValue != null) { + localeValues = parseLocaleAwareString(userProfileValue) + if (claim.getLocale() != null) { + if (localeValues.containsKey(claim.getLocale())) { + return [(claim.getName()): localeValues.get(claim.getLocale())] + } else { + entry = localeValues.entrySet().iterator().next() + return [(claim.getName() + "#" + entry.getKey()): entry.getValue()] + } + } else { + entry = localeValues.entrySet().iterator().next() + return [(claim.getName()): entry.getValue()] + } + } + } + return [:] +} + +/* + * Given a string "en|English,jp|Japenese,fr_CA|French Canadian" will return map of locale -> value. + */ +parseLocaleAwareString = { s -> + return result = s.split(",").collectEntries { entry -> + split = entry.split("\\\\|") + [(split[0]): value = split[1]] + } +} +// ---^^^^^^^^^^--- EXAMPLE CLAIM ATTRIBUTE RESOLVER FUNCTIONS ---^^^^^^^^^^--- + +// -------------- UPDATE THIS TO CHANGE CLAIM TO ATTRIBUTE MAPPING FUNCTIONS --------------- +/* + * List of claim resolver mappings. + */ +// [ {claim}: {attribute retriever}, ... ] +claimAttributes = [ + "email": userProfileClaimResolver.curry("mail"), + "address": { claim, identity -> [ "address" : userAddressClaimResolver(claim, identity) ] }, + "phone_number": userProfileClaimResolver.curry("telephonenumber"), + "given_name": userProfileClaimResolver.curry("givenname"), + "zoneinfo": userProfileClaimResolver.curry("preferredtimezone"), + "family_name": userProfileClaimResolver.curry("sn"), + "locale": userProfileClaimResolver.curry("preferredlocale"), + "name": userProfileClaimResolver.curry("cn") +] + + +// -------------- UPDATE THIS TO CHANGE SCOPE TO CLAIM MAPPINGS -------------- +/* + * Map of scopes to claim objects. + */ +// {scope}: [ {claim}, ... ] +scopeClaimsMap = [ + "email": [ "email" ], + "address": [ "address" ], + "phone": [ "phone_number" ], + "profile": [ "given_name", "zoneinfo", "family_name", "locale", "name" ] +] + + +// ---------------- UPDATE BELOW FOR ADVANCED USAGES ------------------- +if (logger.messageEnabled()) { + scopes.findAll { s -> !("openid".equals(s) || scopeClaimsMap.containsKey(s)) }.each { s -> + logger.message("OpenAMScopeValidator.getUserInfo()::Message: scope not bound to claims: $s") + } +} + +/* + * Computes the claims return key and value. The key may be a different value if the claim value is not in + * the requested language. + */ +def computeClaim = { claim -> + try { + claimResolver = claimAttributes.get(claim.getName(), { claimObj, identity -> defaultClaimResolver(claim)}) + claimResolver(claim, identity) + } catch (IdRepoException e) { + if (logger.warningEnabled()) { + logger.warning("OpenAMScopeValidator.getUserInfo(): Unable to retrieve attribute=$attribute", e); + } + } catch (SSOException e) { + if (logger.warningEnabled()) { + logger.warning("OpenAMScopeValidator.getUserInfo(): Unable to retrieve attribute=$attribute", e); + } + } +} + +/* + * Converts requested scopes into claim objects based on the scope mappings in scopeClaimsMap. + */ +def convertScopeToClaims = { + scopes.findAll { scope -> "openid" != scope && scopeClaimsMap.containsKey(scope) }.collectMany { scope -> + scopeClaimsMap.get(scope).collect { claim -> + new Claim(claim) + } + } +} + +// Creates a full list of claims to resolve from requested scopes, claims provided by AS and requested claims +def claimsToResolve = convertScopeToClaims() + claimObjects + requestedTypedClaims + +// Computes the claim return key and values for all requested claims +computedClaims = claimsToResolve.collectEntries() { claim -> + result = computeClaim(claim) +} + +// Computes composite scopes +def compositeScopes = scopeClaimsMap.findAll { scope -> + scopes.contains(scope.key) +} + +return new UserInfoClaims((Map)computedClaims, (Map)compositeScopes) +", + }, + "1d475815-72cb-42eb-aafd-4026989d28a7": { + "_id": "1d475815-72cb-42eb-aafd-4026989d28a7", + "context": "SOCIAL_IDP_PROFILE_TRANSFORMATION", + "createdBy": "null", + "creationDate": 0, + "default": true, + "description": "Default global script for Social Identity Provider Profile Transformation", + "evaluatorVersion": "1.0", + "language": "GROOVY", + "name": "Social Identity Provider Profile Transformation Script", + "script": "/* + * Copyright 2020 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ + +/* Default Social Identity Provider Profile Transformation script to use as a template for new scripts */ +", + }, + "248b8a56-df81-4b1b-b4ba-45d994f6504c": { + "_id": "248b8a56-df81-4b1b-b4ba-45d994f6504c", + "context": "SAML2_IDP_ADAPTER", + "createdBy": "null", + "creationDate": 0, + "default": true, + "description": "Default global script for SAML2 IDP Adapter", + "evaluatorVersion": "1.0", + "language": "JAVASCRIPT", + "name": "SAML2 IDP Adapter Script", + "script": "/* + * Copyright 2021-2023 ForgeRock AS. All Rights Reserved + * + * Use of this code requires a commercial software license with ForgeRock AS. + * or with one of its affiliates. All use shall be exclusively subject + * to such license between the licensee and ForgeRock AS. + */ + +/* + * The script has these top level functions that could be executed during a SAML2 flow. + * - preSingleSignOn + * - preAuthentication + * - preSendResponse + * - preSignResponse + * - preSendFailureResponse + * + * Please see the javadoc for the interface definition and more information about these methods. + * https://backstage.forgerock.com/docs/am/7.3/_attachments/apidocs/com/sun/identity/saml2/plugins/SAML2IdentityProviderAdapter.html + * Note that the initialize method is not supported in the scripts. + * + * Defined variables. Check the documentation on the respective functions for the variables available to it. + * + * hostedEntityId - String + * Entity ID for the hosted IDP + * realm - String + * Realm of the hosted IDP + * idpAdapterScriptHelper - IdpAdapterScriptHelper (1) + * An instance of IdpAdapterScriptHelper containing helper methods. See Javadoc for more details. + * request - HttpServletRequest (2) + * Servlet request object + * response - HttpServletResponse (3) + * Servlet response object + * authnRequest - AuthnRequest (4) + * The original authentication request sent from SP + * reqId - String + * The id to use for continuation of processing if the adapter redirects + * res - Response (5) + * The SAML Response + * session - SSOToken (6) + * The single sign-on session. The reference type of this is Object and would need to be casted to SSOToken. + * relayState - String + * The relayState that will be used in the redirect + * faultCode - String + * the fault code that will be returned in the SAML response + * faultDetail - String + * the fault detail that will be returned in the SAML response + * logger - Logger instance + * https://backstage.forgerock.com/docs/am/7.3/scripting-guide/scripting-api-global-logger.html. + * Corresponding log files will be prefixed with: scripts.