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/config/config-export.ts b/src/cli/config/config-export.ts index f3ab91426..5acecae67 100644 --- a/src/cli/config/config-export.ts +++ b/src/cli/config/config-export.ts @@ -99,6 +99,12 @@ export default function setup() { 'Export managed.idm.json objects separately in their own directory. Ignored with -a.' ) ) + .addOption( + new Option( + '-c, --only-custom', + 'Only export custom request types (IGA cloud deployments only).' + ) + ) .addOption( new Option( '--include-active-values', @@ -170,6 +176,7 @@ export default function setup() { includeReadOnly: options.readOnly, onlyRealm: options.realmOnly, onlyGlobal: options.globalOnly, + onlyCustom: options.onlyCustom } ); if (!outcome) process.exitCode = 1; @@ -202,6 +209,7 @@ export default function setup() { includeReadOnly: options.readOnly, onlyRealm: options.realmOnly, onlyGlobal: options.globalOnly, + onlyCustom: options.onlyCustom } ); if (!outcome) process.exitCode = 1; diff --git a/src/cli/config/config-import.ts b/src/cli/config/config-import.ts index a999b50c3..20e887ad3 100644 --- a/src/cli/config/config-import.ts +++ b/src/cli/config/config-import.ts @@ -61,6 +61,12 @@ export default function setup() { 'Import all scripts including the default scripts.' ) ) + .addOption( + new Option( + '-c, --only-custom', + 'Only import custom request types (IGA cloud deployments only).' + ) + ) .addOption( new Option( '--include-active-values', @@ -129,6 +135,7 @@ export default function setup() { includeDefault: options.default, includeActiveValues: options.includeActiveValues, source: options.source, + onlyCustom: options.onlyCustom }); if (!outcome) process.exitCode = 1; } @@ -152,6 +159,7 @@ export default function setup() { includeDefault: options.default, includeActiveValues: options.includeActiveValues, source: options.source, + onlyCustom: options.onlyCustom }); if (!outcome) process.exitCode = 1; } @@ -169,6 +177,7 @@ export default function setup() { includeDefault: options.default, includeActiveValues: options.includeActiveValues, source: options.source, + onlyCustom: options.onlyCustom } ); if (!outcome) process.exitCode = 1; diff --git a/src/cli/iga/iga.ts b/src/cli/iga/iga.ts new file mode 100644 index 000000000..3da94c735 --- /dev/null +++ b/src/cli/iga/iga.ts @@ -0,0 +1,13 @@ +import { FrodoStubCommand } from '../FrodoCommand'; +import WorkflowCmd from './workflow/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/cli/iga/workflow/iga-workflow-delete.ts b/src/cli/iga/workflow/iga-workflow-delete.ts new file mode 100644 index 000000000..f3567c8db --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow-delete.ts @@ -0,0 +1,104 @@ +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. 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(s).') + ) + .addOption( + new Option( + '-p, --published-only', + 'Delete only the published workflow(s).' + ) + ) + .addOption( + 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 + 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( + options.draftOnly, + options.publishedOnly + ); + 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/workflow/iga-workflow-export.ts b/src/cli/iga/workflow/iga-workflow-export.ts new file mode 100644 index 000000000..46c99cb71 --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow-export.ts @@ -0,0 +1,185 @@ +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', + 'Do not include metadata in the export file.' + ) + ) + .addOption( + new Option( + '-M, --modified-properties', + 'Include modified properties in export (e.g. lastModifiedDate, lastModifiedBy, createdBy, creationDate, etc.)' + ).default(false, 'false') + ) + .addOption( + new Option( + '-x, --no-extract', + 'Do not extract the scripts from the exported file and save them to separate files. Ignored with -a.' + ).default(true, 'true') + ) + .addOption( + new Option( + '--use-string-arrays', + 'Where applicable, use string arrays to store scripts.' + ).default(false, 'off') + ) + .addOption( + new Option( + '-R, --read-only', + '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 workflow tasks.' + ) + ) + .addOption( + new Option( + '--no-deps', + 'Do not include any dependencies (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 + ); + 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.modifiedProperties, + 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.modifiedProperties, + { + 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.modifiedProperties, + 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/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/workflow/iga-workflow-list.ts b/src/cli/iga/workflow/iga-workflow-list.ts new file mode 100644 index 000000000..215656393 --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow-list.ts @@ -0,0 +1,62 @@ +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/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 new file mode 100644 index 000000000..3be0dec7d --- /dev/null +++ b/src/cli/iga/workflow/iga-workflow.ts @@ -0,0 +1,37 @@ +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'); + + 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.') + ); + + program.addCommand( + DescribeCmd().name('describe').description('Describe workflow.') + ); + + program.addCommand( + PublishCmd().name('publish').description('Publish workflow.') + ); + + return program; +} diff --git a/src/ops/ConfigOps.ts b/src/ops/ConfigOps.ts index 9aae603dd..9187fa240 100644 --- a/src/ops/ConfigOps.ts +++ b/src/ops/ConfigOps.ts @@ -55,6 +55,7 @@ export async function exportEverythingToFile( includeActiveValues: false, target: '', includeReadOnly: false, + onlyCustom: false, onlyRealm: false, onlyGlobal: false, } @@ -103,6 +104,7 @@ export async function exportEverythingToFiles( includeActiveValues: false, target: '', includeReadOnly: false, + onlyCustom: false, onlyRealm: false, onlyGlobal: false, } @@ -381,6 +383,7 @@ export async function importEverythingFromFile( cleanServices: false, includeDefault: false, includeActiveValues: false, + onlyCustom: false, source: '', } ): Promise { @@ -407,6 +410,7 @@ export async function importEverythingFromFiles( cleanServices: false, includeDefault: false, includeActiveValues: false, + onlyCustom: false, source: '', } ): Promise { @@ -430,6 +434,7 @@ export async function importEntityfromFile( cleanServices: false, includeDefault: false, includeActiveValues: false, + onlyCustom: false, source: '', } ): Promise { 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 new file mode 100644 index 000000000..37cbc5ad6 --- /dev/null +++ b/src/ops/cloud/iga/IgaWorkflowOps.ts @@ -0,0 +1,760 @@ +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, + getTableRowsFromArray, + printError, + printMessage, + stopProgressIndicator, + updateProgressIndicator, +} from '../../../utils/Console'; +import * as EmailTemplate from '../../EmailTemplateOps'; +import { isScriptExtracted } from '../../ScriptOps'; +import { errorHandler } from '../../utils/OpsUtils'; + +const { + getTypedFilename, + saveToFile, + saveJsonToFile, + getFilePath, + getWorkingDirectory, +} = frodo.utils; +const { + publishWorkflow: _publishWorkflow, + importWorkflows, + readWorkflowGroups, + exportWorkflow, + exportWorkflows, + deleteWorkflow: _deleteWorkflow, + 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 { + 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; +} + +/** + * 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)) { + 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]); + 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() + '\n', '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 + * @param {string} file file name + * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true + * @param {boolean} keepModifiedProperties true to keep modified properties, otherwise delete them. Default: false + * @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, + keepModifiedProperties: boolean = false, + 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); + if (!file) { + file = getTypedFilename(workflowId, 'workflow'); + } + const filePath = getFilePath(file, true); + if (extract) extractWorkflowScriptsToFiles(exportData); + updateProgressIndicator( + indicatorId, + `Saving ${workflowId} to ${filePath}...` + ); + saveJsonToFile(exportData, filePath, includeMeta, false, keepModifiedProperties); + 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 workflows to file + * @param {string} file file name + * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true + * @param {boolean} keepModifiedProperties true to keep modified properties, otherwise delete them. Default: false + * @param {WorkflowExportOptions} options export options + * @returns {Promise} true if successful, false otherwise + */ +export async function exportWorkflowsToFile( + file: string, + includeMeta: boolean = true, + keepModifiedProperties: boolean = false, + options: WorkflowExportOptions = { + deps: true, + useStringArrays: true, + coords: true, + includeReadOnly: false, + } +): Promise { + try { + const exportData = await exportWorkflows(options, errorHandler); + if (!file) { + file = getTypedFilename(`allWorkflows`, 'workflow'); + } + saveJsonToFile(exportData, getFilePath(file, true), includeMeta, false, keepModifiedProperties); + return true; + } catch (error) { + printError(error, `Error exporting workflows to file`); + } + return false; +} + +/** + * Export all workflows to separate files + * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true + * @param {boolean} keepModifiedProperties true to keep modified properties, otherwise delete them. Default: false + * @param {boolean} extract extracts the scripts from the exports into separate files if true. Default: false + * @param {WorkflowExportOptions} options export options + * @returns {Promise} true if successful, false otherwise + */ +export async function exportWorkflowsToFiles( + includeMeta: boolean = true, + keepModifiedProperties: boolean = false, + extract: boolean = false, + options: WorkflowExportOptions = { + deps: true, + useStringArrays: true, + coords: true, + includeReadOnly: false, + } +): Promise { + try { + const exportData = await exportWorkflows(options, errorHandler); + if (extract) extractWorkflowScriptsToFiles(exportData); + for (const [workflowId, workflowGroup] of Object.entries( + exportData.workflow + )) { + saveToFile( + 'workflow', + workflowGroup, + 'id', + getFilePath(getTypedFilename(workflowId, 'workflow'), true), + includeMeta, + keepModifiedProperties + ); + } + return true; + } catch (error) { + 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); + 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); + 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 published workflow, false otherwise + * @returns {Promise} true if successful, false otherwise + */ +export async function deleteWorkflow( + workflowId: string, + deleteDraft?: boolean, + deletePublished?: boolean +): Promise { + const spinnerId = createProgressIndicator( + 'indeterminate', + undefined, + `Deleting workflow ${workflowId}...` + ); + try { + const result = await _deleteWorkflow( + workflowId, + deleteDraft || !deletePublished, + deletePublished || !deleteDraft, + errorHandler + ); + if (!result.draft && !result.published) { + throw new FrodoError(`Failed to delete workflow ${workflowId}`); + } + stopProgressIndicator( + spinnerId, + `Deleted workflow ${workflowId}.`, + 'success' + ); + return true; + } catch (error) { + stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); + printError(error); + } + return false; +} + +/** + * 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( + deleteDraft?: boolean, + deletePublished?: boolean +): Promise { + const spinnerId = createProgressIndicator( + 'indeterminate', + undefined, + `Deleting workflows...` + ); + try { + await _deleteWorkflows( + deleteDraft || !deletePublished, + deletePublished || !deleteDraft, + errorHandler + ); + stopProgressIndicator(spinnerId, `Deleted workflows.`, 'success'); + return true; + } catch (error) { + stopProgressIndicator(spinnerId, `Error: ${error.message}`, 'fail'); + printError(error); + } + 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. + * + * @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; + 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': { + 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 + * @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)) { + const workflowDirectory = `${directory ? directory + '/' : ''}${workflow.id}/${workflow.status}`; + 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 scriptText = Array.isArray(actors.value) + ? actors.value.join('\n') + : actors.value; + const scriptFileName = getTypedFilename( + step.name, + 'workflow', + 'js' + ); + const extractedFile = extractDataToFile( + scriptText, + `${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': { + 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, + `${workflowDirectory}/${scriptFileName}` + ); + continue; + } + default: + continue; + } + } + } + } + return true; + } catch (error) { + printError(error); + } + return false; +} diff --git a/src/utils/Config.ts b/src/utils/Config.ts index 030d9c893..9eafbbfff 100644 --- a/src/utils/Config.ts +++ b/src/utils/Config.ts @@ -94,6 +94,7 @@ export async function getFullExportConfig( includeActiveValues: false, target: '', includeReadOnly: true, + onlyCustom: false, onlyRealm: false, onlyGlobal: false, }, 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]]); + } +} diff --git a/test/client_cli/en/__snapshots__/config-export.test.js.snap b/test/client_cli/en/__snapshots__/config-export.test.js.snap index 74a40c546..d64335bc2 100644 --- a/test/client_cli/en/__snapshots__/config-export.test.js.snap +++ b/test/client_cli/en/__snapshots__/config-export.test.js.snap @@ -29,6 +29,8 @@ Options: -a, --all Export everything to a single file. -A, --all-separate Export everything to separate files in the -D directory. Ignored with -a. + -c, --only-custom Only export custom request types (IGA cloud + deployments only). -d, --default Export all scripts including the default scripts. -f, --file Name of the export file. -g, --global-only Export only the global config. If -r, --realm-only diff --git a/test/client_cli/en/__snapshots__/config-import.test.js.snap b/test/client_cli/en/__snapshots__/config-import.test.js.snap index 6bdfc8905..edf1cb237 100644 --- a/test/client_cli/en/__snapshots__/config-import.test.js.snap +++ b/test/client_cli/en/__snapshots__/config-import.test.js.snap @@ -22,6 +22,8 @@ Options: Ignored with -i. -A, --all-separate Import all configuration from separate (.json) files in the (working) directory -D. Ignored with -i or -a. + -c, --only-custom Only import custom request types (IGA cloud + deployments only). -C, --clean Remove existing service(s) before importing. -d, --default Import all scripts including the default scripts. -f, --file Name of the file to import. Ignored with -A. If 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..f86af18d0 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-delete.test.js.snap @@ -0,0 +1,36 @@ +// 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. + -d, --draft-only Delete only the draft workflow(s). + -i, --workflow-id Workflow id. If specified, -a is ignored. By + default, deletes both draft and published + unless -d or -p are used exclusively. + -p, --published-only Delete only the published workflow(s). + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, + and usage examples. +" +`; 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..ec2cfcbe8 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-describe.test.js.snap @@ -0,0 +1,34 @@ +// 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: + -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. + -i, --workflow-id Workflow id. If not specified, will describe + first workflow in the provided export file. + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, + and usage examples. +" +`; 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..b16106a88 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-export.test.js.snap @@ -0,0 +1,54 @@ +// 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. + +Deployment: Cloud-only + +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. + -f, --file [file] Name of the export file. Ignored with -A. + Defaults to .workflow.json. + -i, --workflow-id Workflow id. If specified, -a and -A are + ignored. + -M, --modified-properties Include modified properties in export (e.g. + lastModifiedDate, lastModifiedBy, createdBy, + creationDate, etc.) (default: false) + -N, --no-metadata Do not include metadata in the export file. + --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.). + -R, --read-only Export non-mutable workflows in addition to + the mutable workflows. + --use-string-arrays Where applicable, use string arrays to store + scripts. (default: off) + -x, --no-extract Do not extract the scripts from the exported + file and save them to separate files. Ignored + with -a. + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, + and usage examples. +" +`; 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..6482faa96 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-import.test.js.snap @@ -0,0 +1,40 @@ +// 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. + +Deployment: Cloud-only + +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. + -f, --file Name of the import file. + -i, --workflow-id Workflow id. If specified, -a and -A are + ignored. + --no-deps Do not import any dependencies (email + templates, request forms, events, etc.). + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, + and usage examples. +" +`; 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..57c14ce8f --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-list.test.js.snap @@ -0,0 +1,28 @@ +// 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. + +Deployment: Cloud-only + +Options: + -l, --long Long with all fields. (default: false) + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, and usage + examples. +" +`; 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..b75aaa986 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow-publish.test.js.snap @@ -0,0 +1,29 @@ +// 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: + -i, --workflow-id Workflow id. + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, + and usage examples. +" +`; 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..7cd147cbd --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga-workflow.test.js.snap @@ -0,0 +1,25 @@ +// 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 + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, and usage + examples. + +Commands: + delete Delete workflows. + describe Describe workflow. + help display help for command + publish Publish workflow. + + (Cloud-only): + export Export workflows. + import Import workflows. + list List workflows. +" +`; diff --git a/test/client_cli/en/__snapshots__/iga.test.js.snap b/test/client_cli/en/__snapshots__/iga.test.js.snap new file mode 100644 index 000000000..fd0b93817 --- /dev/null +++ b/test/client_cli/en/__snapshots__/iga.test.js.snap @@ -0,0 +1,18 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'iga' should be expected english 1`] = ` +"Usage: frodo iga [options] [command] + +Manage IGA configuration. + +Options: + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, and usage + examples. + +Commands: + help display help for command + workflow Manage workflows. +" +`; diff --git a/test/client_cli/en/__snapshots__/root.test.js.snap b/test/client_cli/en/__snapshots__/root.test.js.snap index 60c7c6a1b..600c9d156 100644 --- a/test/client_cli/en/__snapshots__/root.test.js.snap +++ b/test/client_cli/en/__snapshots__/root.test.js.snap @@ -25,6 +25,7 @@ Commands: help display help for command idm Manage IDM configuration. idp Manage (social) identity providers. + iga Manage IGA configuration. info Print versions and tokens. journey Manage journeys/trees. mapping Manage IDM mappings. 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__/config-export.e2e.test.js.snap b/test/e2e/__snapshots__/config-export.e2e.test.js.snap index 337146e52..53fe19650 100644 --- a/test/e2e/__snapshots__/config-export.e2e.test.js.snap +++ b/test/e2e/__snapshots__/config-export.e2e.test.js.snap @@ -8,6 +8,10 @@ exports[`frodo config export "frodo config export --all --modified-properties -- exports[`frodo config export "frodo config export --all --modified-properties --read-only --file testExportAll2.json --include-active-values --use-string-arrays --no-decode --no-coords --type classic": should export everything to a single file named testExportAll2.json with no decoding variables, no journey coordinates, and using string arrays 2`] = `""`; +exports[`frodo config export "frodo config export --all-separate --no-metadata --default --directory exportAllTestDir8 --include-active-values --use-string-arrays --no-decode --no-coords --type classic": should export everything, including default scripts, into separate files in the directory exportAllTestDir8 with scripts, no decoding variables, no journey coordinates, separate mappings, and using string arrays 1`] = `0`; + +exports[`frodo config export "frodo config export --all-separate --no-metadata --default --directory exportAllTestDir8 --include-active-values --use-string-arrays --no-decode --no-coords --type classic": should export everything, including default scripts, into separate files in the directory exportAllTestDir8 with scripts, no decoding variables, no journey coordinates, separate mappings, and using string arrays 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. 1`] = `0`; 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`] = `""`; @@ -24,6 +28,10 @@ exports[`frodo config export "frodo config export -RAD exportAllTestDir5 --inclu exports[`frodo config export "frodo config export -RAD exportAllTestDir5 --include-active-values": should export everything including secret values into separate files in the directory exportAllTestDir5 2`] = `""`; +exports[`frodo config export "frodo config export -RMAsxD exportAllTestDir7 -m classic": should export everything into separate files in the directory exportAllTestDir7 with scripts and mappings separate 1`] = `0`; + +exports[`frodo config export "frodo config export -RMAsxD exportAllTestDir7 -m classic": should export everything into separate files in the directory exportAllTestDir7 with scripts and mappings separate 2`] = `""`; + exports[`frodo config export "frodo config export -adND exportAllTestDir4": should export everything, including default scripts, to a single file 1`] = `0`; exports[`frodo config export "frodo config export -adND exportAllTestDir4": should export everything, including default scripts, to a single file 2`] = `""`; diff --git a/test/e2e/__snapshots__/config-import.e2e.test.js.snap b/test/e2e/__snapshots__/config-import.e2e.test.js.snap index 0725ed988..72b595c1a 100644 --- a/test/e2e/__snapshots__/config-import.e2e.test.js.snap +++ b/test/e2e/__snapshots__/config-import.e2e.test.js.snap @@ -842,6 +842,19 @@ Error Importing Services exports[`frodo config import "frodo config import -f test/e2e/exports/all-separate/classic/realm/root/webhookService/Cool-Webhook.webhookService.json -m classic" Import the webhook service with no errors 1`] = `""`; +exports[`frodo config import "frodo config import -f test/e2e/exports/all-separate/classic/realm/root/webhookService/Cool-Webhook.webhookService.json -m classic" Import the webhook service with no errors 2`] = ` +"✔ Finished Importing Everything to global! +✔ Finished Importing Everything to root realm! +✔ Finished Importing all other AM config entities! +" +`; + exports[`frodo config import "frodo config import -gf test/e2e/exports/all-separate/classic/global/server/01.server.json -m classic" Import server 01 along with extracted properties and no errors 1`] = `""`; +exports[`frodo config import "frodo config import -gf test/e2e/exports/all-separate/classic/global/server/01.server.json -m classic" Import server 01 along with extracted properties and no errors 2`] = ` +"✔ Finished Importing Everything to global! +✔ Finished Importing all other AM config entities! +" +`; + exports[`frodo config import "frodo config import -gf test/e2e/exports/all-separate/cloud/global/sync/sync.idm.json" Import sync.idm.json along with extracted mappings and no errors 1`] = `""`; diff --git a/test/e2e/__snapshots__/iga-workflow-delete.e2e.test.js.snap b/test/e2e/__snapshots__/iga-workflow-delete.e2e.test.js.snap new file mode 100644 index 000000000..6b51a0440 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-delete.e2e.test.js.snap @@ -0,0 +1,55 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo iga workflow delete "frodo iga workflow delete --draft-only -a": should delete all draft workflows 1`] = `""`; + +exports[`frodo iga workflow delete "frodo iga workflow delete --draft-only -a": should delete all draft workflows 2`] = ` +"✔ Deleted workflows. +" +`; + +exports[`frodo iga workflow delete "frodo iga workflow delete --published-only -a": should delete all published workflows 1`] = `""`; + +exports[`frodo iga workflow delete "frodo iga workflow delete --published-only -a": should delete all published workflows 2`] = ` +"Error deleting workflow custom1BasicEntitlementGrant + Error deleting published workflow custom1BasicEntitlementGrant + Network error: + URL: https://openam-frodo-dev.forgeblocks.com/auto/orchestration/definition/custom1BasicEntitlementGrant/published + Status: 500 + Code: ERR_BAD_RESPONSE +✔ Deleted workflows. +" +`; + +exports[`frodo iga workflow delete "frodo iga workflow delete --workflow-id testWorkflow4": Should delete both draft and published testWorkflow4 1`] = `""`; + +exports[`frodo iga workflow delete "frodo iga workflow delete --workflow-id testWorkflow4": Should delete both draft and published testWorkflow4 2`] = ` +"✔ Deleted workflow testWorkflow4. +" +`; + +exports[`frodo iga workflow delete "frodo iga workflow delete -di testWorkflow1": should delete draft testWorkflow1" 1`] = `""`; + +exports[`frodo iga workflow delete "frodo iga workflow delete -di testWorkflow1": should delete draft testWorkflow1" 2`] = ` +"✔ Deleted workflow testWorkflow1. +" +`; + +exports[`frodo iga workflow delete "frodo iga workflow delete -dp --all": should delete all workflows 1`] = `""`; + +exports[`frodo iga workflow delete "frodo iga workflow delete -dp --all": should delete all workflows 2`] = ` +"Error deleting workflow custom1BasicEntitlementGrant + Error deleting published workflow custom1BasicEntitlementGrant + Network error: + URL: https://openam-frodo-dev.forgeblocks.com/auto/orchestration/definition/custom1BasicEntitlementGrant/published + Status: 500 + Code: ERR_BAD_RESPONSE +✔ Deleted workflows. +" +`; + +exports[`frodo iga workflow delete "frodo iga workflow delete -pi testWorkflow1": should delete published testWorkflow1 1`] = `""`; + +exports[`frodo iga workflow delete "frodo iga workflow delete -pi testWorkflow1": should delete published testWorkflow1 2`] = ` +"✔ Deleted workflow testWorkflow1. +" +`; 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..58d323998 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-describe.e2e.test.js.snap @@ -0,0 +1,235 @@ +// 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`] = ` +"Published Workflow +Id │BasicApplicationGrant +Name │BasicApplicationGrant +Display Name│Basic Application Grant +Description │Basic request flow for granting a user an account in an application +Type │provisioning +Status │published +Mutable │false +ChildType │false +Steps (13) │approvalTask-74cf85c35437 + │scriptTask-626899b6e99a + │scriptTask-c58309b8c470 + │exclusiveGateway-5167870154a9 + │scriptTask-3a74557440fb + │scriptTask-744ef6a8b9a2 + │scriptTask-4e9121fe850a + │exclusiveGateway-621c9996676a + │scriptTask-0e5b6187ea62 + │waitTask-13cf96ebeb37 + │inclusiveGateway-a71e67faaad1 + │inclusiveGateway-7d248125a9bd + │scriptTask-14acc58c28dd + + +Email Templates (14): +- [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 +- [violationAssigned] - ATTENTION: Violation Assigned +- [violationEscalated] - ATTENTION: Violation Escalation +- [violationExpired] - ATTENTION: Expiration of Violation +- [violationReassigned] - ATTENTION: Violation Reassigned +- [violationReminder] - ATTENTION: Reminder to make decision on violation + +Events (3): +- [1e679adb-451c-4aa8-8c8c-cda5ec93bdd5] test_workflow_event_1 +- [c87b0605-03f6-4372-9ba6-e0f43e0b3bcf] phh-teacher-birthright-role-approval +- [f168e34f-3ae9-4db2-b210-5f9176b7a008] test_workflow_event_3 + +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 (16): +- [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 +- [applicationGrant] Grant Application +- [applicationRemove] Remove Application +- [createEntitlement] Create Entitlement +- [createUser] Create User +- [deleteUser] Delete User +- [e9dcd66e-1388-4872-9790-66df2f44deef] test_workflow_request_type_1 +- [entitlementGrant] Grant Entitlement +- [entitlementRemove] Remove Entitlement +- [fdf9e9a1-b5cf-496a-821b-e7b3d5841252] phh-delegate-user-disable-type +- [modifyEntitlement] Modify Entitlement +- [modifyUser] Modify User +- [roleGrant] Grant Role +- [roleRemove] Remove Role +" +`; + +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): +- [6731fca9-592f-45cb-bd48-f0046b1efb92] test_workflow_event_1 + +Request Forms (2): +- [fa1a5e72-d803-4879-bc2a-07a5da3d8ee9] test_workflow_request_form_1 +- [9e3fc668-4e96-4b03-9605-38b830bea26c] test_workflow_request_form_2 + +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 (14): +- [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 +- [violationAssigned] - ATTENTION: Violation Assigned +- [violationEscalated] - ATTENTION: Violation Escalation +- [violationExpired] - ATTENTION: Expiration of Violation +- [violationReassigned] - ATTENTION: Violation Reassigned +- [violationReminder] - ATTENTION: Reminder to make decision on violation + +Events (3): +- [1e679adb-451c-4aa8-8c8c-cda5ec93bdd5] test_workflow_event_1 +- [c87b0605-03f6-4372-9ba6-e0f43e0b3bcf] phh-teacher-birthright-role-approval +- [f168e34f-3ae9-4db2-b210-5f9176b7a008] test_workflow_event_3 + +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 (16): +- [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 +- [applicationGrant] Grant Application +- [applicationRemove] Remove Application +- [createEntitlement] Create Entitlement +- [createUser] Create User +- [deleteUser] Delete User +- [e9dcd66e-1388-4872-9790-66df2f44deef] test_workflow_request_type_1 +- [entitlementGrant] Grant Entitlement +- [entitlementRemove] Remove Entitlement +- [fdf9e9a1-b5cf-496a-821b-e7b3d5841252] phh-delegate-user-disable-type +- [modifyEntitlement] Modify Entitlement +- [modifyUser] Modify User +- [roleGrant] Grant Role +- [roleRemove] Remove Role +" +`; 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..88dd11ed3 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-export.e2e.test.js.snap @@ -0,0 +1,110979 @@ +// 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`] = ` +"✔ Exported 43 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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "requestIndex.request.common.endDate", + ], + }, + }, + }, + ], + "type": "provisioning", + }, + }, + "BasicRoleCreate": { + "draft": null, + "published": { + "childType": false, + "description": "Basic workflow for creating a governance role", + "displayName": "BasicRoleCreate", + "id": "BasicRoleCreate", + "mutable": false, + "name": "BasicRoleCreate", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-3eab1948f1ec", + }, + "id": "startNode", + }, + "uiConfig": { + "exclusiveGateway-05b2e1af4b79": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Create Role", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-05b2e1af4b79", + }, + ], + "script": [ + "logger.info('Running role create request');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var role = null;", + "var failureReason = null;", + "var roleId = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj) {", + " role = requestObj.request.role;", + " } else {", + " failureReason = 'Governance role creation failed: Error reading request with id ' + requestId + ' requestObj: ' + requestObj;", + " }", + "}", + "catch (e) {", + " failureReason = 'Governance role creation failed: Error reading request with id ' + requestId + ' Error: ' + e.message;", + "}", + "", + "if (role) {", + " if (!role.object) {", + " failureReason = 'Governance role creation failed: Request with id: ' + requestId + ' has no role info.'; ", + " }", + "} else {", + " failureReason = 'Governance role creation failed: Request with id: ' + requestId + ' has no role object.';", + "}", + "", + "if (!failureReason) {", + " try {", + " var payload = { role: {} };", + " payload.role = role.object;", + " if(role.glossary){", + " payload.glossary = role.glossary;", + " }", + " payload.updateIdm = true;", + " var result = openidm.action('iga/governance/role/', 'POST', payload);", + " roleId = result.role.id", + " }", + " catch (e) {", + " failureReason = 'Governance role creation failed: Error message: ' + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info('Governance role creation failed: ' + failureReason);", + "}", + "execution.setVariable('failureReason', failureReason);", + "execution.setVariable('roleId', roleId);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Role Create 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': 'cancelled', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Update Request", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info('Creating Governance Role');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var roleId = content.get('roleId');", + "var decision = {", + " 'status': 'complete',", + " 'decision': 'approved',", + " 'outcome': 'fulfilled',", + " 'comment': 'Role ID: ' + roleId", + "};", + "", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info('Request ' + requestId + ' completed.');", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-05b2e1af4b79", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "createSuccess", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "createFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "BasicRoleDelete": { + "draft": null, + "published": { + "childType": false, + "description": "Basic workflow for deleting a governance role", + "displayName": "BasicRoleDelete", + "id": "BasicRoleDelete", + "mutable": false, + "name": "BasicRoleDelete", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-3eab1948f1ec", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var content = execution.getVariables();", + " return [{", + " "id": content.get('roleOwner'),", + " "permissions": {", + " "approve": true,", + " "reject": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "script", + "expirationDate": 1, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-b16f45452faa": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-aec6c36b3a45": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var content = execution.getVariables();", + " return [{", + " "id": content.get('roleOwner'),", + " "permissions": {", + " "approve": true,", + " "reject": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/b89b1128-52a3-4cac-a04d-56cad0f14203", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/b89b1128-52a3-4cac-a04d-56cad0f14203", + }, + ], + "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*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "EXPIRATION", + "step": null, + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Role Validation and Status Check", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info('Running role delete request validation');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var skipApproval = false;", + "var role = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj) {", + " role = requestObj.request.role;", + " } else {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId + ' requestObj: ' + requestObj;", + " }", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId + ' Error: ' + e.message;", + "}", + "", + "// Validation - Check original role and role owner exists", + "if (!failureReason) {", + " try {", + " var result = openidm.action('iga/governance/role/' + role.roleId + '/' + role.status, 'GET', {}, {});", + " if (!result) {", + " failureReason = 'Validation failed: Cannot find role with id ' + role.roleId + ', status: ' + role.status;", + " } else {", + " if (role.status != 'active') {", + " skipApproval = true;", + " } else {", + " try {", + " execution.setVariable('roleOwner', role.glossary.idx['/role'].roleOwner);", + " } catch(e) { ", + " failureReason = 'Validation failed: No role owner set for role with id ' + roleId + ', status: draft';", + " }", + " }", + " }", + " }", + " catch (e) {", + " failureReason = 'Validation failed: Error reading role with id ' + role.roleId + ', status: ' + role.status + '. Error message: ' + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info('Validation failed: ' + failureReason);", + "}", + "execution.setVariable('failureReason', failureReason);", + "execution.setVariable('skipApproval', skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "exclusiveGateway-b16f45452faa", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Role Delete 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': 'cancelled', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Delete Role", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info('Deleting Governance Role');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "var decision = {};", + "var request = null;", + "", + "if(!failureReason) {", + " try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info('requestObj: ' + requestObj);", + " request = requestObj.request;", + " }", + " catch (e) {", + " failureReason = 'Governance role deletion failed: Error reading request with id ' + requestId;", + " }", + " ", + " if(!failureReason) {", + " try {", + " openidm.action('iga/governance/role/' + request.role.roleId + '/' + request.role.status, 'DELETE', {}, {});", + " }", + " catch (e) {", + " failureReason = 'Governance role deletion failed: Error deleting role ' + request.role.roleId + ', status: ' + request.role.status + '. Error message: ' + e.message;", + " }", + "", + " decision = {", + " 'status': 'complete',", + " 'decision': 'approved',", + " 'outcome': 'fulfilled'", + " };", + " }", + "}", + "", + "if(failureReason) {", + " decision = {", + " 'status': 'complete',", + " 'decision': 'approved',", + " 'outcome': 'cancelled',", + " 'failure': true,", + " 'comment': failureReason", + " };", + " logger.info('Delete failed: ' + failureReason);", + "}", + "", + "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 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 Gateway", + "name": "exclusiveGateway-b16f45452faa", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "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": { + "events": null, + "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", + }, + }, + "BasicRoleModify": { + "draft": null, + "published": { + "childType": false, + "description": "Basic workflow for modifying a governance role", + "displayName": "BasicRoleModify", + "id": "BasicRoleModify", + "mutable": false, + "name": "BasicRoleModify", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-3eab1948f1ec", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var content = execution.getVariables();", + " return [{", + " "id": content.get('roleOwner'),", + " "permissions": {", + " "approve": true,", + " "reject": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "script", + "expirationDate": 1, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-b16f45452faa": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-aec6c36b3a45": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var content = execution.getVariables();", + " return [{", + " "id": content.get('roleOwner'),", + " "permissions": {", + " "approve": true,", + " "reject": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/b89b1128-52a3-4cac-a04d-56cad0f14203", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/b89b1128-52a3-4cac-a04d-56cad0f14203", + }, + ], + "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*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "EXPIRATION", + "step": null, + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Role Validation and Status Check", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info('Running role modify request validation');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var skipApproval = false;", + "var role = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj) {", + " role = requestObj.request.role;", + " } else {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId + ' requestObj: ' + requestObj;", + " }", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId + ' Error: ' + e.message;", + "}", + "", + "// Validation - Check original role and role owner exists", + "if (!failureReason) {", + " try {", + " var result = openidm.action('iga/governance/role/' + role.roleId + '/' + role.status, 'GET', {}, {});", + " if (!result) {", + " failureReason = 'Validation failed: Cannot find role with id ' + role.roleId + ', status: ' + role.status;", + " } else {", + " if (role.status != 'active') {", + " skipApproval = true;", + " } else {", + " try {", + " execution.setVariable('roleOwner', role.glossary.idx['/role'].roleOwner);", + " } catch(e) { ", + " failureReason = 'Validation failed: No role owner set for role with id ' + roleId + ', status: draft';", + " }", + " }", + " }", + " }", + " catch (e) {", + " failureReason = 'Validation failed: Error reading role with id ' + role.roleId + ', status: ' + role.status + '. Error message: ' + e.message;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info('Validation failed: ' + failureReason);", + "}", + "execution.setVariable('failureReason', failureReason);", + "execution.setVariable('skipApproval', skipApproval);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "exclusiveGateway-b16f45452faa", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Role Modify 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': 'cancelled', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Modify Role", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info('Modifying Governance Role');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = content.get('failureReason');", + "var comment = content.get('comment');", + "var decision = {};", + "var request = null;", + "", + "if(!failureReason) {", + " try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info('requestObj: ' + requestObj);", + " request = requestObj.request;", + " }", + " catch (e) {", + " failureReason = 'Governance role modification failed: Error reading request with id ' + requestId;", + " }", + " ", + " if(!failureReason) {", + " try {", + " var payload = {};", + " payload.role = request.role.object;", + " payload.role.status = request.role.status;", + " if(request.role.glossary){", + " payload.glossary = request.role.glossary;", + " }", + " var result = openidm.action('iga/governance/role/' + request.role.roleId + '/' + request.role.status, 'PUT', payload);", + " }", + " catch (e) {", + " failureReason = 'Governance role modification failed: Error modifying role ' + request.role.roleId + ', status: ' + request.role.status + '. Error message: ' + e.message;", + " }", + "", + " decision = {", + " 'status': 'complete',", + " 'decision': 'approved',", + " 'outcome': 'fulfilled',", + " 'comment': comment", + " };", + " }", + "}", + "", + "if(failureReason) {", + " decision = {", + " 'status': 'complete',", + " 'decision': 'approved',", + " 'outcome': 'cancelled',", + " 'failure': true,", + " 'comment': failureReason", + " };", + " logger.info('Modifying failed: ' + failureReason);", + "}", + "", + "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 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 Gateway", + "name": "exclusiveGateway-b16f45452faa", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "BasicRolePublish": { + "draft": null, + "published": { + "childType": false, + "description": "Basic workflow for publishing a governance role", + "displayName": "BasicRolePublish", + "id": "BasicRolePublish", + "mutable": false, + "name": "BasicRolePublish", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-3eab1948f1ec", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var content = execution.getVariables();", + " return [{", + " "id": content.get('roleOwner'),", + " "permissions": {", + " "approve": true,", + " "reject": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + ], + }, + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "script", + "expirationDate": 1, + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-eb351160a59b": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-7ddf82215dd0": {}, + "scriptTask-a0c9fc54ced2": {}, + "scriptTask-aec6c36b3a45": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var content = execution.getVariables();", + " return [{", + " "id": content.get('roleOwner'),", + " "permissions": {", + " "approve": true,", + " "reject": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + ], + }, + "approvalMode": "any", + "events": { + "assignment": { + "notification": "requestAssigned", + }, + "escalation": { + "actors": [ + { + "id": "managed/user/b89b1128-52a3-4cac-a04d-56cad0f14203", + }, + ], + "date": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(5*1*24*60*60*1000))).toISOString()", + ], + }, + "notification": "requestEscalated", + }, + "expiration": { + "action": "reject", + "actors": [ + { + "id": "managed/user/b89b1128-52a3-4cac-a04d-56cad0f14203", + }, + ], + "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*1*24*60*60*1000))).toISOString()", + ], + }, + "frequency": 3, + "notification": "requestReminder", + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "EXPIRATION", + "step": null, + }, + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-0359a9d77ee2", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-aec6c36b3a45", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Role Validation and Status Check", + "name": "scriptTask-3eab1948f1ec", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-48e748c42994", + }, + ], + "script": [ + "logger.info('Running governance role publish request validation');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var roleId = null;", + "var updateIdm = true;", + "var addAutoRoleMembers = true;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj) {", + " roleId = requestObj.request.role.roleId;", + " addAutoRoleMembers = requestObj.request.role.addAutoRoleMembers ? requestObj.request.role.addAutoRoleMembers: true;", + " updateIdm = requestObj.request.role.updateIdm ? requestObj.request.role.updateIdm : true;", + " } else {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId + ' requestObj: ' + requestObj;", + " }", + "}", + "catch (e) {", + " failureReason = 'Validation failed: Error reading request with id ' + requestId + ' Error: ' + e.message;", + "}", + "", + "// Validation - Check role and role owner exists", + "if (!failureReason) {", + " try {", + " var role = openidm.action('iga/governance/role/' + roleId + '/draft', 'GET', {}, {});", + " if (!role) {", + " failureReason = 'Validation failed: Cannot find role with id ' + roleId + ', status: draft';", + " } else {", + " try {", + " execution.setVariable('roleOwner', role.glossary.idx['/role'].roleOwner);", + " } catch(e) { ", + " failureReason = 'Validation failed: No role owner set for role with id ' + roleId + ', status: draft';", + " }", + " }", + " }", + " catch (e) {", + " failureReason = 'Validation failed: Error reading role with id ' + roleId + ', status: draft' + '. Error message: ' + e.message + 'role: ' + role;", + " }", + "}", + "", + "if (failureReason) {", + " logger.info('Validation failed: ' + failureReason);", + "}", + "execution.setVariable('failureReason', failureReason);", + "execution.setVariable('roleId', roleId);", + "execution.setVariable('updateIdm', updateIdm);", + "execution.setVariable('addAutoRoleMembers', addAutoRoleMembers);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-48e748c42994", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationFlowSuccess", + "step": "scriptTask-7ddf82215dd0", + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFlowFailure", + "step": "scriptTask-0b56191887de", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "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': 'cancelled', 'status': 'complete', 'comment': failureReason, 'failure': true, 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Publish Governance Role", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-eb351160a59b", + }, + ], + "script": [ + "logger.info('Publishing Governance Role');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var roleId = content.get('roleId');", + "var addAutoRoleMembers = content.get('addAutoRoleMembers');", + "var updateIdm = content.get('updateIdm');", + "var failureReason = content.get('failureReason');", + "var decision = {};", + "var request = null;", + "", + "if(!failureReason) {", + " try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " logger.info('requestObj: ' + requestObj);", + " request = requestObj.request;", + " }", + " catch (e) {", + " failureReason = 'Governance role publishing failed: Error reading request with id ' + requestId;", + " }", + " ", + " if(!failureReason) {", + " try {", + " var govPayload = {", + " addAutoRoleMembers,", + " updateIdm", + " };", + " var result = openidm.action('iga/governance/role/' + roleId + '/pending', 'PATCH', govPayload);", + " }", + " catch (e) {", + " failureReason = 'Governance role publishing failed: Error publishing role ' + roleId + '. Error message: ' + e.message;", + " }", + "", + " decision = {", + " 'status': 'complete',", + " 'decision': 'approved',", + " 'outcome': 'fulfilled'", + " };", + " }", + "}", + "", + "if(failureReason) {", + " decision = {", + " 'status': 'complete',", + " 'decision': 'approved',", + " 'outcome': 'cancelled',", + " 'failure': true,", + " 'comment': failureReason", + " };", + " logger.info('Publish failed: ' + failureReason);", + "}", + "", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "logger.info('Request ' + requestId + ' completed.');", + "", + "execution.setVariable('failureReason', failureReason);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-a0c9fc54ced2", + }, + ], + "script": [ + "logger.info('Rejecting request');", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "logger.info('Execution Content: ' + content);", + "", + "var decision = {'outcome': 'denied', 'status': 'complete', 'decision': 'rejected'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Change Role Status to Pending", + "name": "scriptTask-7ddf82215dd0", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "// Change role status to pending approval", + "var content = execution.getVariables();", + "var roleId = content.get('roleId');", + "", + "try {", + " var origRole = openidm.action('iga/governance/role/' + roleId + '/draft', 'GET', {}, {});", + " var payload = {role: origRole.role};", + " payload.role.status = 'pending';", + " var result = openidm.action('iga/governance/role/' + roleId + '/draft', 'PUT', payload);", + "}", + "catch (e) {", + " logger.error('Error setting role status to pending. Error message: ' + e.message);", + "}", + "", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Change Role Status Back to Draft For Failures", + "name": "scriptTask-a0c9fc54ced2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "// Change role status to back to draft", + "var content = execution.getVariables();", + "var roleId = content.get('roleId');", + "", + "try {", + " var origRole = openidm.action('iga/governance/role/' + roleId + '/pending', 'GET', {}, {});", + " var payload = {role: origRole.role};", + " payload.role.status = 'draft';", + " var result = openidm.action('iga/governance/role/' + roleId + '/pending', 'PUT', payload);", + "}", + "catch (e) {", + " logger.error('Error setting role status to draft. Error message: ' + e.message);", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-eb351160a59b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "failureReason == null", + ], + "outcome": "validationSuccess", + "step": null, + }, + { + "condition": [ + "failureReason != null", + ], + "outcome": "validationFailure", + "step": "scriptTask-a0c9fc54ced2", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "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": { + "events": null, + "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", + }, + }, + "basicApplicationGrantCopy": { + "draft": null, + "published": { + "childType": false, + "description": "BasicApplicationGrant-copy", + "displayName": "BasicApplicationGrant-copy", + "id": "basicApplicationGrantCopy", + "mutable": true, + "name": "BasicApplicationGrant-copy", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-621c9996676a": {}, + "scriptTask-4e9121fe850a": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "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": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": [ + "try {", + "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);", + "} catch (e) {", + " logger.error(e.message)", + "}", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "approvalTask-74cf85c35437", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "basicEntitlementGrantCopy": { + "draft": { + "childType": false, + "description": "BasicEntitlementGrant-copy", + "displayName": "BasicEntitlementGrant-copy", + "id": "basicEntitlementGrantCopy", + "mutable": true, + "name": "BasicEntitlementGrant-copy", + "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": {}, + "exclusiveGateway-89dc2f9576ee": {}, + "exclusiveGateway-ad04bf17ac62": {}, + "inclusiveGateway-3f85f36eeeef": {}, + "inclusiveGateway-f105ed2b352d": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-55aced130632": {}, + "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', {}, {});", + " failureReason = "Request Object" + requestObj + ":";", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason += " Validation failed: Error reading request with id " + requestId + "More detail is content:" + content;", + "}", + "", + "// 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-ad04bf17ac62", + }, + ], + "script": [ + "/*", + " * Script Node: Context & Type Check", + " * Purpose: Reads request context and entitlement type to set routing outcomes.", + " * Sets: context, skipApproval, entitlementType, entitlementId, userId, failureReason", + " */", + "", + "logger.info("BasicEntitlementGrant (Custom) - Context & Type Check");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "var entitlementType = null;", + "var entitlementId = null;", + "var userId = null;", + "var failureReason = null;", + "", + " // Read request object", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "", + " // --- Context check (admin requests skip approval) ---", + " 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;", + " }", + " // --- User ---", + " userId = requestObj.request.common.userId;", + "", + " // --- Entitlement type routing ---", + " // The entitlement object on the request exposes a 'type' field.", + " // Internal/system roles exposed as entitlements should carry type: 'custom'.", + " if (requestObj.entitlement && requestObj.entitlement.type) {", + " entitlementType = requestObj.entitlement.type;", + " entitlementId = requestObj.entitlement.id;", + " } else {", + " // Fallback: treat as standard if type is absent", + " entitlementType = 'standard';", + " }", + "", + "} catch (e) {", + " failureReason = 'Context & Type Check failed: ' + e.message;", + " logger.error(failureReason);", + "}", + "", + "logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId);", + "", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + "execution.setVariable("entitlementType", entitlementType);", + "execution.setVariable("entitlementId", entitlementId);", + "execution.setVariable("userId", userId);", + "execution.setVariable("failureReason", failureReason);", + ], + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Type Gateway", + "name": "exclusiveGateway-ad04bf17ac62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "entitlementType != 'custom'", + ], + "outcome": "validationSuccess", + "step": "exclusiveGateway-67a954f33919", + }, + { + "condition": [ + "entitlementType == 'custom'", + ], + "outcome": "validationFailure", + "step": "exclusiveGateway-89dc2f9576ee", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-89dc2f9576ee", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-55aced130632", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Request Approved", + "name": "scriptTask-55aced130632", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "BasicEntitlementGrant-copy", + "displayName": "BasicEntitlementGrant-copy", + "id": "basicEntitlementGrantCopy", + "mutable": true, + "name": "BasicEntitlementGrant-copy", + "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": {}, + "exclusiveGateway-89dc2f9576ee": {}, + "exclusiveGateway-ad04bf17ac62": {}, + "inclusiveGateway-3f85f36eeeef": {}, + "inclusiveGateway-f105ed2b352d": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-55aced130632": {}, + "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', {}, {});", + " failureReason = "Request Object" + requestObj + ":";", + " applicationId = requestObj.application.id;", + " assignmentId = requestObj.assignment.id;", + "}", + "catch (e) {", + " failureReason += " Validation failed: Error reading request with id " + requestId + "More detail is content:" + content;", + "}", + "", + "// 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-ad04bf17ac62", + }, + ], + "script": [ + "/*", + " * Script Node: Context & Type Check", + " * Purpose: Reads request context and entitlement type to set routing outcomes.", + " * Sets: context, skipApproval, entitlementType, entitlementId, userId, failureReason", + " */", + "", + "logger.info("BasicEntitlementGrant (Custom) - Context & Type Check");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "var entitlementType = null;", + "var entitlementId = null;", + "var userId = null;", + "var failureReason = null;", + "", + " // Read request object", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "", + " // --- Context check (admin requests skip approval) ---", + " 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;", + " }", + " // --- User ---", + " userId = requestObj.request.common.userId;", + "", + " // --- Entitlement type routing ---", + " // The entitlement object on the request exposes a 'type' field.", + " // Internal/system roles exposed as entitlements should carry type: 'custom'.", + " if (requestObj.entitlement && requestObj.entitlement.type) {", + " entitlementType = requestObj.entitlement.type;", + " entitlementId = requestObj.entitlement.id;", + " } else {", + " // Fallback: treat as standard if type is absent", + " entitlementType = 'standard';", + " }", + "", + "} catch (e) {", + " failureReason = 'Context & Type Check failed: ' + e.message;", + " logger.error(failureReason);", + "}", + "", + "logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId);", + "", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + "execution.setVariable("entitlementType", entitlementType);", + "execution.setVariable("entitlementId", entitlementId);", + "execution.setVariable("userId", userId);", + "execution.setVariable("failureReason", failureReason);", + ], + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Type Gateway", + "name": "exclusiveGateway-ad04bf17ac62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "entitlementType != 'custom'", + ], + "outcome": "validationSuccess", + "step": "exclusiveGateway-67a954f33919", + }, + { + "condition": [ + "entitlementType == 'custom'", + ], + "outcome": "validationFailure", + "step": "exclusiveGateway-89dc2f9576ee", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-89dc2f9576ee", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-55aced130632", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Request Approved", + "name": "scriptTask-55aced130632", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + }, + "createNonEmployee": { + "draft": null, + "published": { + "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": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "script", + "expirationDate": 1, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-abbb089758c8": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-aec6c36b3a45": {}, + "scriptTask-ca9504ae90d8": {}, + "scriptTask-e8842de66fbb": {}, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + "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()+(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;", + "", + " var comment = {'comment': JSON.stringify(payload)};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', comment, queryParams);", + " }", + " 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", + }, + }, + "createUserJh": { + "draft": { + "childType": false, + "description": "CreateUser - JH", + "displayName": "CreateUser - JH", + "id": "createUserJh", + "mutable": true, + "name": "CreateUser - JH", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + }, + "uiConfig": { + "scriptTask-ca9504ae90d8": {}, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "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 {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var requester = requestObj.requester", + "", + " var comment = { 'comment': JSON.stringify(requestObj) }", + "", + " var queryParams = { '_action': 'update'};", + " openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + "}", + "catch (e) {", + " logger.info("Request permission check failed: " + e.message);", + "}", + "", + "execution.setVariable("skipApproval", skipApproval);", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "custom1BasicEntitlementGrant": { + "draft": null, + "published": { + "childType": false, + "description": "custom-1-BasicEntitlementGrant", + "displayName": "custom-1-BasicEntitlementGrant", + "id": "custom1BasicEntitlementGrant", + "mutable": true, + "name": "custom-1-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": "Custom 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;", + "var authzRoleId = content.get('authzRoleId');", + "", + "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);", + "", + "", + " // --- Conditional authzRoles patch for custom/internal role entitlements ---", + " if (entitlementType === 'custom' && accountAttribute === 'authzRoles') {", + " try {", + " openidm.patch(", + " 'managed/alpha_user/' + request.common.userId,", + " null,", + " [{", + " "operation": "add",", + " "field": "/authzRoles/-",", + " "value": { "_ref": "internal/role/" + authzRoleId }", + " }]", + " );", + " logger.info("custom-BasicEntitlementGrant - authzRoles patch successful"", + " + " | userId: " + request.common.userId", + " + " | entitlementId: " + authzRoleId);", + " } catch (e) {", + " failureReason = "Provisioning succeeded but authzRoles patch failed"", + " + " for user " + request.common.userId", + " + " and entitlement " + authzRoleId", + " + ". Error: " + e.message;", + " logger.error(failureReason);", + " }", + " }", + " ", + " }", + " 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": "Custom Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "/*", + " * Script Node: Context & Type Check", + " * Purpose: Reads request context and entitlement type to set routing outcomes.", + " * Sets: context, waits, skipApproval, entitlementType, entitlementId, userId, failureReason, accountAttribute, authzRoleId", + " */", + "", + "logger.info("custom-BasicEntitlementGrant - Context & Type Check");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "var entitlementType = null;", + "var entitlementId = null;", + "var userId = null;", + "var failureReason = null;", + "var accountAttribute = null;", + "var authzRoleId = null;", + "", + "// Read request object", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "", + " // --- Context check ---", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + "", + " // --- Wait flags ---", + " if (requestObj.request.common.startDate) {", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate) {", + " enableEndWait = true;", + " }", + "", + " // --- User ---", + " userId = requestObj.request.common.userId;", + "", + " // --- Entitlement ID ---", + " entitlementId = requestObj.request.common.entitlementId;", + "", + " // Entitlement type", + " if (entitlementId) {", + " try {", + " var entitlementObj = openidm.action('iga/governance/entitlement/' + entitlementId, 'GET', {}, {});", + " if (entitlementObj", + " && entitlementObj.glossary", + " && entitlementObj.glossary.idx", + " && entitlementObj.glossary.idx['/entitlement']", + " && entitlementObj.glossary.idx['/entitlement'].entitlementType) {", + "", + " entitlementType = entitlementObj.glossary.idx['/entitlement'].entitlementType;", + "", + " } else {", + " entitlementType = 'standard';", + " }", + " ", + " // --- authzRoleId ---", + " if (entitlementObj", + " && entitlementObj.entitlement", + " && entitlementObj.entitlement._id) {", + "", + " authzRoleId = entitlementObj.entitlement._id;", + " ", + " }", + " ", + " // --- accountAttribute ---", + " accountAttribute = (entitlementObj", + " && entitlementObj.item", + " && entitlementObj.item.accountAttribute)", + " ? entitlementObj.item.accountAttribute", + " : null;", + " } catch (e) {", + " logger.warn("Entitlement lookup error: " + e.message);", + "", + " entitlementType = 'standard';", + " }", + " } else {", + " entitlementType = 'standard';", + " }", + "", + " // --- Log comment to request audit trail ---", + " try {", + " var logComment = "Context & Type Check"", + " + " | userId: " + userId", + " + " | context: " + context", + " + " | entitlementId: " + entitlementId", + " + " | entitlementType: " + entitlementType", + " + " | skipApproval: " + skipApproval", + " + " | authzRoleId: " + authzRoleId;", + " ", + "", + " openidm.action(", + " 'iga/governance/requests/' + requestId,", + " 'POST',", + " { 'comment': logComment },", + " { '_action': 'update' }", + " );", + " } catch (e) {", + " logger.error("Failed to write log comment: " + e.message);", + " }", + "", + "} catch (e) {", + " failureReason = 'Context & Type Check failed: ' + e.message;", + " logger.error(failureReason);", + "}", + "", + "logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId);", + "", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + "execution.setVariable("entitlementType", entitlementType);", + "execution.setVariable("entitlementId", entitlementId);", + "execution.setVariable("userId", userId);", + "execution.setVariable("failureReason", failureReason);", + "execution.setVariable("accountAttribute", accountAttribute);", + "execution.setVariable("authzRoleId", authzRoleId);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom 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"", + "}", + "var entitlementType = content.get('entitlementType');", + "", + "try {", + " var decision = {", + " "decision": "approved",", + " }", + " if(skipApproval && entitlementType == 'custom'){", + " decision.comment = "Custom request auto-approved due to request context: " + context;", + " }", + " else 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": { + "events": null, + "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", + }, + }, + "customBasicEntitlementGrant": { + "draft": null, + "published": { + "childType": false, + "description": "custom-BasicEntitlementGrant", + "displayName": "custom-BasicEntitlementGrant", + "id": "customBasicEntitlementGrant", + "mutable": true, + "name": "custom-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-26e6b56a6d6b": {}, + "exclusiveGateway-48e748c42994": {}, + "exclusiveGateway-526a06894733": {}, + "exclusiveGateway-67a954f33919": {}, + "inclusiveGateway-3f85f36eeeef": {}, + "inclusiveGateway-f105ed2b352d": {}, + "scriptTask-0359a9d77ee2": {}, + "scriptTask-0b56191887de": {}, + "scriptTask-3eab1948f1ec": {}, + "scriptTask-6dc428f459a8": {}, + "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-526a06894733", + }, + ], + "script": [ + "/*", + " * Script Node: Context & Type Check", + " * Purpose: Reads request context and entitlement type to set routing outcomes.", + " * Sets: context, waits, skipApproval, entitlementType, entitlementId, userId, failureReason, accountAttribute", + " */", + "", + "logger.info("custom-BasicEntitlementGrant - Context & Type Check");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "", + "var context = null;", + "var enableWait = false;", + "var enableEndWait = false;", + "var skipApproval = false;", + "var entitlementType = null;", + "var entitlementId = null;", + "var userId = null;", + "var failureReason = null;", + "var accountAttribute = null;", + "", + "// Read request object", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + "", + " // Context check (admin requests skip approval)", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " if (context == 'admin') {", + " skipApproval = true;", + " }", + " }", + "", + " // Optional Waits", + " if (requestObj.request.common.startDate) {", + " enableWait = true;", + " }", + " if (requestObj.request.common.endDate) {", + " enableEndWait = true;", + " }", + "", + " // User ", + " userId = requestObj.request.common.userId;", + "", + " // Entitlement ID", + " entitlementId = requestObj.request.common.entitlementId;", + "", + " // Entitlement type", + " if (entitlementId) {", + " try {", + " var entitlementObj = openidm.action('iga/governance/entitlement/' + entitlementId, 'GET', {}, {});", + " if (entitlementObj", + " && entitlementObj.glossary", + " && entitlementObj.glossary.idx", + " && entitlementObj.glossary.idx['/entitlement']", + " && entitlementObj.glossary.idx['/entitlement'].entitlementType) {", + "", + " entitlementType = entitlementObj.glossary.idx['/entitlement'].entitlementType;", + "", + " } else {", + " entitlementType = 'standard';", + " }", + " ", + " // accountAttribute for provisioning node", + " accountAttribute = (entitlementObj", + " && entitlementObj.item", + " && entitlementObj.item.accountAttribute)", + " ? entitlementObj.item.accountAttribute", + " : null;", + " } catch (e) {", + " logger.warn("Entitlement lookup error: " + e.message);", + "", + " entitlementType = 'standard';", + " }", + " } else {", + " entitlementType = 'standard';", + " }", + "", + "", + "} catch (e) {", + " failureReason = 'Context & Type Check failed: ' + e.message;", + " logger.error(failureReason);", + "}", + "", + "logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId + " | AuthzRoleId: " + authzRoleId);", + "", + "execution.setVariable("context", context);", + "execution.setVariable("enableWait", enableWait);", + "execution.setVariable("enableEndWait", enableEndWait);", + "execution.setVariable("skipApproval", skipApproval);", + "execution.setVariable("entitlementType", entitlementType);", + "execution.setVariable("entitlementId", entitlementId);", + "execution.setVariable("userId", userId);", + "execution.setVariable("failureReason", failureReason);", + "execution.setVariable("accountAttribute", accountAttribute);", + "", + ], + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-526a06894733", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "entitlementType == 'custom'", + ], + "outcome": "validationSuccess", + "step": "exclusiveGateway-26e6b56a6d6b", + }, + { + "condition": [ + "entitlementType != 'custom'", + ], + "outcome": "validationFailure", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-26e6b56a6d6b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApproval", + "step": "scriptTask-6dc428f459a8", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Auto Approval", + "name": "scriptTask-6dc428f459a8", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + }, + "extendGrantEndDate": { + "draft": null, + "published": { + "childType": false, + "description": "Basic Workflow to extend a grant end date", + "displayName": "Basic Grant End date Extension", + "id": "extendGrantEndDate", + "mutable": false, + "name": "extendGrantEndDate", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-b80009644545", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": { + "isExpression": true, + "value": [ + "(function() {", + " var content = execution.getVariables();", + " var requestId = content.get('id');", + " var requestIndex = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var userId = null;", + " const grantType = requestIndex.request.common.grantType;", + " if (grantType == 'roleMembership') {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " userId = requestIndex.roleOwner[0].id;", + " }", + " else if (systemSettings && systemSettings.defaultApprover) {", + " var approver = systemSettings.defaultApprover;", + " return approver;", + " }", + " } else if (grantType == 'entitlementGrant') {", + " userId = (requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id;", + " } else if (grantType == 'accountGrant') {", + " userId = requestIndex.applicationOwner[0].id", + " }", + " return [{", + " "id": "managed/user/" + userId ,", + " "permissions": {", + " "approve": true,", + " "reject": true,", + " "reassign": true,", + " "modify": true,", + " "comment": true", + " }", + " }];", + "})()", + ], + }, + "events": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "exclusiveGateway-2bf686c17905": {}, + "scriptTask-0c9ab2d8fd7f": {}, + "scriptTask-b80009644545": {}, + "scriptTask-ba009484a101": {}, + "scriptTask-c58309b8c470": {}, + }, + }, + "status": "published", + "steps": [ + { + "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 userId = null;", + " const grantType = requestIndex.request.common.grantType;", + " if (grantType == 'roleMembership') {", + " var systemSettings = openidm.action("iga/commons/config/iga_access_request", "GET", {}, {});", + " if (requestIndex.roleOwner && requestIndex.roleOwner[0]) {", + " userId = requestIndex.roleOwner[0].id;", + " }", + " else if (systemSettings && systemSettings.defaultApprover) {", + " var approver = systemSettings.defaultApprover;", + " return approver;", + " }", + " } else if (grantType == 'entitlementGrant') {", + " userId = (requestIndex.entitlementOwner && requestIndex.entitlementOwner.length > 0) ? requestIndex.entitlementOwner[0].id : requestIndex.applicationOwner[0].id;", + " } else if (grantType == 'accountGrant') {", + " userId = requestIndex.applicationOwner[0].id", + " }", + " return [{", + " "id": "managed/user/" + userId ,", + " "permissions": {", + " "approve": true,", + " "reject": 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": "APPROVE", + "step": "scriptTask-ba009484a101", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-c58309b8c470", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "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": "scriptTask-0c9ab2d8fd7f", + }, + ], + "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": "UpdateRevokeRequest", + "name": "scriptTask-0c9ab2d8fd7f", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Update existing revoke request with new extended end date");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "", + "try {", + " var extendRequest = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (!extendRequest || !extendRequest.request || !extendRequest.request.common) {", + " throw new Error("Invalid extendRequest structure");", + " }", + " logger.info("extendRequestObj: " + extendRequest);", + "", + " var catalogFieldMapper = {", + " "roleMembership": "roleId",", + " "accountGrant": "applicationId",", + " "entitlementGrant": "entitlementId"", + " }", + " ", + " var grantType = extendRequest.request.common.grantType;", + "", + " if (!catalogFieldMapper[grantType]) {", + " throw new Error("Unsupported grantType: " + grantType);", + " }", + " var body = {", + " "targetFilter": {", + " "operand": [{", + " "operator": "EQUALS",", + " "operand": { "targetName": "decision.status", "targetValue": "suspended" }", + " }, {", + " "operator": "EQUALS",", + " "operand": { "targetName": "request.common.userId", "targetValue": extendRequest.request.common.userId }", + " }, {", + " "operator": "EQUALS",", + " "operand": { "targetName": "request.common." + catalogFieldMapper[grantType], "targetValue": extendRequest.request.common.grantId }", + " }],", + " "operator": "AND"", + " }", + " }", + " logger.info('suspended request search body'+ JSON.stringify(body));", + " var suspendedRequest = openidm.action('iga/governance/requests/search/', 'POST', body, {});", + " if (suspendedRequest && suspendedRequest.result && suspendedRequest.result.length > 0) {", + " var suspendedReq = suspendedRequest.result[0];", + " logger.info("found existing suspendedRequest: " + suspendedReq);", + " ", + " if (!suspendedReq.decision || !suspendedReq.decision.phases || suspendedReq.decision.phases.length === 0) {", + " throw new Error("No decision phases found for suspended request " + suspendedReq.id);", + " }", + " ", + " let queryParams = {", + " '_action': "changeResumeDate"", + " }", + "", + " let payload = {", + " "resumeDate": extendRequest.request.common.endDate", + " }", + " ", + " var updateResult = openidm.action('iga/governance/requests/' + suspendedReq.id, 'POST', payload, queryParams)", + " logger.info("Successfully updated existing suspendedRequest: " + updateResult);", + " } ", + " else {", + " // create a new revoke request with updated end date", + " var newRequestPayload = {", + " "common":{", + " "context": {", + " "type": "admin"", + " },", + " "userId": extendRequest.request.common.userId,", + " "endDate": extendRequest.request.common.endDate,", + " "sourceRequestId": requestId,", + " "justification": "Request submitted automatically to remove access granted by request: " + requestId", + " }", + " };", + " newRequestPayload.common[catalogFieldMapper[grantType]] = extendRequest.request.common.grantId;", + " logger.info("newRequestPayload" + JSON.stringify(newRequestPayload));", + " var queryParam = {", + " '_action': "publish"", + " }", + " const removeEndpoint = {", + " "roleMembership": "roleRemove",", + " "accountGrant": "applicationRemove",", + " "entitlementGrant": "entitlementRemove"", + " }", + " ", + " var createResult = openidm.action('iga/governance/requests/'+ removeEndpoint[grantType], 'POST', newRequestPayload, queryParam)", + " logger.info("Successfully created new revoke request with an end date: " + createResult);", + " }", + "", + " var decision = {'outcome': 'fulfilled', 'status': 'complete'};", + " var queryParams = { '_action': 'update'};", + " logger.info("before updating workflow extend request" + decision);", + " var updateRes = openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + " logger.info("after updating workflow extend request" + updateRes);", + "}", + "catch (e) {", + " failureReason = "Update Revoke Request with extended end date failed: Error request with id " + e;", + " logger.info(failureReason);", + "}", + ], + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "jhNeCreateTest2": { + "draft": null, + "published": { + "childType": false, + "description": "jh-ne-create-test-2", + "displayName": "jh-ne-create-test-2", + "id": "jhNeCreateTest2", + "mutable": true, + "name": "jh-ne-create-test-2", + "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-2131bbe3663d", + }, + "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-6649e6d6f2a3": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 5, + "escalationTimeSpan": "day(s)", + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "emailTask-731854fb34db": {}, + "exclusiveGateway-69f93dd39054": {}, + "scriptTask-2131bbe3663d": {}, + "scriptTask-c174d2210667": {}, + "scriptTask-f2a2d7eee947": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Permissions Check", + "name": "scriptTask-2131bbe3663d", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-69f93dd39054", + }, + ], + "script": [ + "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 Approve Gateway", + "name": "exclusiveGateway-69f93dd39054", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "skipApproval == true", + ], + "outcome": "AutoApprove", + "step": "scriptTask-c174d2210667", + }, + { + "condition": [ + "skipApproval == false", + ], + "outcome": "Approval", + "step": "approvalTask-6649e6d6f2a3", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + "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-f2a2d7eee947", + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6649e6d6f2a3", + "type": "approvalTask", + }, + { + "displayName": "Mark Approved", + "name": "scriptTask-c174d2210667", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-731854fb34db", + }, + ], + "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": ""Create" User", + "name": "scriptTask-f2a2d7eee947", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "emailTask-731854fb34db", + }, + ], + "script": [ + "logger.info("Creating User");", + "", + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var failureReason = null;", + "var request = 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 {", + " request = requestObj.request;", + "", + " ", + " ", + " // var payload = {", + " // "userName": request.custom.userName,", + " // "givenName": request.custom.givenName,", + " // "sn": request.custom.sn,", + " // "mail": request.custom.mail,", + " // "password": 'DemoP@ssword1'", + " // };", + "", + " /** Create new user **/", + " // var result = openidm.create('managed/alpha_user', null, payload, queryParams);", + "", + " // /** Send new user email **/", + " // var body = {", + " // subject: "Welcome " + payload.givenName + " " + payload.sn + "!",", + " // to: payload.mail,", + " // body: "Your new user has been created in the system.\\n\\nUsername: " + payload.userName + "\\nPassword: " + payload.password + "\\n\\nLogin to your account here: https://openam-gov-dev-4.forgeblocks.com/am/XUI/?realm=/alpha#/",", + " // object: {}", + " // };", + " // openidm.action("external/email", "send", body);", + " }", + " catch (e) {", + " failureReason = "Creating user failed: Error during creation of user " + request.custom.userName + ". Error message: " + e.message;", + " }", + "", + " var decision = {'status': 'complete', 'decision': 'approved', "comment": JSON.stringify(request)};", + " 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": "Account Creation Email", + "emailTask": { + "bcc": "", + "cc": "", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": null, + }, + { + "condition": null, + "outcome": "FAILED", + "step": null, + }, + ], + "object": { + "cn": "9959348", + "custom_DisplayName": "Jack Hatton", + "custom_LocationName": "remote", + "custom_siteLocation": "remote", + "manager": "test", + }, + "templateName": "staffNe1AccountCreation", + "to": "jhatton@trivir.com", + }, + "name": "emailTask-731854fb34db", + "type": "emailTask", + }, + ], + }, + }, + "pghGenerateRap": { + "draft": null, + "published": { + "childType": false, + "description": "pgh-generate-rap", + "displayName": "pgh-generate-rap", + "id": "pghGenerateRap", + "mutable": true, + "name": "pgh-generate-rap", + "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-115d1ab72679", + }, + "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": { + "exclusiveGateway-2d4351f5c77b": {}, + "fulfillmentTask-f49f20d19149": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDateType": "duration", + "expirationDateVariable": "", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "scriptTask-115d1ab72679": {}, + "scriptTask-5a2b73dd9dd2": {}, + "scriptTask-6f260211dc0f": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Generate RAP", + "name": "scriptTask-115d1ab72679", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-2d4351f5c77b", + }, + ], + "script": [ + "function getPublishedWorkflow(workflowId) {", + " return openidm.action(\`iga/governance/workflow/\${workflowId}/published\`, 'GET', {}, {});", + "}", + "", + "function getRequestType(requestTypeId) {", + " return openidm.action(\`iga/governance/requestTypes/\${requestTypeId}\`, 'GET', {}, {});", + "}", + "", + "function getRequest() {", + " var requestId = execution.getVariables().get('id');", + " return openidm.action(\`iga/governance/requests/\${requestId}\`, 'GET', {}, {});", + "}", + "", + "function modifyRequest(body) {", + " var requestId = execution.getVariables().get('id');", + " return openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') });", + "}", + "", + "function updateRequest(body) {", + " var requestId = execution.getVariables().get('id');", + " return openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', body, { _action: "update" });", + "}", + "", + "function commentRequest(message, isFail) {", + " return updateRequest({ comment: message, failure: !!isFail });", + "}", + "", + "function main() {", + " var isSuccessful = false;", + " try {", + " var request = getRequest();", + "", + " // Get user ID", + " var idPath = request.request.custom.idPath;", + " var userId = idPath.split('/').pop();", + " execution.setVariable("idPath", idPath);", + "", + " // Get script ID for the phase name", + " var requestType = getRequestType(request.requestType);", + " var workflow = getPublishedWorkflow(requestType.workflow.id);", + " execution.setVariable("phaseName", workflow.staticNodes.startNode.connections.start);", + " ", + " // Generate RAP", + " var response = openidm.action('endpoint/helpdesk-rap/generate/' + userId, 'create', {}, {});", + " modifyRequest({", + " common: {", + " isDraft: false,", + " context: {", + " type: "request"", + " }", + " },", + " custom: {", + " idPath: idPath,", + " rap: response.rap", + " }", + " });", + " isSuccessful = true;", + " } catch (e) {", + " commentRequest("Error generating RAP. Error message: " + e.message, true);", + " } finally {", + " execution.setVariable("isSuccessful", isSuccessful);", + " }", + "}", + "", + "main();", + "", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Is Successful", + "name": "exclusiveGateway-2d4351f5c77b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "isSuccessful == true", + ], + "outcome": "success", + "step": "fulfillmentTask-f49f20d19149", + }, + { + "condition": [ + "isSuccessful == false", + ], + "outcome": "error", + "step": "scriptTask-6f260211dc0f", + }, + ], + "script": [ + "logger.info("This is exclusive gateway");", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approve", + "name": "scriptTask-5a2b73dd9dd2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "function updateRequest(body) {", + " var requestId = execution.getVariables().get('id');", + " return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "update" });", + "}", + "", + "function modifyRequest(body) {", + " var requestId = execution.getVariables().get('id');", + " return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') });", + "}", + "", + "function commentRequest(message, isFail) {", + " return updateRequest({ comment: message, failure: isFail });", + "}", + "", + "function approveRequest() {", + " updateRequest({", + " outcome: 'fulfilled',", + " status: 'complete',", + " decision: 'approved'", + " });", + "}", + "", + "function main() {", + " try {", + " modifyRequest({", + " common: {", + " isDraft: false,", + " context: {", + " type: "request"", + " }", + " },", + " custom: {", + " idPath: execution.getVariables().get('idPath'),", + " rap: """, + " }", + " });", + " approveRequest();", + " } catch (e) {", + " commentRequest("Failure auto-approving RAP request. Error message: " + e.message, true);", + " }", + "}", + "", + "main();", + "", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Reject", + "name": "scriptTask-6f260211dc0f", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "function updateRequest(body) {", + " var requestId = execution.getVariables().get('id');", + " return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "update" });", + "}", + "", + "function modifyRequest(body) {", + " var requestId = execution.getVariables().get('id');", + " return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') });", + "}", + "", + "function commentRequest(message, isFail) {", + " return updateRequest({ comment: message, failure: isFail });", + "}", + "", + "function rejectRequest() {", + " updateRequest({", + " outcome: 'cancelled',", + " status: 'complete',", + " decision: 'rejected'", + " });", + "}", + "", + "function main() {", + " try {", + " modifyRequest({", + " common: {", + " isDraft: false,", + " context: {", + " type: "request"", + " }", + " },", + " custom: {", + " idPath: execution.getVariables().get('idPath'),", + " rap: """, + " }", + " });", + " rejectRequest();", + " } catch (e) {", + " commentRequest("Failure auto-rejecting RAP request. Error message: " + e.message, true);", + " }", + "}", + "", + "main();", + "", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Confirm RAP", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "scriptTask-5a2b73dd9dd2", + }, + { + "condition": null, + "outcome": "DENY", + "step": "scriptTask-6f260211dc0f", + }, + ], + }, + "name": "fulfillmentTask-f49f20d19149", + "type": "fulfillmentTask", + }, + ], + }, + }, + "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": { + "events": null, + "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": { + "events": null, + "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", + }, + ], + }, + }, + "phhCustomWorkflow": { + "draft": { + "childType": false, + "description": "phhCustomWorkflow", + "displayName": "phhCustomWorkflow", + "id": "phhCustomWorkflow", + "mutable": true, + "name": "phhCustomWorkflow", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + }, + "scriptTask-0e5b6187ea62": {}, + "scriptTask-4e9121fe850a": {}, + "scriptTask-c58309b8c470": {}, + }, + }, + "status": "draft", + "steps": [ + { + "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", + }, + "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-74cf85c35437", + "type": "approvalTask", + }, + { + "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": "approvalTask-74cf85c35437", + }, + ], + "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-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "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", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "phhDelegatedUserDisableWorkflow": { + "draft": { + "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": "draft", + "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", + }, + ], + }, + "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", + }, + ], + }, + }, + "phhFlow": { + "draft": null, + "published": { + "childType": false, + "description": "phhFlow", + "displayName": "phhFlow", + "id": "phhFlow", + "mutable": true, + "name": "phhFlow", + "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-10bf48033687", + }, + "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-bf52ce203a81": { + "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(){", + "// --- Log comment to request audit trail ---", + " try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var logComment = "Context Check"", + " + " | applicationOwner: " + requestObj.applicationOwner[0].id", + " + " | full dump: " + JSON.stringify(requestObj);", + " ", + "", + " openidm.action(", + " 'iga/governance/requests/' + requestId,", + " 'POST',", + " { 'comment': logComment },", + " { '_action': 'update' }", + " );", + " } catch (e) {", + " logger.error("Failed to write log comment: " + e.message);", + " } ", + " return [];", + "}", + ")()", + "", + ], + }, + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + }, + "scriptTask-10bf48033687": {}, + "scriptTask-610744f7d369": {}, + "scriptTask-c28119ea007e": {}, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Context Check", + "name": "scriptTask-10bf48033687", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "approvalTask-bf52ce203a81", + }, + ], + "script": [ + "var content = execution.getVariables();", + "var requestId = content.get('id');", + "var context = null;", + "", + "try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " if (requestObj.request.common.context) {", + " context = requestObj.request.common.context.type;", + " }", + " // --- Log comment to request audit trail ---", + " try {", + " var logComment = "Context Check"", + " + " | full dump: " + JSON.stringify(requestObj);", + " ", + "", + " openidm.action(", + " 'iga/governance/requests/' + requestId,", + " 'POST',", + " { 'comment': logComment },", + " { '_action': 'update' }", + " );", + " } catch (e) {", + " logger.error("Failed to write log comment: " + e.message);", + " }", + "}", + "catch (e) {", + " logger.info("Request Context Check failed "+e.message);", + "}", + "", + "logger.info("Context: " + context);", + "execution.setVariable("context", context);", + ], + }, + "type": "scriptTask", + }, + { + "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(){", + "// --- Log comment to request audit trail ---", + " try {", + " var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});", + " var logComment = "Context Check"", + " + " | applicationOwner: " + requestObj.applicationOwner[0].id", + " + " | full dump: " + JSON.stringify(requestObj);", + " ", + "", + " openidm.action(", + " 'iga/governance/requests/' + requestId,", + " 'POST',", + " { 'comment': logComment },", + " { '_action': 'update' }", + " );", + " } catch (e) {", + " logger.error("Failed to write log comment: " + e.message);", + " } ", + " return [];", + "}", + ")()", + "", + ], + }, + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c28119ea007e", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-610744f7d369", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-bf52ce203a81", + "type": "approvalTask", + }, + { + "displayName": "Approve", + "name": "scriptTask-c28119ea007e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": [ + "logger.info("Approving 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': 'not provisioned', 'status': 'complete', 'decision': 'approved'};", + "var queryParams = { '_action': 'update'};", + "openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + ], + }, + "type": "scriptTask", + }, + { + "displayName": "Script Task", + "name": "scriptTask-610744f7d369", + "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", + }, + ], + }, + }, + "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": { + "events": null, + "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", + }, + }, + "test": { + "draft": { + "childType": false, + "description": "test", + "displayName": "test", + "id": "test", + "mutable": true, + "name": "test", + "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": "waitTask-4d9223fb79c5", + }, + "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": { + "waitTask-4d9223fb79c5": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-4d9223fb79c5", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(1*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test", + "displayName": "test", + "id": "test", + "mutable": true, + "name": "test", + "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": "waitTask-4d9223fb79c5", + }, + "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": { + "waitTask-4d9223fb79c5": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-4d9223fb79c5", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(1*30*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + ], + }, + }, + "test1": { + "draft": null, + "published": { + "childType": false, + "description": "test-1", + "displayName": "test-1", + "id": "test1", + "mutable": true, + "name": "test-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": "waitTask-d25ec611a5d8", + }, + "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": { + "waitTask-d25ec611a5d8": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "duration", + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-d25ec611a5d8", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": [ + "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + ], + }, + }, + }, + ], + }, + }, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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, + }, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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, + }, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow9": { + "draft": null, + "published": { + "childType": false, + "description": "testWorkflow9", + "displayName": "testWorkflow9", + "id": "testWorkflow9", + "mutable": true, + "name": "testWorkflow9", + "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-900ec6e95c71", + }, + "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-900ec6e95c71": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "duration", + "expirationDateVariable": "", + "reassignedActors": [], + }, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-900ec6e95c71", + "type": "approvalTask", + }, + ], + }, + }, + "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`] = ` +"✔ 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": "file://BasicApplicationGrant/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://BasicApplicationGrant/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://BasicApplicationGrant/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://BasicApplicationGrant/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://BasicApplicationGrant/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://BasicApplicationGrant/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.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": "file://BasicApplicationGrant/published/scriptTask-14acc58c28dd.workflow.js", + }, + "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/BasicApplicationGrant/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 --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/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", + "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."); +} +" +`; + +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/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 --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/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 --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/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 --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/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 --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/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 --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": "file://BasicApplicationRemove/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://BasicApplicationRemove/published/scriptTask-c58309b8c470.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-b80009644545", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-2bf686c17905", + }, + ], + "script": "file://BasicApplicationRemove/published/scriptTask-b80009644545.workflow.js", + }, + "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": "file://BasicApplicationRemove/published/scriptTask-ba009484a101.workflow.js", + }, + "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/BasicApplicationRemove/published/scriptTask-626899b6e99a.workflow.js 1`] = ` +"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."); +" +`; + +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/published/scriptTask-b80009644545.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-ba009484a101.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 --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/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 --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": "file://BasicEntitlementGrant/published/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://BasicEntitlementGrant/published/scriptTask-0b56191887de.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-f105ed2b352d", + }, + ], + "script": "file://BasicEntitlementGrant/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://BasicEntitlementGrant/published/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://BasicEntitlementGrant/published/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://BasicEntitlementGrant/published/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://BasicEntitlementGrant/published/scriptTask-91769554db51.workflow.js", + }, + "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/BasicEntitlementGrant/published/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 --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/published/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 --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/published/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 --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/published/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 --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/published/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 --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/published/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 --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/published/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 --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": "file://BasicEntitlementRemove/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://BasicEntitlementRemove/published/scriptTask-aec6c36b3a45.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-abbb089758c8", + }, + ], + "script": "file://BasicEntitlementRemove/published/scriptTask-ca9504ae90d8.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-8803458e3a77", + }, + ], + "script": "file://BasicEntitlementRemove/published/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", + }, + { + "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/BasicEntitlementRemove/published/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"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."); +" +`; + +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/published/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 --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/published/scriptTask-ca9504ae90d8.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-e8842de66fbb.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 --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": "file://BasicRoleGrant/published/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": "Role Grant Validation Failure", + "name": "scriptTask-0b56191887de", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://BasicRoleGrant/published/scriptTask-0b56191887de.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Provisioning", + "name": "scriptTask-0359a9d77ee2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-d18d59004c0c", + }, + ], + "script": "file://BasicRoleGrant/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://BasicRoleGrant/published/scriptTask-aec6c36b3a45.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-d76490953517", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-8cd9decab2e4", + }, + ], + "script": "file://BasicRoleGrant/published/scriptTask-d76490953517.workflow.js", + }, + "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": "file://BasicRoleGrant/published/scriptTask-8506123e6208.workflow.js", + }, + "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": "file://BasicRoleGrant/published/scriptTask-32dada3fc9f9.workflow.js", + }, + "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/BasicRoleGrant/published/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 = { + "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."); +} +" +`; + +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/published/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 --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/published/scriptTask-3eab1948f1ec.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-32dada3fc9f9.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" + }, + "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') + } + } +" +`; + +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/published/scriptTask-8506123e6208.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 --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/published/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 --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/published/scriptTask-d76490953517.workflow.js 1`] = ` +"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); +" +`; + +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": "file://BasicRoleRemove/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://BasicRoleRemove/published/scriptTask-aec6c36b3a45.workflow.js", + }, + "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": "file://BasicRoleRemove/published/scriptTask-c99a721d2b93.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Request Approved", + "name": "scriptTask-6dde9c0ec213", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "inclusiveGateway-a83e210b90d1", + }, + ], + "script": "file://BasicRoleRemove/published/scriptTask-6dde9c0ec213.workflow.js", + }, + "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/BasicRoleRemove/published/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"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."); +" +`; + +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/published/scriptTask-6dde9c0ec213.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 --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/published/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 --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/published/scriptTask-c99a721d2b93.workflow.js 1`] = ` +"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); +" +`; + +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": "file://BasicViolationProcess/published/scriptTask-690cd5adc1b6.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Allow Violation", + "name": "scriptTask-313f487929a4", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://BasicViolationProcess/published/scriptTask-313f487929a4.workflow.js", + }, + "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": "file://BasicViolationProcess/published/scriptTask-6e8507beca08.workflow.js", + }, + "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/BasicViolationProcess/published/scriptTask-6e8507beca08.workflow.js 1`] = ` +"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, {}); + } +} +" +`; + +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/published/scriptTask-313f487929a4.workflow.js 1`] = ` +"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, {}); + } +} +" +`; + +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/published/scriptTask-690cd5adc1b6.workflow.js 1`] = ` +"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); +" +`; + +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": "file://CreateEntitlement/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://CreateEntitlement/published/scriptTask-aec6c36b3a45.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approval", + "name": "scriptTask-e21178ab80f7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": "file://CreateEntitlement/published/scriptTask-e21178ab80f7.workflow.js", + }, + "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": "file://CreateEntitlement/published/scriptTask-c59ee376a37c.workflow.js", + }, + "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/published/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"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."); +" +`; + +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/published/scriptTask-aec6c36b3a45.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-c59ee376a37c.workflow.js 1`] = ` +"// 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); +" +`; + +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/published/scriptTask-e21178ab80f7.workflow.js 1`] = ` +"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); +} +" +`; + +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": "file://CreateUser/published/approvalTask-74cf85c35437.workflow.js", + }, + "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": "file://CreateUser/published/approvalTask-74cf85c35437.workflow.js", + }, + "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": "file://CreateUser/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://CreateUser/published/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://CreateUser/published/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://CreateUser/published/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", + }, + }, + }, +} +`; + +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/published/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 --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/published/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 --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/published/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 --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/published/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 --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/published/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 --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": "file://DeleteUser/published/approvalTask-74cf85c35437.workflow.js", + }, + "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": "file://DeleteUser/published/approvalTask-74cf85c35437.workflow.js", + }, + "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": "file://DeleteUser/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://DeleteUser/published/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://DeleteUser/published/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://DeleteUser/published/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", + }, + }, + }, +} +`; + +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/published/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 --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/published/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"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."); +} +" +`; + +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/published/scriptTask-aec6c36b3a45.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-ca9504ae90d8.workflow.js 1`] = ` +"// 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); +" +`; + +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/published/scriptTask-e8842de66fbb.workflow.js 1`] = ` +"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); +} +" +`; + +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": "file://ModifyEntitlement/published/fulfillmentTask-cce84a670745.workflow.js", + }, + "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": "file://ModifyEntitlement/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://ModifyEntitlement/published/scriptTask-aec6c36b3a45.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto-Approval", + "name": "scriptTask-e8842de66fbb", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "scriptTask-0359a9d77ee2", + }, + ], + "script": "file://ModifyEntitlement/published/scriptTask-e8842de66fbb.workflow.js", + }, + "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": "file://ModifyEntitlement/published/scriptTask-87ad089a5484.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Check", + "name": "scriptTask-365b50ab00a7", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": "exclusiveGateway-c82a357d8c38", + }, + ], + "script": "file://ModifyEntitlement/published/scriptTask-365b50ab00a7.workflow.js", + }, + "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": "file://ModifyEntitlement/published/fulfillmentTask-cce84a670745.workflow.js", + }, + "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/ModifyEntitlement/published/fulfillmentTask-cce84a670745.workflow.js 1`] = ` +"// 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 + } + }]; +})() +" +`; + +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/published/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"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."); +" +`; + +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/published/scriptTask-87ad089a5484.workflow.js 1`] = ` +"// 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); +" +`; + +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/published/scriptTask-365b50ab00a7.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-aec6c36b3a45.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-e8842de66fbb.workflow.js 1`] = ` +"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); +} +" +`; + +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": "file://ModifyUser/published/approvalTask-74cf85c35437.workflow.js", + }, + "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": "file://ModifyUser/published/approvalTask-74cf85c35437.workflow.js", + }, + "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": "file://ModifyUser/published/scriptTask-0359a9d77ee2.workflow.js", + }, + "type": "scriptTask", + }, + { + "displayName": "Reject Request", + "name": "scriptTask-aec6c36b3a45", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": [ + "true", + ], + "outcome": "done", + "step": null, + }, + ], + "script": "file://ModifyUser/published/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://ModifyUser/published/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://ModifyUser/published/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", + }, + }, + }, +} +`; + +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/published/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 --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/published/scriptTask-0359a9d77ee2.workflow.js 1`] = ` +"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."); +" +`; + +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/published/scriptTask-aec6c36b3a45.workflow.js 1`] = ` +"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); +" +`; + +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/published/scriptTask-ca9504ae90d8.workflow.js 1`] = ` +"// 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); +" +`; + +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/published/scriptTask-e8842de66fbb.workflow.js 1`] = ` +"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); +} +" +`; + +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": "file://createNonEmployee/draft/approvalTask-74cf85c35437.workflow.js", + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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", + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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)", + }, + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "file://phhNeDisable/published/scriptTask-99fdf317c49b.workflow.js", + }, + "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/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 --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": "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", + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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, + }, + "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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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, + }, + "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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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, + }, + "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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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, + }, + "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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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": "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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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 --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/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); + + +} +" +`; + +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`] = ` +"✔ Exported 26 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", + }, + }, + "staffNe1AccountCreation": { + "_id": "emailTemplate/staffNe1AccountCreation", + "defaultLocale": "en", + "description": "", + "displayName": "StaffNE-1-AccountCreation", + "enabled": true, + "from": "TechSupportPortal@fcps.edu", + "html": { + "en": "
Non-Employee Account Created +

+ Welcome to FCPS! +

A non-employee user account has been created.

Non-Employee’s Display Name: {{object.custom_DisplayName}}
+Manager Name: {{object.manager}}
+Destination Work/School Location: {{object.custom_LocationName}}

Your UserID to log into computers is: {{object.cn}}

A separate email with just your temporary password has been sent. You must change this password before you will be able to use the account.

  • Login to the FCPS SSO Portal
  • Set up your MFA when prompted.
  • After MFA is configured, click on reset to change your password and follow the prompts.
  • After reviewing the notices on the pop-up window, select the blue button, "I agree to these policies and directives."

If you need further assistance, please contact the FCPS Technology Support Desk.

Thank You.

FCPS Tech Support Desk

"Do you have an IT question? Ask the FCPS Tech Support Portal, where you can search for solutions, services, and submit tickets to solve all your tech-related issues."

", + }, + "message": { + "en": "
Non-Employee Account Created +

+ Welcome to FCPS! +

A non-employee user account has been created.

Non-Employee’s Display Name: {{object.custom_DisplayName}}
+Manager Name: {{object.manager}}
+Destination Work/School Location: {{object.custom_LocationName}}

Your UserID to log into computers is: {{object.cn}}

A separate email with just your temporary password has been sent. You must change this password before you will be able to use the account.

  • Login to the FCPS SSO Portal
  • Set up your MFA when prompted.
  • After MFA is configured, click on reset to change your password and follow the prompts.
  • After reviewing the notices on the pop-up window, select the blue button, "I agree to these policies and directives."

If you need further assistance, please contact the FCPS Technology Support Desk.

Thank You.

FCPS Tech Support Desk

"Do you have an IT question? Ask the FCPS Tech Support Portal, where you can search for solutions, services, and submit tickets to solve all your tech-related issues."

", + }, + "mimeType": "text/html", + "styles": " ", + "subject": { + "en": "Non-Employee Account Created - {{object.custom_siteLocation}} - Effective {{getDate}} - {{object.custom_DisplayName}}", + }, + "templateId": "staffNe1AccountCreation", + }, + }, + "event": { + "6731fca9-592f-45cb-bd48-f0046b1efb92": { + "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": "6731fca9-592f-45cb-bd48-f0046b1efb92", + "metadata": {}, + "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", + }, + "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": {}, + "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", + }, + "f2c4b9de-b6b1-4221-82b8-9fc567a8ed91": { + "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": "f2c4b9de-b6b1-4221-82b8-9fc567a8ed91", + "metadata": {}, + "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", + }, + }, + "requestForm": { + "2108a1e1-6be6-41e2-b356-b929114d98f5": { + "assignments": [ + { + "formId": "2108a1e1-6be6-41e2-b356-b929114d98f5", + "metadata": {}, + "objectId": "workflow/phhCustomWorkflow/node/approvalTask-74cf85c35437", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + "requestType": "822e832b-865a-4b9a-9b35-8c9765c6a515", + }, + "description": "", + "form": { + "events": { + "onLoad": {}, + }, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "description": "mlb stats number", + "id": "ed67d5a7-0d13-4bd6-82ec-a44929009d7b", + "label": "Team Number", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "custom.teamNumber", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "d99789d4-49d6-418b-b2f3-ad3e6ea0efd2", + }, + ], + }, + "id": "2108a1e1-6be6-41e2-b356-b929114d98f5", + "metadata": {}, + "name": "phhCustomRequestForm", + "type": "request", + }, + "69c4d900-ff3c-400f-8d18-037693ade1fc": { + "assignments": [ + { + "formId": "69c4d900-ff3c-400f-8d18-037693ade1fc", + "metadata": {}, + "objectId": "requestType/35daadd6-bc63-47b5-a0e5-7756dfbdf229", + }, + { + "formId": "69c4d900-ff3c-400f-8d18-037693ade1fc", + "metadata": {}, + "objectId": "workflow/pghGenerateRap/node/fulfillmentTask-f49f20d19149", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "Form for generating an RAP code for a user", + "form": { + "events": { + "onLoad": { + "script": "const USER_FIELD = 'custom.idPath'; +const RAP_FIELD = 'custom.rap'; + +function main() { + if (form.getValue(RAP_FIELD)) { + form.hideField(USER_FIELD); + } else { + form.hideField(RAP_FIELD); + } +} + +main();", + "type": "script", + }, + }, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "description": "", + "id": "be5596da-1cda-4576-b126-ca4e74eebce4", + "label": "Select a User", + "layout": { + "columns": 4, + "offset": 4, + }, + "model": "custom.idPath", + "onChangeEvent": {}, + "options": { + "object": "user", + "queryFilter": "true", + }, + "readOnly": false, + "type": "select", + "validation": { + "required": true, + }, + }, + ], + "id": "e530afc3-db58-460d-b5d9-687b54a0c381", + }, + { + "fields": [ + { + "customSlot": false, + "defaultValue": "", + "description": "", + "id": "d460e467-933f-42e6-93ef-d61e43dbb6f1", + "label": "RAP", + "layout": { + "columns": 4, + "offset": 4, + }, + "model": "custom.rap", + "onChangeEvent": {}, + "readOnly": true, + "type": "string", + "validation": { + "regex": {}, + "required": true, + }, + }, + ], + "id": "f31def11-67b0-4f20-855c-d0230901703e", + }, + ], + }, + "id": "69c4d900-ff3c-400f-8d18-037693ade1fc", + "metadata": {}, + "name": "pgh-generate-rap", + "type": "request", + }, + "82db6f64-5aa7-4b13-b1ce-e87e988b5199": { + "assignments": [ + { + "formId": "82db6f64-5aa7-4b13-b1ce-e87e988b5199", + "metadata": {}, + "objectId": "requestType/e58d2089-3e92-4a0b-b0fa-3ac6d4251877", + }, + { + "formId": "82db6f64-5aa7-4b13-b1ce-e87e988b5199", + "metadata": {}, + "objectId": "workflow/jhNeCreateTest2/node/approvalTask-6649e6d6f2a3", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "", + "form": { + "events": {}, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "id": "ab1f399d-0c05-4eae-9b50-bb77bf99c459", + "label": "First Name", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "custom.givenName", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "344817b4-9384-4ff7-a312-1e52f4c4f7ce", + }, + ], + }, + "id": "82db6f64-5aa7-4b13-b1ce-e87e988b5199", + "metadata": {}, + "name": "jh-ne-create-test-2", + "type": "request", + }, + "9c10b680-a790-4f73-95ed-81b345f0f3e9": { + "assignments": [ + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": {}, + "objectId": "requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252", + }, + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": {}, + "objectId": "workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac", + }, + ], + "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": {}, + "name": "phh-delegated-user-disable-form", + "type": "request", + }, + "9e3fc668-4e96-4b03-9605-38b830bea26c": { + "assignments": [ + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": {}, + "objectId": "requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc", + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": {}, + "objectId": "workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915", + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": {}, + "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": {}, + "name": "test_workflow_request_form_2", + "type": "request", + }, + "c385b530-b912-4dcd-98c8-931673add9b7": { + "assignments": [ + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": {}, + "objectId": "workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d", + }, + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": {}, + "objectId": "requestType/8d0055b3-155f-4885-a415-4f1c536098e8", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "Request new user", + "form": { + "events": { + "onLoad": { + "script": "form.hideField('custom.positionOther'); +form.setValue('custom.positionOther', ''); + + +// Pre-populate a read-only field with data from the request +var requestedMail = form.urlParams['custom.mail']; +if (requestedMail) { + form.setValue('custom.mail', requestedMail); + form.disableField('custom.mail'); // Make it read-only for the approver +}", + "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": {}, + "name": "phh-new-user", + "type": "request", + }, + "ddd56024-02ef-4c14-8bce-7b8bf4649b99": { + "assignments": [ + { + "formId": "ddd56024-02ef-4c14-8bce-7b8bf4649b99", + "metadata": {}, + "objectId": "requestType/0ece99b4-5039-4bd6-b31c-de14bcf45f11", + }, + { + "formId": "ddd56024-02ef-4c14-8bce-7b8bf4649b99", + "metadata": {}, + "objectId": "workflow/phhFlow/node/approvalTask-bf52ce203a81", + }, + ], + "categories": { + "applicationType": null, + "objectType": null, + "operation": "create", + }, + "description": "", + "form": { + "events": {}, + "fields": [ + { + "fields": [ + { + "customSlot": false, + "description": "Type here", + "id": "998bfc8d-6fbc-487d-8c77-bb5fe5603d96", + "label": "phhText", + "layout": { + "columns": 12, + "offset": 0, + }, + "model": "custom.phhText", + "onChangeEvent": {}, + "readOnly": false, + "type": "string", + "validation": { + "required": true, + }, + }, + ], + "id": "7efdd73f-2a18-4861-ac45-e9c1f26f1d91", + }, + ], + }, + "id": "ddd56024-02ef-4c14-8bce-7b8bf4649b99", + "metadata": {}, + "name": "phhForm", + "type": "request", + }, + "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9": { + "assignments": [ + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": {}, + "objectId": "workflow/testWorkflow1/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": {}, + "objectId": "workflow/testWorkflow2/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": {}, + "objectId": "workflow/testWorkflow3/node/approvalTask-7e33e73d6763", + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": {}, + "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": {}, + "name": "test_workflow_request_form_1", + "type": "applicationRequest", + }, + }, + "requestType": { + "0ece99b4-5039-4bd6-b31c-de14bcf45f11": { + "custom": true, + "displayName": "phhType", + "id": "0ece99b4-5039-4bd6-b31c-de14bcf45f11", + "metadata": {}, + "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": { + "phhText": { + "display": { + "isVisible": true, + "name": "phhText", + "order": 1, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true, + }, + }, + "type": "system", + }, + "properties": { + "phhText": { + "type": "text", + }, + }, + }, + ], + }, + "workflow": { + "id": "phhFlow", + }, + }, + "35daadd6-bc63-47b5-a0e5-7756dfbdf229": { + "custom": true, + "displayName": "pgh-generate-rap", + "id": "35daadd6-bc63-47b5-a0e5-7756dfbdf229", + "metadata": {}, + "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": { + "idPath": { + "display": { + "isVisible": true, + "name": "ID Path", + "order": 1, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true, + }, + "rap": { + "display": { + "isVisible": true, + "name": "RAP", + "order": 2, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false, + }, + }, + "type": "system", + }, + "properties": { + "idPath": { + "type": "text", + }, + "rap": { + "type": "text", + }, + }, + }, + ], + }, + "validation": null, + "workflow": { + "id": "pghGenerateRap", + }, + }, + "3eb082e7-68f2-409f-9423-26e771259dc8": { + "custom": true, + "displayName": "test_workflow_request_type_4", + "id": "3eb082e7-68f2-409f-9423-26e771259dc8", + "metadata": {}, + "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", + }, + }, + "47b0e373-a9df-477d-986f-4aa64317ebed": { + "custom": true, + "displayName": "tmp", + "id": "47b0e373-a9df-477d-986f-4aa64317ebed", + "metadata": {}, + "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", + }, + }, + }, + ], + }, + "workflow": { + "id": "basicEntitlementGrantCopy", + }, + }, + "822e832b-865a-4b9a-9b35-8c9765c6a515": { + "custom": true, + "displayName": "phhCustomRequestType", + "id": "822e832b-865a-4b9a-9b35-8c9765c6a515", + "metadata": {}, + "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": { + "teamNumber": { + "display": { + "isVisible": true, + "name": "Team Number", + "order": 1, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true, + }, + }, + "type": "system", + }, + "properties": { + "teamNumber": { + "type": "text", + }, + }, + }, + ], + }, + "validation": null, + "workflow": { + "id": "phhCustomWorkflow", + }, + }, + "8d0055b3-155f-4885-a415-4f1c536098e8": { + "custom": true, + "displayName": "phh-create-user", + "id": "8d0055b3-155f-4885-a415-4f1c536098e8", + "metadata": {}, + "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, + }, + "mobile": { + "display": { + "isVisible": true, + "name": "Cell number", + "order": 8, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false, + }, + "positionOther": { + "display": { + "isVisible": true, + "name": "Position Other", + "order": 7, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false, + }, + "positionSelect": { + "display": { + "isVisible": true, + "name": "Position Select", + "order": 6, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": false, + }, + "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", + }, + "mobile": { + "type": "text", + }, + "positionOther": { + "type": "text", + }, + "positionSelect": { + "type": "text", + }, + "sn": { + "type": "text", + }, + "startDate": { + "type": "text", + }, + }, + }, + ], + }, + "workflow": { + "id": "phhNewUserCreate", + }, + }, + "af4a6f84-f9a9-4f8d-82ae-649639debabc": { + "custom": true, + "customValidation": null, + "displayName": "test_workflow_request_type_5", + "id": "af4a6f84-f9a9-4f8d-82ae-649639debabc", + "metadata": {}, + "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": {}, + }, + "e58d2089-3e92-4a0b-b0fa-3ac6d4251877": { + "custom": true, + "displayName": "jh-ne-create-test-2", + "id": "e58d2089-3e92-4a0b-b0fa-3ac6d4251877", + "metadata": {}, + "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": { + "givenName": { + "display": { + "isVisible": true, + "name": "First Name", + "order": 1, + }, + "isInternal": false, + "isMultiValue": false, + "isRequired": true, + }, + }, + "type": "system", + }, + "properties": { + "givenName": { + "type": "text", + }, + }, + }, + ], + }, + "validation": { + "source": "// Example validation script +// var validation = {"errors" : [], "comments" : []}; +// if ( +// systemSettings.settings.requireRequestJustification === true +// && (request.common.justification == undefined +// || request.common.justification.trim() == '')) { +// validation.errors.push("Justification is required"); +// } +// validation;", + }, + "workflow": { + "id": "jhNeCreateTest2", + }, + }, + "e9dcd66e-1388-4872-9790-66df2f44deef": { + "custom": true, + "customValidation": null, + "displayName": "test_workflow_request_type_1", + "id": "e9dcd66e-1388-4872-9790-66df2f44deef", + "metadata": {}, + "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": "testWorkflow1", + }, + }, + "entitlementGrant": { + "custom": false, + "customValidation": null, + "displayName": "Grant Entitlement", + "id": "entitlementGrant", + "metadata": {}, + "notModifiableProperties": [ + "common.userId", + "common.entitlementId", + "common.requestIdPrefix", + ], + "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", + }, + }, + }, + { + "_meta": { + "displayName": "entitlementGrant", + "properties": { + "entitlementId": { + "display": { + "description": "The entitlement that should be granted to the user (assignment id)", + "isVisible": true, + "name": "Entitlement", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "assignment/id/keyword eq "\${entitlementId}" and item/type/keyword eq "entitlementGrant"", + }, + }, + "userId": { + "display": { + "description": "The user who should be granted the entitlement", + "isVisible": true, + "name": "User", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user", + }, + }, + }, + "type": "system", + }, + "properties": { + "entitlementId": { + "type": "text", + }, + "userId": { + "type": "text", + }, + }, + }, + ], + }, + "schemes": {}, + "uniqueKeys": [ + "common.userId", + "common.entitlementId", + ], + "validation": { + "source": "var validation = {"errors" : [], "comments" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == "")){ validation.errors.push("Justification is required");} validation;", + }, + "workflow": { + "id": "custom1BasicEntitlementGrant", + "type": "bpmn", + }, + }, + "fdf9e9a1-b5cf-496a-821b-e7b3d5841252": { + "custom": true, + "displayName": "phh-delegate-user-disable-type", + "id": "fdf9e9a1-b5cf-496a-821b-e7b3d5841252", + "metadata": {}, + "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": [ + {}, + ], + }, + "validation": null, + "workflow": { + "id": "phhDelegatedUserDisableWorkflow", + }, + }, + "roleGrant": { + "custom": false, + "customValidation": null, + "displayName": "Grant Role", + "id": "roleGrant", + "metadata": {}, + "notModifiableProperties": [ + "common.userId", + "common.roleId", + "common.requestIdPrefix", + ], + "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", + }, + }, + }, + { + "_meta": { + "properties": { + "roleId": { + "display": { + "description": "The role that the user will have assigned", + "isVisible": true, + "name": "Role", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "role/id/keyword eq "\${roleId}" and item/type/keyword eq "roleMembership"", + }, + }, + "userId": { + "display": { + "description": "The user who is getting the role assigned to", + "isVisible": true, + "name": "User", + "order": 1, + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user", + }, + }, + }, + "type": "system", + }, + "properties": { + "roleId": { + "type": "text", + }, + "userId": { + "type": "text", + }, + }, + }, + ], + }, + "uniqueKeys": [ + "common.userId", + "common.roleId", + ], + "validation": { + "source": "var validation = {"errors" : [], "comments" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == "")){ validation.errors.push("Justification is required");} validation;", + }, + "workflow": { + "id": "testWorkflow9", + "type": "bpmn", + }, + }, + }, + "variable": {}, + "workflow": { + "basicApplicationGrantCopy": { + "draft": null, + "published": { + "childType": false, + "description": "BasicApplicationGrant-copy", + "displayName": "BasicApplicationGrant-copy", + "id": "basicApplicationGrantCopy", + "mutable": true, + "name": "BasicApplicationGrant-copy", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 942, + "y": 82, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 683, + "y": 154, + }, + "exclusiveGateway-621c9996676a": { + "x": 454, + "y": 88.015625, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "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": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "try { +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); +} catch (e) { + logger.error(e.message) +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "approvalTask-74cf85c35437", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + }, + "basicEntitlementGrantCopy": { + "draft": { + "childType": false, + "description": "BasicEntitlementGrant-copy", + "displayName": "BasicEntitlementGrant-copy", + "id": "basicEntitlementGrantCopy", + "mutable": true, + "name": "BasicEntitlementGrant-copy", + "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, + }, + "exclusiveGateway-89dc2f9576ee": { + "x": 452, + "y": 488.015625, + }, + "exclusiveGateway-ad04bf17ac62": { + "x": 336, + "y": 306.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-55aced130632": { + "x": 686, + "y": 351.015625, + }, + "scriptTask-91769554db51": { + "x": 2561, + "y": 74.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1441, + "y": 268.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 185, + "y": 143.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 716, + "y": 73.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', {}, {}); + failureReason = "Request Object" + requestObj + ":"; + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason += " Validation failed: Error reading request with id " + requestId + "More detail is content:" + content; +} + +// 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-ad04bf17ac62", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, skipApproval, entitlementType, entitlementId, userId, failureReason + */ + +logger.info("BasicEntitlementGrant (Custom) - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; + + // Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // --- Context check (admin requests skip approval) --- + 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; + } + // --- User --- + userId = requestObj.request.common.userId; + + // --- Entitlement type routing --- + // The entitlement object on the request exposes a 'type' field. + // Internal/system roles exposed as entitlements should carry type: 'custom'. + if (requestObj.entitlement && requestObj.entitlement.type) { + entitlementType = requestObj.entitlement.type; + entitlementId = requestObj.entitlement.id; + } else { + // Fallback: treat as standard if type is absent + entitlementType = 'standard'; + } + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason);", + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Type Gateway", + "name": "exclusiveGateway-ad04bf17ac62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "entitlementType != 'custom'", + "outcome": "validationSuccess", + "step": "exclusiveGateway-67a954f33919", + }, + { + "condition": "entitlementType == 'custom'", + "outcome": "validationFailure", + "step": "exclusiveGateway-89dc2f9576ee", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-89dc2f9576ee", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-55aced130632", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Request Approved", + "name": "scriptTask-55aced130632", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "BasicEntitlementGrant-copy", + "displayName": "BasicEntitlementGrant-copy", + "id": "basicEntitlementGrantCopy", + "mutable": true, + "name": "BasicEntitlementGrant-copy", + "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, + }, + "exclusiveGateway-89dc2f9576ee": { + "x": 452, + "y": 488.015625, + }, + "exclusiveGateway-ad04bf17ac62": { + "x": 336, + "y": 306.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-55aced130632": { + "x": 686, + "y": 351.015625, + }, + "scriptTask-91769554db51": { + "x": 2561, + "y": 74.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1441, + "y": 268.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 185, + "y": 143.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 716, + "y": 73.015625, + }, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 1208, + "y": 30.015625, + }, + }, + }, + "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', {}, {}); + failureReason = "Request Object" + requestObj + ":"; + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason += " Validation failed: Error reading request with id " + requestId + "More detail is content:" + content; +} + +// 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-ad04bf17ac62", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, skipApproval, entitlementType, entitlementId, userId, failureReason + */ + +logger.info("BasicEntitlementGrant (Custom) - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; + + // Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // --- Context check (admin requests skip approval) --- + 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; + } + // --- User --- + userId = requestObj.request.common.userId; + + // --- Entitlement type routing --- + // The entitlement object on the request exposes a 'type' field. + // Internal/system roles exposed as entitlements should carry type: 'custom'. + if (requestObj.entitlement && requestObj.entitlement.type) { + entitlementType = requestObj.entitlement.type; + entitlementId = requestObj.entitlement.id; + } else { + // Fallback: treat as standard if type is absent + entitlementType = 'standard'; + } + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason);", + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Type Gateway", + "name": "exclusiveGateway-ad04bf17ac62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "entitlementType != 'custom'", + "outcome": "validationSuccess", + "step": "exclusiveGateway-67a954f33919", + }, + { + "condition": "entitlementType == 'custom'", + "outcome": "validationFailure", + "step": "exclusiveGateway-89dc2f9576ee", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-89dc2f9576ee", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-55aced130632", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Request Approved", + "name": "scriptTask-55aced130632", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + }, + "createNonEmployee": { + "draft": null, + "published": { + "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": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "script", + "expirationDate": 1, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 716, + "y": 169, + }, + "exclusiveGateway-abbb089758c8": { + "x": 433, + "y": 89.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 986, + "y": 48.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 988, + "y": 222.015625, + }, + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 112.015625, + }, + "scriptTask-e8842de66fbb": { + "x": 718, + "y": 43.015625, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + "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()+(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; + + var comment = {'comment': JSON.stringify(payload)}; + openidm.action('iga/governance/requests/' + requestId, 'POST', comment, queryParams); + } + 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", + }, + }, + "createUserJh": { + "draft": { + "childType": false, + "description": "CreateUser - JH", + "displayName": "CreateUser - JH", + "id": "createUserJh", + "mutable": true, + "name": "CreateUser - JH", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1694, + "y": 154, + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + "x": 12, + "y": 110, + }, + "uiConfig": { + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 112.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "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 { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var requester = requestObj.requester + + var comment = { 'comment': JSON.stringify(requestObj) } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +} +catch (e) { + logger.info("Request permission check failed: " + e.message); +} + +execution.setVariable("skipApproval", skipApproval);", + }, + "type": "scriptTask", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "custom1BasicEntitlementGrant": { + "draft": null, + "published": { + "childType": false, + "description": "custom-1-BasicEntitlementGrant", + "displayName": "custom-1-BasicEntitlementGrant", + "id": "custom1BasicEntitlementGrant", + "mutable": true, + "name": "custom-1-BasicEntitlementGrant", + "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": "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": "Custom 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; +var authzRoleId = content.get('authzRoleId'); + +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); + + + // --- Conditional authzRoles patch for custom/internal role entitlements --- + if (entitlementType === 'custom' && accountAttribute === 'authzRoles') { + try { + openidm.patch( + 'managed/alpha_user/' + request.common.userId, + null, + [{ + "operation": "add", + "field": "/authzRoles/-", + "value": { "_ref": "internal/role/" + authzRoleId } + }] + ); + logger.info("custom-BasicEntitlementGrant - authzRoles patch successful" + + " | userId: " + request.common.userId + + " | entitlementId: " + authzRoleId); + } catch (e) { + failureReason = "Provisioning succeeded but authzRoles patch failed" + + " for user " + request.common.userId + + " and entitlement " + authzRoleId + + ". Error: " + e.message; + logger.error(failureReason); + } + } + + } + 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": "Custom Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, waits, skipApproval, entitlementType, entitlementId, userId, failureReason, accountAttribute, authzRoleId + */ + +logger.info("custom-BasicEntitlementGrant - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; +var accountAttribute = null; +var authzRoleId = null; + +// Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // --- Context check --- + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + + // --- Wait flags --- + if (requestObj.request.common.startDate) { + enableWait = true; + } + if (requestObj.request.common.endDate) { + enableEndWait = true; + } + + // --- User --- + userId = requestObj.request.common.userId; + + // --- Entitlement ID --- + entitlementId = requestObj.request.common.entitlementId; + + // Entitlement type + if (entitlementId) { + try { + var entitlementObj = openidm.action('iga/governance/entitlement/' + entitlementId, 'GET', {}, {}); + if (entitlementObj + && entitlementObj.glossary + && entitlementObj.glossary.idx + && entitlementObj.glossary.idx['/entitlement'] + && entitlementObj.glossary.idx['/entitlement'].entitlementType) { + + entitlementType = entitlementObj.glossary.idx['/entitlement'].entitlementType; + + } else { + entitlementType = 'standard'; + } + + // --- authzRoleId --- + if (entitlementObj + && entitlementObj.entitlement + && entitlementObj.entitlement._id) { + + authzRoleId = entitlementObj.entitlement._id; + + } + + // --- accountAttribute --- + accountAttribute = (entitlementObj + && entitlementObj.item + && entitlementObj.item.accountAttribute) + ? entitlementObj.item.accountAttribute + : null; + } catch (e) { + logger.warn("Entitlement lookup error: " + e.message); + + entitlementType = 'standard'; + } + } else { + entitlementType = 'standard'; + } + + // --- Log comment to request audit trail --- + try { + var logComment = "Context & Type Check" + + " | userId: " + userId + + " | context: " + context + + " | entitlementId: " + entitlementId + + " | entitlementType: " + entitlementType + + " | skipApproval: " + skipApproval + + " | authzRoleId: " + authzRoleId; + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason); +execution.setVariable("accountAttribute", accountAttribute); +execution.setVariable("authzRoleId", authzRoleId);", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom 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" +} +var entitlementType = content.get('entitlementType'); + +try { + var decision = { + "decision": "approved", + } + if(skipApproval && entitlementType == 'custom'){ + decision.comment = "Custom request auto-approved due to request context: " + context; + } + else 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": { + "events": null, + "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", + }, + }, + "customBasicEntitlementGrant": { + "draft": null, + "published": { + "childType": false, + "description": "custom-BasicEntitlementGrant", + "displayName": "custom-BasicEntitlementGrant", + "id": "customBasicEntitlementGrant", + "mutable": true, + "name": "custom-BasicEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2873, + "y": 976, + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + "x": 184, + "y": 470, + }, + "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": 998, + "y": 810, + }, + "exclusiveGateway-26e6b56a6d6b": { + "x": 736, + "y": 231.03125, + }, + "exclusiveGateway-48e748c42994": { + "x": 2007, + "y": 742.015625, + }, + "exclusiveGateway-526a06894733": { + "x": 571, + "y": 458, + }, + "exclusiveGateway-67a954f33919": { + "x": 743, + "y": 775.015625, + }, + "inclusiveGateway-3f85f36eeeef": { + "x": 1224, + "y": 711.015625, + }, + "inclusiveGateway-f105ed2b352d": { + "x": 2531, + "y": 702.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 2248, + "y": 773.015625, + }, + "scriptTask-0b56191887de": { + "x": 2255, + "y": 866.015625, + }, + "scriptTask-3eab1948f1ec": { + "x": 1710, + "y": 749.015625, + }, + "scriptTask-6dc428f459a8": { + "x": 1026, + "y": 152.515625, + }, + "scriptTask-91769554db51": { + "x": 2837, + "y": 728.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1717, + "y": 922.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 300, + "y": 472.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 992, + "y": 728.015625, + }, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 1484, + "y": 684.015625, + }, + }, + }, + "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-526a06894733", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, waits, skipApproval, entitlementType, entitlementId, userId, failureReason, accountAttribute + */ + +logger.info("custom-BasicEntitlementGrant - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; +var accountAttribute = null; + +// Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // Context check (admin requests skip approval) + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + + // Optional Waits + if (requestObj.request.common.startDate) { + enableWait = true; + } + if (requestObj.request.common.endDate) { + enableEndWait = true; + } + + // User + userId = requestObj.request.common.userId; + + // Entitlement ID + entitlementId = requestObj.request.common.entitlementId; + + // Entitlement type + if (entitlementId) { + try { + var entitlementObj = openidm.action('iga/governance/entitlement/' + entitlementId, 'GET', {}, {}); + if (entitlementObj + && entitlementObj.glossary + && entitlementObj.glossary.idx + && entitlementObj.glossary.idx['/entitlement'] + && entitlementObj.glossary.idx['/entitlement'].entitlementType) { + + entitlementType = entitlementObj.glossary.idx['/entitlement'].entitlementType; + + } else { + entitlementType = 'standard'; + } + + // accountAttribute for provisioning node + accountAttribute = (entitlementObj + && entitlementObj.item + && entitlementObj.item.accountAttribute) + ? entitlementObj.item.accountAttribute + : null; + } catch (e) { + logger.warn("Entitlement lookup error: " + e.message); + + entitlementType = 'standard'; + } + } else { + entitlementType = 'standard'; + } + + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId + " | AuthzRoleId: " + authzRoleId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason); +execution.setVariable("accountAttribute", accountAttribute); +", + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-526a06894733", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "entitlementType == 'custom'", + "outcome": "validationSuccess", + "step": "exclusiveGateway-26e6b56a6d6b", + }, + { + "condition": "entitlementType != 'custom'", + "outcome": "validationFailure", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-26e6b56a6d6b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-6dc428f459a8", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Auto Approval", + "name": "scriptTask-6dc428f459a8", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + }, + "jhNeCreateTest2": { + "draft": null, + "published": { + "childType": false, + "description": "jh-ne-create-test-2", + "displayName": "jh-ne-create-test-2", + "id": "jhNeCreateTest2", + "mutable": true, + "name": "jh-ne-create-test-2", + "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": 1463, + "y": 262, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-2131bbe3663d", + }, + "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-6649e6d6f2a3": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + }, + "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": 606.3999938964844, + "y": 431.6125030517578, + }, + "emailTask-731854fb34db": { + "x": 1119.3999938964844, + "y": 107.61250305175781, + }, + "exclusiveGateway-69f93dd39054": { + "x": 394.3999938964844, + "y": 252.6125030517578, + }, + "scriptTask-2131bbe3663d": { + "x": 156.39999389648438, + "y": 252.6125030517578, + }, + "scriptTask-c174d2210667": { + "x": 814.3999938964844, + "y": 43.61250305175781, + }, + "scriptTask-f2a2d7eee947": { + "x": 821.3999938964844, + "y": 298.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Permissions Check", + "name": "scriptTask-2131bbe3663d", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-69f93dd39054", + }, + ], + "script": "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 Approve Gateway", + "name": "exclusiveGateway-69f93dd39054", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApprove", + "step": "scriptTask-c174d2210667", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-6649e6d6f2a3", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + "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-f2a2d7eee947", + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6649e6d6f2a3", + "type": "approvalTask", + }, + { + "displayName": "Mark Approved", + "name": "scriptTask-c174d2210667", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-731854fb34db", + }, + ], + "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": ""Create" User", + "name": "scriptTask-f2a2d7eee947", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-731854fb34db", + }, + ], + "script": "logger.info("Creating User"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var request = 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 { + request = requestObj.request; + + + + // var payload = { + // "userName": request.custom.userName, + // "givenName": request.custom.givenName, + // "sn": request.custom.sn, + // "mail": request.custom.mail, + // "password": 'DemoP@ssword1' + // }; + + /** Create new user **/ + // var result = openidm.create('managed/alpha_user', null, payload, queryParams); + + // /** Send new user email **/ + // var body = { + // subject: "Welcome " + payload.givenName + " " + payload.sn + "!", + // to: payload.mail, + // body: "Your new user has been created in the system.\\n\\nUsername: " + payload.userName + "\\nPassword: " + payload.password + "\\n\\nLogin to your account here: https://openam-gov-dev-4.forgeblocks.com/am/XUI/?realm=/alpha#/", + // object: {} + // }; + // openidm.action("external/email", "send", body); + } + catch (e) { + failureReason = "Creating user failed: Error during creation of user " + request.custom.userName + ". Error message: " + e.message; + } + + var decision = {'status': 'complete', 'decision': 'approved', "comment": JSON.stringify(request)}; + 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": "Account Creation Email", + "emailTask": { + "bcc": "", + "cc": "", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": null, + }, + { + "condition": null, + "outcome": "FAILED", + "step": null, + }, + ], + "object": { + "cn": "9959348", + "custom_DisplayName": "Jack Hatton", + "custom_LocationName": "remote", + "custom_siteLocation": "remote", + "manager": "test", + }, + "templateName": "staffNe1AccountCreation", + "to": "jhatton@trivir.com", + }, + "name": "emailTask-731854fb34db", + "type": "emailTask", + }, + ], + }, + }, + "pghGenerateRap": { + "draft": null, + "published": { + "childType": false, + "description": "pgh-generate-rap", + "displayName": "pgh-generate-rap", + "id": "pghGenerateRap", + "mutable": true, + "name": "pgh-generate-rap", + "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": 1156, + "y": 151, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-115d1ab72679", + }, + "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": { + "exclusiveGateway-2d4351f5c77b": { + "x": 451, + "y": 126.5, + }, + "fulfillmentTask-f49f20d19149": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDateType": "duration", + "expirationDateVariable": "", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 683, + "y": 126.5, + }, + "scriptTask-115d1ab72679": { + "x": 208, + "y": 158, + }, + "scriptTask-5a2b73dd9dd2": { + "x": 916, + "y": 80, + }, + "scriptTask-6f260211dc0f": { + "x": 916, + "y": 226, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Generate RAP", + "name": "scriptTask-115d1ab72679", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-2d4351f5c77b", + }, + ], + "script": "function getPublishedWorkflow(workflowId) { + return openidm.action(\`iga/governance/workflow/\${workflowId}/published\`, 'GET', {}, {}); +} + +function getRequestType(requestTypeId) { + return openidm.action(\`iga/governance/requestTypes/\${requestTypeId}\`, 'GET', {}, {}); +} + +function getRequest() { + var requestId = execution.getVariables().get('id'); + return openidm.action(\`iga/governance/requests/\${requestId}\`, 'GET', {}, {}); +} + +function modifyRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') }); +} + +function updateRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', body, { _action: "update" }); +} + +function commentRequest(message, isFail) { + return updateRequest({ comment: message, failure: !!isFail }); +} + +function main() { + var isSuccessful = false; + try { + var request = getRequest(); + + // Get user ID + var idPath = request.request.custom.idPath; + var userId = idPath.split('/').pop(); + execution.setVariable("idPath", idPath); + + // Get script ID for the phase name + var requestType = getRequestType(request.requestType); + var workflow = getPublishedWorkflow(requestType.workflow.id); + execution.setVariable("phaseName", workflow.staticNodes.startNode.connections.start); + + // Generate RAP + var response = openidm.action('endpoint/helpdesk-rap/generate/' + userId, 'create', {}, {}); + modifyRequest({ + common: { + isDraft: false, + context: { + type: "request" + } + }, + custom: { + idPath: idPath, + rap: response.rap + } + }); + isSuccessful = true; + } catch (e) { + commentRequest("Error generating RAP. Error message: " + e.message, true); + } finally { + execution.setVariable("isSuccessful", isSuccessful); + } +} + +main(); +", + }, + "type": "scriptTask", + }, + { + "displayName": "Is Successful", + "name": "exclusiveGateway-2d4351f5c77b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "isSuccessful == true", + "outcome": "success", + "step": "fulfillmentTask-f49f20d19149", + }, + { + "condition": "isSuccessful == false", + "outcome": "error", + "step": "scriptTask-6f260211dc0f", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approve", + "name": "scriptTask-5a2b73dd9dd2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "function updateRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "update" }); +} + +function modifyRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') }); +} + +function commentRequest(message, isFail) { + return updateRequest({ comment: message, failure: isFail }); +} + +function approveRequest() { + updateRequest({ + outcome: 'fulfilled', + status: 'complete', + decision: 'approved' + }); +} + +function main() { + try { + modifyRequest({ + common: { + isDraft: false, + context: { + type: "request" + } + }, + custom: { + idPath: execution.getVariables().get('idPath'), + rap: "" + } + }); + approveRequest(); + } catch (e) { + commentRequest("Failure auto-approving RAP request. Error message: " + e.message, true); + } +} + +main(); +", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Reject", + "name": "scriptTask-6f260211dc0f", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "function updateRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "update" }); +} + +function modifyRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') }); +} + +function commentRequest(message, isFail) { + return updateRequest({ comment: message, failure: isFail }); +} + +function rejectRequest() { + updateRequest({ + outcome: 'cancelled', + status: 'complete', + decision: 'rejected' + }); +} + +function main() { + try { + modifyRequest({ + common: { + isDraft: false, + context: { + type: "request" + } + }, + custom: { + idPath: execution.getVariables().get('idPath'), + rap: "" + } + }); + rejectRequest(); + } catch (e) { + commentRequest("Failure auto-rejecting RAP request. Error message: " + e.message, true); + } +} + +main(); +", + }, + "type": "scriptTask", + }, + { + "displayName": "Confirm RAP", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "scriptTask-5a2b73dd9dd2", + }, + { + "condition": null, + "outcome": "DENY", + "step": "scriptTask-6f260211dc0f", + }, + ], + }, + "name": "fulfillmentTask-f49f20d19149", + "type": "fulfillmentTask", + }, + ], + }, + }, + "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": { + "events": null, + "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": { + "events": null, + "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", + }, + ], + }, + }, + "phhCustomWorkflow": { + "draft": { + "childType": false, + "description": "phhCustomWorkflow", + "displayName": "phhCustomWorkflow", + "id": "phhCustomWorkflow", + "mutable": true, + "name": "phhCustomWorkflow", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 955, + "y": 174, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 448, + "y": 124, + }, + "scriptTask-0e5b6187ea62": { + "x": 683, + "y": 128.015625, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + "scriptTask-c58309b8c470": { + "x": 688, + "y": 207, + }, + }, + }, + "status": "draft", + "steps": [ + { + "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", + }, + "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-74cf85c35437", + "type": "approvalTask", + }, + { + "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": "approvalTask-74cf85c35437", + }, + ], + "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-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "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", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + "phhDelegatedUserDisableWorkflow": { + "draft": { + "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": "draft", + "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", + }, + ], + }, + "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", + }, + ], + }, + }, + "phhFlow": { + "draft": null, + "published": { + "childType": false, + "description": "phhFlow", + "displayName": "phhFlow", + "id": "phhFlow", + "mutable": true, + "name": "phhFlow", + "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": 564, + "y": 312, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-10bf48033687", + }, + "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-bf52ce203a81": { + "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(){ +// --- Log comment to request audit trail --- + try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var logComment = "Context Check" + + " | applicationOwner: " + requestObj.applicationOwner[0].id + + " | full dump: " + JSON.stringify(requestObj); + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } + return []; +} +)() +", + }, + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 153.39999389648438, + "y": 268.6125030517578, + }, + "scriptTask-10bf48033687": { + "x": 162.39999389648438, + "y": 140.6125030517578, + }, + "scriptTask-610744f7d369": { + "x": 357.3999938964844, + "y": 370.6125030517578, + }, + "scriptTask-c28119ea007e": { + "x": 360.3999938964844, + "y": 256.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Context Check", + "name": "scriptTask-10bf48033687", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "approvalTask-bf52ce203a81", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + } + // --- Log comment to request audit trail --- + try { + var logComment = "Context Check" + + " | full dump: " + JSON.stringify(requestObj); + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } +} +catch (e) { + logger.info("Request Context Check failed "+e.message); +} + +logger.info("Context: " + context); +execution.setVariable("context", context);", + }, + "type": "scriptTask", + }, + { + "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(){ +// --- Log comment to request audit trail --- + try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var logComment = "Context Check" + + " | applicationOwner: " + requestObj.applicationOwner[0].id + + " | full dump: " + JSON.stringify(requestObj); + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } + return []; +} +)() +", + }, + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c28119ea007e", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-610744f7d369", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-bf52ce203a81", + "type": "approvalTask", + }, + { + "displayName": "Approve", + "name": "scriptTask-c28119ea007e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Approving 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': 'not provisioned', 'status': 'complete', 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Script Task", + "name": "scriptTask-610744f7d369", + "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", + }, + ], + }, + }, + "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": { + "events": null, + "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", + }, + }, + "test": { + "draft": { + "childType": false, + "description": "test", + "displayName": "test", + "id": "test", + "mutable": true, + "name": "test", + "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": "waitTask-4d9223fb79c5", + }, + "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": { + "waitTask-4d9223fb79c5": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 285.3999938964844, + "y": 211.22499084472656, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-4d9223fb79c5", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(1*30*24*60*60*1000))).toISOString()", + }, + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test", + "displayName": "test", + "id": "test", + "mutable": true, + "name": "test", + "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": "waitTask-4d9223fb79c5", + }, + "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": { + "waitTask-4d9223fb79c5": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 285.3999938964844, + "y": 211.22499084472656, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-4d9223fb79c5", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(1*30*24*60*60*1000))).toISOString()", + }, + }, + }, + ], + }, + }, + "test1": { + "draft": null, + "published": { + "childType": false, + "description": "test-1", + "displayName": "test-1", + "id": "test1", + "mutable": true, + "name": "test-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": 500, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "waitTask-d25ec611a5d8", + }, + "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": { + "waitTask-d25ec611a5d8": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "duration", + }, + "x": 307.22222900390625, + "y": 228.3472137451172, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-d25ec611a5d8", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + ], + }, + }, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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() { + 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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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() { + 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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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", + }, + ], + }, + }, + ], + }, + }, + "testWorkflow9": { + "draft": null, + "published": { + "childType": false, + "description": "testWorkflow9", + "displayName": "testWorkflow9", + "id": "testWorkflow9", + "mutable": true, + "name": "testWorkflow9", + "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-900ec6e95c71", + }, + "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-900ec6e95c71": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "duration", + "expirationDateVariable": "", + "reassignedActors": [], + }, + "x": 275.22222900390625, + "y": 187.3472137451172, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-900ec6e95c71", + "type": "approvalTask", + }, + ], + }, + }, + "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`] = ` +"✔ 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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": "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)", + }, + }, + "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": "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)", + }, + }, + "inclusiveGateway-a6cf9605ce55": {}, + "scriptTask-493f5ea87636": {}, + "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)", + }, + }, + "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": "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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`] = ` +"✔ 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": {}, + "requestForm": {}, + "requestType": { + "e9dcd66e-1388-4872-9790-66df2f44deef": { + "custom": false, + "customValidation": null, + "displayName": "test_workflow_request_type_1", + "id": "e9dcd66e-1388-4872-9790-66df2f44deef", + "metadata": {}, + "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": "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": "/** +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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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 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`] = ` +"✔ Exported 26 workflows +" +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/basicApplicationGrantCopy.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "BasicApplicationGrant-copy", + "displayName": "BasicApplicationGrant-copy", + "id": "basicApplicationGrantCopy", + "mutable": true, + "name": "BasicApplicationGrant-copy", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 942, + "y": 82, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 683, + "y": 154, + }, + "exclusiveGateway-621c9996676a": { + "x": 454, + "y": 88.015625, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "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": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-74cf85c35437", + "type": "approvalTask", + }, + { + "displayName": "Request Context Check", + "name": "scriptTask-4e9121fe850a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-621c9996676a", + }, + ], + "script": "try { +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); +} catch (e) { + logger.error(e.message) +}", + }, + "type": "scriptTask", + }, + { + "displayName": "Context Gateway", + "name": "exclusiveGateway-621c9996676a", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "approvalTask-74cf85c35437", + }, + { + "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 -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/basicEntitlementGrantCopy.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "BasicEntitlementGrant-copy", + "displayName": "BasicEntitlementGrant-copy", + "id": "basicEntitlementGrantCopy", + "mutable": true, + "name": "BasicEntitlementGrant-copy", + "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, + }, + "exclusiveGateway-89dc2f9576ee": { + "x": 452, + "y": 488.015625, + }, + "exclusiveGateway-ad04bf17ac62": { + "x": 336, + "y": 306.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-55aced130632": { + "x": 686, + "y": 351.015625, + }, + "scriptTask-91769554db51": { + "x": 2561, + "y": 74.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1441, + "y": 268.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 185, + "y": 143.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 716, + "y": 73.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', {}, {}); + failureReason = "Request Object" + requestObj + ":"; + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason += " Validation failed: Error reading request with id " + requestId + "More detail is content:" + content; +} + +// 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-ad04bf17ac62", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, skipApproval, entitlementType, entitlementId, userId, failureReason + */ + +logger.info("BasicEntitlementGrant (Custom) - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; + + // Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // --- Context check (admin requests skip approval) --- + 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; + } + // --- User --- + userId = requestObj.request.common.userId; + + // --- Entitlement type routing --- + // The entitlement object on the request exposes a 'type' field. + // Internal/system roles exposed as entitlements should carry type: 'custom'. + if (requestObj.entitlement && requestObj.entitlement.type) { + entitlementType = requestObj.entitlement.type; + entitlementId = requestObj.entitlement.id; + } else { + // Fallback: treat as standard if type is absent + entitlementType = 'standard'; + } + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason);", + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Type Gateway", + "name": "exclusiveGateway-ad04bf17ac62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "entitlementType != 'custom'", + "outcome": "validationSuccess", + "step": "exclusiveGateway-67a954f33919", + }, + { + "condition": "entitlementType == 'custom'", + "outcome": "validationFailure", + "step": "exclusiveGateway-89dc2f9576ee", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-89dc2f9576ee", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-55aced130632", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Request Approved", + "name": "scriptTask-55aced130632", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + "published": { + "childType": false, + "description": "BasicEntitlementGrant-copy", + "displayName": "BasicEntitlementGrant-copy", + "id": "basicEntitlementGrantCopy", + "mutable": true, + "name": "BasicEntitlementGrant-copy", + "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, + }, + "exclusiveGateway-89dc2f9576ee": { + "x": 452, + "y": 488.015625, + }, + "exclusiveGateway-ad04bf17ac62": { + "x": 336, + "y": 306.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-55aced130632": { + "x": 686, + "y": 351.015625, + }, + "scriptTask-91769554db51": { + "x": 2561, + "y": 74.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1441, + "y": 268.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 185, + "y": 143.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 716, + "y": 73.015625, + }, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 1208, + "y": 30.015625, + }, + }, + }, + "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', {}, {}); + failureReason = "Request Object" + requestObj + ":"; + applicationId = requestObj.application.id; + assignmentId = requestObj.assignment.id; +} +catch (e) { + failureReason += " Validation failed: Error reading request with id " + requestId + "More detail is content:" + content; +} + +// 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-ad04bf17ac62", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, skipApproval, entitlementType, entitlementId, userId, failureReason + */ + +logger.info("BasicEntitlementGrant (Custom) - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; + + // Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // --- Context check (admin requests skip approval) --- + 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; + } + // --- User --- + userId = requestObj.request.common.userId; + + // --- Entitlement type routing --- + // The entitlement object on the request exposes a 'type' field. + // Internal/system roles exposed as entitlements should carry type: 'custom'. + if (requestObj.entitlement && requestObj.entitlement.type) { + entitlementType = requestObj.entitlement.type; + entitlementId = requestObj.entitlement.id; + } else { + // Fallback: treat as standard if type is absent + entitlementType = 'standard'; + } + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason);", + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Type Gateway", + "name": "exclusiveGateway-ad04bf17ac62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "entitlementType != 'custom'", + "outcome": "validationSuccess", + "step": "exclusiveGateway-67a954f33919", + }, + { + "condition": "entitlementType == 'custom'", + "outcome": "validationFailure", + "step": "exclusiveGateway-89dc2f9576ee", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-89dc2f9576ee", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-55aced130632", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Request Approved", + "name": "scriptTask-55aced130632", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +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": null, + "published": { + "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": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "script", + "expirationDate": 1, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 716, + "y": 169, + }, + "exclusiveGateway-abbb089758c8": { + "x": 433, + "y": 89.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 986, + "y": 48.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 988, + "y": 222.015625, + }, + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 112.015625, + }, + "scriptTask-e8842de66fbb": { + "x": 718, + "y": 43.015625, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + "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()+(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; + + var comment = {'comment': JSON.stringify(payload)}; + openidm.action('iga/governance/requests/' + requestId, 'POST', comment, queryParams); + } + 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 -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/createUserJh.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "CreateUser - JH", + "displayName": "CreateUser - JH", + "id": "createUserJh", + "mutable": true, + "name": "CreateUser - JH", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 1694, + "y": 154, + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8", + }, + "id": "startNode", + "x": 12, + "y": 110, + }, + "uiConfig": { + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 112.015625, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Permission Check", + "name": "scriptTask-ca9504ae90d8", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "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 { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var requester = requestObj.requester + + var comment = { 'comment': JSON.stringify(requestObj) } + + var queryParams = { '_action': 'update'}; + openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams); +} +catch (e) { + logger.info("Request permission check failed: " + e.message); +} + +execution.setVariable("skipApproval", skipApproval);", + }, + "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/custom1BasicEntitlementGrant.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "custom-1-BasicEntitlementGrant", + "displayName": "custom-1-BasicEntitlementGrant", + "id": "custom1BasicEntitlementGrant", + "mutable": true, + "name": "custom-1-BasicEntitlementGrant", + "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": "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": "Custom 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; +var authzRoleId = content.get('authzRoleId'); + +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); + + + // --- Conditional authzRoles patch for custom/internal role entitlements --- + if (entitlementType === 'custom' && accountAttribute === 'authzRoles') { + try { + openidm.patch( + 'managed/alpha_user/' + request.common.userId, + null, + [{ + "operation": "add", + "field": "/authzRoles/-", + "value": { "_ref": "internal/role/" + authzRoleId } + }] + ); + logger.info("custom-BasicEntitlementGrant - authzRoles patch successful" + + " | userId: " + request.common.userId + + " | entitlementId: " + authzRoleId); + } catch (e) { + failureReason = "Provisioning succeeded but authzRoles patch failed" + + " for user " + request.common.userId + + " and entitlement " + authzRoleId + + ". Error: " + e.message; + logger.error(failureReason); + } + } + + } + 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": "Custom Request Context Check", + "name": "scriptTask-e04f42607ba5", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, waits, skipApproval, entitlementType, entitlementId, userId, failureReason, accountAttribute, authzRoleId + */ + +logger.info("custom-BasicEntitlementGrant - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; +var accountAttribute = null; +var authzRoleId = null; + +// Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // --- Context check --- + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + + // --- Wait flags --- + if (requestObj.request.common.startDate) { + enableWait = true; + } + if (requestObj.request.common.endDate) { + enableEndWait = true; + } + + // --- User --- + userId = requestObj.request.common.userId; + + // --- Entitlement ID --- + entitlementId = requestObj.request.common.entitlementId; + + // Entitlement type + if (entitlementId) { + try { + var entitlementObj = openidm.action('iga/governance/entitlement/' + entitlementId, 'GET', {}, {}); + if (entitlementObj + && entitlementObj.glossary + && entitlementObj.glossary.idx + && entitlementObj.glossary.idx['/entitlement'] + && entitlementObj.glossary.idx['/entitlement'].entitlementType) { + + entitlementType = entitlementObj.glossary.idx['/entitlement'].entitlementType; + + } else { + entitlementType = 'standard'; + } + + // --- authzRoleId --- + if (entitlementObj + && entitlementObj.entitlement + && entitlementObj.entitlement._id) { + + authzRoleId = entitlementObj.entitlement._id; + + } + + // --- accountAttribute --- + accountAttribute = (entitlementObj + && entitlementObj.item + && entitlementObj.item.accountAttribute) + ? entitlementObj.item.accountAttribute + : null; + } catch (e) { + logger.warn("Entitlement lookup error: " + e.message); + + entitlementType = 'standard'; + } + } else { + entitlementType = 'standard'; + } + + // --- Log comment to request audit trail --- + try { + var logComment = "Context & Type Check" + + " | userId: " + userId + + " | context: " + context + + " | entitlementId: " + entitlementId + + " | entitlementType: " + entitlementType + + " | skipApproval: " + skipApproval + + " | authzRoleId: " + authzRoleId; + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason); +execution.setVariable("accountAttribute", accountAttribute); +execution.setVariable("authzRoleId", authzRoleId);", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom 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" +} +var entitlementType = content.get('entitlementType'); + +try { + var decision = { + "decision": "approved", + } + if(skipApproval && entitlementType == 'custom'){ + decision.comment = "Custom request auto-approved due to request context: " + context; + } + else 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": { + "events": null, + "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 -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/customBasicEntitlementGrant.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "custom-BasicEntitlementGrant", + "displayName": "custom-BasicEntitlementGrant", + "id": "customBasicEntitlementGrant", + "mutable": true, + "name": "custom-BasicEntitlementGrant", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 2873, + "y": 976, + }, + "startNode": { + "connections": { + "start": "scriptTask-e04f42607ba5", + }, + "id": "startNode", + "x": 184, + "y": 470, + }, + "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": 998, + "y": 810, + }, + "exclusiveGateway-26e6b56a6d6b": { + "x": 736, + "y": 231.03125, + }, + "exclusiveGateway-48e748c42994": { + "x": 2007, + "y": 742.015625, + }, + "exclusiveGateway-526a06894733": { + "x": 571, + "y": 458, + }, + "exclusiveGateway-67a954f33919": { + "x": 743, + "y": 775.015625, + }, + "inclusiveGateway-3f85f36eeeef": { + "x": 1224, + "y": 711.015625, + }, + "inclusiveGateway-f105ed2b352d": { + "x": 2531, + "y": 702.015625, + }, + "scriptTask-0359a9d77ee2": { + "x": 2248, + "y": 773.015625, + }, + "scriptTask-0b56191887de": { + "x": 2255, + "y": 866.015625, + }, + "scriptTask-3eab1948f1ec": { + "x": 1710, + "y": 749.015625, + }, + "scriptTask-6dc428f459a8": { + "x": 1026, + "y": 152.515625, + }, + "scriptTask-91769554db51": { + "x": 2837, + "y": 728.015625, + }, + "scriptTask-aec6c36b3a45": { + "x": 1717, + "y": 922.015625, + }, + "scriptTask-e04f42607ba5": { + "x": 300, + "y": 472.015625, + }, + "scriptTask-e21178ab80f7": { + "x": 992, + "y": 728.015625, + }, + "waitTask-0d53639996da": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp", + }, + "x": 1484, + "y": 684.015625, + }, + }, + }, + "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-526a06894733", + }, + ], + "script": "/* + * Script Node: Context & Type Check + * Purpose: Reads request context and entitlement type to set routing outcomes. + * Sets: context, waits, skipApproval, entitlementType, entitlementId, userId, failureReason, accountAttribute + */ + +logger.info("custom-BasicEntitlementGrant - Context & Type Check"); + +var content = execution.getVariables(); +var requestId = content.get('id'); + +var context = null; +var enableWait = false; +var enableEndWait = false; +var skipApproval = false; +var entitlementType = null; +var entitlementId = null; +var userId = null; +var failureReason = null; +var accountAttribute = null; + +// Read request object +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + + // Context check (admin requests skip approval) + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + if (context == 'admin') { + skipApproval = true; + } + } + + // Optional Waits + if (requestObj.request.common.startDate) { + enableWait = true; + } + if (requestObj.request.common.endDate) { + enableEndWait = true; + } + + // User + userId = requestObj.request.common.userId; + + // Entitlement ID + entitlementId = requestObj.request.common.entitlementId; + + // Entitlement type + if (entitlementId) { + try { + var entitlementObj = openidm.action('iga/governance/entitlement/' + entitlementId, 'GET', {}, {}); + if (entitlementObj + && entitlementObj.glossary + && entitlementObj.glossary.idx + && entitlementObj.glossary.idx['/entitlement'] + && entitlementObj.glossary.idx['/entitlement'].entitlementType) { + + entitlementType = entitlementObj.glossary.idx['/entitlement'].entitlementType; + + } else { + entitlementType = 'standard'; + } + + // accountAttribute for provisioning node + accountAttribute = (entitlementObj + && entitlementObj.item + && entitlementObj.item.accountAttribute) + ? entitlementObj.item.accountAttribute + : null; + } catch (e) { + logger.warn("Entitlement lookup error: " + e.message); + + entitlementType = 'standard'; + } + } else { + entitlementType = 'standard'; + } + + +} catch (e) { + failureReason = 'Context & Type Check failed: ' + e.message; + logger.error(failureReason); +} + +logger.info("Context: " + context + " | EntitlementType: " + entitlementType + " | UserId: " + userId + " | AuthzRoleId: " + authzRoleId); + +execution.setVariable("context", context); +execution.setVariable("enableWait", enableWait); +execution.setVariable("enableEndWait", enableEndWait); +execution.setVariable("skipApproval", skipApproval); +execution.setVariable("entitlementType", entitlementType); +execution.setVariable("entitlementId", entitlementId); +execution.setVariable("userId", userId); +execution.setVariable("failureReason", failureReason); +execution.setVariable("accountAttribute", accountAttribute); +", + }, + "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": { + "events": null, + "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", + }, + { + "displayName": "Validation Gateway", + "name": "exclusiveGateway-526a06894733", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "entitlementType == 'custom'", + "outcome": "validationSuccess", + "step": "exclusiveGateway-26e6b56a6d6b", + }, + { + "condition": "entitlementType != 'custom'", + "outcome": "validationFailure", + "step": "exclusiveGateway-67a954f33919", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Context Gateway", + "name": "exclusiveGateway-26e6b56a6d6b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApproval", + "step": "scriptTask-6dc428f459a8", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-74cf85c35437", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Custom Auto Approval", + "name": "scriptTask-6dc428f459a8", + "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 type custom 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", + }, + ], + "type": "provisioning", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/jhNeCreateTest2.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "jh-ne-create-test-2", + "displayName": "jh-ne-create-test-2", + "id": "jhNeCreateTest2", + "mutable": true, + "name": "jh-ne-create-test-2", + "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": 1463, + "y": 262, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-2131bbe3663d", + }, + "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-6649e6d6f2a3": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + }, + "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": 606.3999938964844, + "y": 431.6125030517578, + }, + "emailTask-731854fb34db": { + "x": 1119.3999938964844, + "y": 107.61250305175781, + }, + "exclusiveGateway-69f93dd39054": { + "x": 394.3999938964844, + "y": 252.6125030517578, + }, + "scriptTask-2131bbe3663d": { + "x": 156.39999389648438, + "y": 252.6125030517578, + }, + "scriptTask-c174d2210667": { + "x": 814.3999938964844, + "y": 43.61250305175781, + }, + "scriptTask-f2a2d7eee947": { + "x": 821.3999938964844, + "y": 298.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Permissions Check", + "name": "scriptTask-2131bbe3663d", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-69f93dd39054", + }, + ], + "script": "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 Approve Gateway", + "name": "exclusiveGateway-69f93dd39054", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "skipApproval == true", + "outcome": "AutoApprove", + "step": "scriptTask-c174d2210667", + }, + { + "condition": "skipApproval == false", + "outcome": "Approval", + "step": "approvalTask-6649e6d6f2a3", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2", + "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-f2a2d7eee947", + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-6649e6d6f2a3", + "type": "approvalTask", + }, + { + "displayName": "Mark Approved", + "name": "scriptTask-c174d2210667", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-731854fb34db", + }, + ], + "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": ""Create" User", + "name": "scriptTask-f2a2d7eee947", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "emailTask-731854fb34db", + }, + ], + "script": "logger.info("Creating User"); + +var content = execution.getVariables(); +var requestId = content.get('id'); +var failureReason = null; +var request = 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 { + request = requestObj.request; + + + + // var payload = { + // "userName": request.custom.userName, + // "givenName": request.custom.givenName, + // "sn": request.custom.sn, + // "mail": request.custom.mail, + // "password": 'DemoP@ssword1' + // }; + + /** Create new user **/ + // var result = openidm.create('managed/alpha_user', null, payload, queryParams); + + // /** Send new user email **/ + // var body = { + // subject: "Welcome " + payload.givenName + " " + payload.sn + "!", + // to: payload.mail, + // body: "Your new user has been created in the system.\\n\\nUsername: " + payload.userName + "\\nPassword: " + payload.password + "\\n\\nLogin to your account here: https://openam-gov-dev-4.forgeblocks.com/am/XUI/?realm=/alpha#/", + // object: {} + // }; + // openidm.action("external/email", "send", body); + } + catch (e) { + failureReason = "Creating user failed: Error during creation of user " + request.custom.userName + ". Error message: " + e.message; + } + + var decision = {'status': 'complete', 'decision': 'approved', "comment": JSON.stringify(request)}; + 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": "Account Creation Email", + "emailTask": { + "bcc": "", + "cc": "", + "nextStep": [ + { + "condition": null, + "outcome": "SUCCESS", + "step": null, + }, + { + "condition": null, + "outcome": "FAILED", + "step": null, + }, + ], + "object": { + "cn": "9959348", + "custom_DisplayName": "Jack Hatton", + "custom_LocationName": "remote", + "custom_siteLocation": "remote", + "manager": "test", + }, + "templateName": "staffNe1AccountCreation", + "to": "jhatton@trivir.com", + }, + "name": "emailTask-731854fb34db", + "type": "emailTask", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/pghGenerateRap.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "pgh-generate-rap", + "displayName": "pgh-generate-rap", + "id": "pghGenerateRap", + "mutable": true, + "name": "pgh-generate-rap", + "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": 1156, + "y": 151, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-115d1ab72679", + }, + "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": { + "exclusiveGateway-2d4351f5c77b": { + "x": 451, + "y": 126.5, + }, + "fulfillmentTask-f49f20d19149": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDateType": "duration", + "expirationDateVariable": "", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 683, + "y": 126.5, + }, + "scriptTask-115d1ab72679": { + "x": 208, + "y": 158, + }, + "scriptTask-5a2b73dd9dd2": { + "x": 916, + "y": 80, + }, + "scriptTask-6f260211dc0f": { + "x": 916, + "y": 226, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Generate RAP", + "name": "scriptTask-115d1ab72679", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "exclusiveGateway-2d4351f5c77b", + }, + ], + "script": "function getPublishedWorkflow(workflowId) { + return openidm.action(\`iga/governance/workflow/\${workflowId}/published\`, 'GET', {}, {}); +} + +function getRequestType(requestTypeId) { + return openidm.action(\`iga/governance/requestTypes/\${requestTypeId}\`, 'GET', {}, {}); +} + +function getRequest() { + var requestId = execution.getVariables().get('id'); + return openidm.action(\`iga/governance/requests/\${requestId}\`, 'GET', {}, {}); +} + +function modifyRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') }); +} + +function updateRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action(\`iga/governance/requests/\${requestId}\`, 'POST', body, { _action: "update" }); +} + +function commentRequest(message, isFail) { + return updateRequest({ comment: message, failure: !!isFail }); +} + +function main() { + var isSuccessful = false; + try { + var request = getRequest(); + + // Get user ID + var idPath = request.request.custom.idPath; + var userId = idPath.split('/').pop(); + execution.setVariable("idPath", idPath); + + // Get script ID for the phase name + var requestType = getRequestType(request.requestType); + var workflow = getPublishedWorkflow(requestType.workflow.id); + execution.setVariable("phaseName", workflow.staticNodes.startNode.connections.start); + + // Generate RAP + var response = openidm.action('endpoint/helpdesk-rap/generate/' + userId, 'create', {}, {}); + modifyRequest({ + common: { + isDraft: false, + context: { + type: "request" + } + }, + custom: { + idPath: idPath, + rap: response.rap + } + }); + isSuccessful = true; + } catch (e) { + commentRequest("Error generating RAP. Error message: " + e.message, true); + } finally { + execution.setVariable("isSuccessful", isSuccessful); + } +} + +main(); +", + }, + "type": "scriptTask", + }, + { + "displayName": "Is Successful", + "name": "exclusiveGateway-2d4351f5c77b", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "isSuccessful == true", + "outcome": "success", + "step": "fulfillmentTask-f49f20d19149", + }, + { + "condition": "isSuccessful == false", + "outcome": "error", + "step": "scriptTask-6f260211dc0f", + }, + ], + "script": "logger.info("This is exclusive gateway");", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Approve", + "name": "scriptTask-5a2b73dd9dd2", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "function updateRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "update" }); +} + +function modifyRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') }); +} + +function commentRequest(message, isFail) { + return updateRequest({ comment: message, failure: isFail }); +} + +function approveRequest() { + updateRequest({ + outcome: 'fulfilled', + status: 'complete', + decision: 'approved' + }); +} + +function main() { + try { + modifyRequest({ + common: { + isDraft: false, + context: { + type: "request" + } + }, + custom: { + idPath: execution.getVariables().get('idPath'), + rap: "" + } + }); + approveRequest(); + } catch (e) { + commentRequest("Failure auto-approving RAP request. Error message: " + e.message, true); + } +} + +main(); +", + }, + "type": "scriptTask", + }, + { + "displayName": "Auto Reject", + "name": "scriptTask-6f260211dc0f", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "function updateRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "update" }); +} + +function modifyRequest(body) { + var requestId = execution.getVariables().get('id'); + return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: "modify", phaseName: execution.getVariables().get('phaseName') }); +} + +function commentRequest(message, isFail) { + return updateRequest({ comment: message, failure: isFail }); +} + +function rejectRequest() { + updateRequest({ + outcome: 'cancelled', + status: 'complete', + decision: 'rejected' + }); +} + +function main() { + try { + modifyRequest({ + common: { + isDraft: false, + context: { + type: "request" + } + }, + custom: { + idPath: execution.getVariables().get('idPath'), + rap: "" + } + }); + rejectRequest(); + } catch (e) { + commentRequest("Failure auto-rejecting RAP request. Error message: " + e.message, true); + } +} + +main(); +", + }, + "type": "scriptTask", + }, + { + "displayName": "Confirm RAP", + "fulfillmentTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "comment": true, + "deny": true, + "fulfill": true, + "modify": true, + "reassign": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "FULFILL", + "step": "scriptTask-5a2b73dd9dd2", + }, + { + "condition": null, + "outcome": "DENY", + "step": "scriptTask-6f260211dc0f", + }, + ], + }, + "name": "fulfillmentTask-f49f20d19149", + "type": "fulfillmentTask", + }, + ], + }, + }, + }, +} +`; + +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": "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": { + "events": null, + "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": { + "events": null, + "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 -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": "(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", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhCustomWorkflow.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "phhCustomWorkflow", + "displayName": "phhCustomWorkflow", + "id": "phhCustomWorkflow", + "mutable": true, + "name": "phhCustomWorkflow", + "staticNodes": { + "endNode": { + "connections": null, + "id": "endNode", + "x": 955, + "y": 174, + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a", + }, + "id": "startNode", + "x": 70, + "y": 140, + }, + "uiConfig": { + "approvalTask-74cf85c35437": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/6b21c283-d491-4fd9-8322-898c171c7018", + }, + "type": "user", + }, + ], + "events": { + "escalationDate": 1, + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 3, + "reminderTimeSpan": "day(s)", + }, + "x": 448, + "y": 124, + }, + "scriptTask-0e5b6187ea62": { + "x": 683, + "y": 128.015625, + }, + "scriptTask-4e9121fe850a": { + "x": 168, + "y": 140.015625, + }, + "scriptTask-c58309b8c470": { + "x": 688, + "y": 207, + }, + }, + }, + "status": "draft", + "steps": [ + { + "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", + }, + "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-74cf85c35437", + "type": "approvalTask", + }, + { + "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": "approvalTask-74cf85c35437", + }, + ], + "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-0e5b6187ea62", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "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", + }, + ], + "type": "provisioning", + }, + "published": null, + }, + }, +} +`; + +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": { + "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": "draft", + "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", + }, + ], + }, + "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", + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/phhFlow.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "phhFlow", + "displayName": "phhFlow", + "id": "phhFlow", + "mutable": true, + "name": "phhFlow", + "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": 564, + "y": 312, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "scriptTask-10bf48033687", + }, + "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-bf52ce203a81": { + "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(){ +// --- Log comment to request audit trail --- + try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var logComment = "Context Check" + + " | applicationOwner: " + requestObj.applicationOwner[0].id + + " | full dump: " + JSON.stringify(requestObj); + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } + return []; +} +)() +", + }, + "events": { + "escalationDate": 1, + "escalationType": "applicationOwner", + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reassignedActors": [], + "reminderDate": 1, + }, + "x": 153.39999389648438, + "y": 268.6125030517578, + }, + "scriptTask-10bf48033687": { + "x": 162.39999389648438, + "y": 140.6125030517578, + }, + "scriptTask-610744f7d369": { + "x": 357.3999938964844, + "y": 370.6125030517578, + }, + "scriptTask-c28119ea007e": { + "x": 360.3999938964844, + "y": 256.6125030517578, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Context Check", + "name": "scriptTask-10bf48033687", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": "approvalTask-bf52ce203a81", + }, + ], + "script": "var content = execution.getVariables(); +var requestId = content.get('id'); +var context = null; + +try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + if (requestObj.request.common.context) { + context = requestObj.request.common.context.type; + } + // --- Log comment to request audit trail --- + try { + var logComment = "Context Check" + + " | full dump: " + JSON.stringify(requestObj); + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } +} +catch (e) { + logger.info("Request Context Check failed "+e.message); +} + +logger.info("Context: " + context); +execution.setVariable("context", context);", + }, + "type": "scriptTask", + }, + { + "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(){ +// --- Log comment to request audit trail --- + try { + var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {}); + var logComment = "Context Check" + + " | applicationOwner: " + requestObj.applicationOwner[0].id + + " | full dump: " + JSON.stringify(requestObj); + + + openidm.action( + 'iga/governance/requests/' + requestId, + 'POST', + { 'comment': logComment }, + { '_action': 'update' } + ); + } catch (e) { + logger.error("Failed to write log comment: " + e.message); + } + return []; +} +)() +", + }, + "approvalMode": "any", + "events": { + "expiration": { + "date": { + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": "scriptTask-c28119ea007e", + }, + { + "condition": null, + "outcome": "REJECT", + "step": "scriptTask-610744f7d369", + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-bf52ce203a81", + "type": "approvalTask", + }, + { + "displayName": "Approve", + "name": "scriptTask-c28119ea007e", + "scriptTask": { + "language": "javascript", + "nextStep": [ + { + "condition": "true", + "outcome": "done", + "step": null, + }, + ], + "script": "logger.info("Approving 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': 'not provisioned', 'status': 'complete', 'decision': 'approved'}; +var queryParams = { '_action': 'update'}; +openidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);", + }, + "type": "scriptTask", + }, + { + "displayName": "Script Task", + "name": "scriptTask-610744f7d369", + "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", + }, + ], + }, + }, + }, +} +`; + +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": "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": { + "events": null, + "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 -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": "/* + * 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 -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": "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", + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/test.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": { + "childType": false, + "description": "test", + "displayName": "test", + "id": "test", + "mutable": true, + "name": "test", + "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": "waitTask-4d9223fb79c5", + }, + "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": { + "waitTask-4d9223fb79c5": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 285.3999938964844, + "y": 211.22499084472656, + }, + }, + }, + "status": "draft", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-4d9223fb79c5", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(1*30*24*60*60*1000))).toISOString()", + }, + }, + }, + ], + }, + "published": { + "childType": false, + "description": "test", + "displayName": "test", + "id": "test", + "mutable": true, + "name": "test", + "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": "waitTask-4d9223fb79c5", + }, + "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": { + "waitTask-4d9223fb79c5": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "month(s)", + "resumeDateType": "duration", + }, + "x": 285.3999938964844, + "y": 211.22499084472656, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-4d9223fb79c5", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(1*30*24*60*60*1000))).toISOString()", + }, + }, + }, + ], + }, + }, + }, +} +`; + +exports[`frodo iga workflow export "frodo iga workflow export -xNAD testWorkflowExportDir3": should export all workflows separately with no metadata: testWorkflowExportDir3/test1.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "test-1", + "displayName": "test-1", + "id": "test1", + "mutable": true, + "name": "test-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": 500, + "y": 50, + }, + "startNode": { + "_outcomes": [ + { + "displayName": "start", + "id": "start", + }, + ], + "connections": { + "start": "waitTask-d25ec611a5d8", + }, + "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": { + "waitTask-d25ec611a5d8": { + "events": { + "resumeDateNumber": 1, + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "duration", + }, + "x": 307.22222900390625, + "y": 228.3472137451172, + }, + }, + }, + "status": "published", + "steps": [ + { + "displayName": "Wait Task", + "name": "waitTask-d25ec611a5d8", + "type": "waitTask", + "waitTask": { + "events": null, + "nextStep": [ + { + "condition": "true", + "outcome": "COMPLETE", + "step": null, + }, + ], + "resumeDate": { + "isExpression": true, + "value": "(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()", + }, + }, + }, + ], + }, + }, + }, +} +`; + +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": "/** +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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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.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": "/** +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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "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() { + 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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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, + }, + }, +} +`; + +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": "/** +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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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.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": "/** +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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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.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": "/** +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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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": { + "events": null, + "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/testWorkflow9.workflow.json 1`] = ` +{ + "workflow": { + "undefined": { + "draft": null, + "published": { + "childType": false, + "description": "testWorkflow9", + "displayName": "testWorkflow9", + "id": "testWorkflow9", + "mutable": true, + "name": "testWorkflow9", + "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-900ec6e95c71", + }, + "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-900ec6e95c71": { + "actors": [ + { + "id": { + "isExpression": false, + "value": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + }, + "type": "user", + }, + ], + "events": { + "escalationType": "applicationOwner", + "expirationDateType": "duration", + "expirationDateVariable": "", + "reassignedActors": [], + }, + "x": 275.22222900390625, + "y": 187.3472137451172, + }, + }, + }, + "status": "published", + "steps": [ + { + "approvalMode": "any", + "approvalTask": { + "actors": [ + { + "id": "managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6", + "permissions": { + "approve": true, + "comment": true, + "modify": true, + "reassign": true, + "reject": true, + }, + }, + ], + "approvalMode": "any", + "events": {}, + "nextStep": [ + { + "condition": null, + "outcome": "APPROVE", + "step": null, + }, + { + "condition": null, + "outcome": "REJECT", + "step": null, + }, + ], + }, + "displayName": "Approval Task", + "name": "approvalTask-900ec6e95c71", + "type": "approvalTask", + }, + ], + }, + }, + }, +} +`; + +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": "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, + }, + }, +} +`; diff --git a/test/e2e/__snapshots__/iga-workflow-import.e2e.test.js.snap b/test/e2e/__snapshots__/iga-workflow-import.e2e.test.js.snap new file mode 100644 index 000000000..f2fb1b385 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-import.e2e.test.js.snap @@ -0,0 +1,50 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo iga workflow import "frodo iga workflow import --all --file test/e2e/exports/all/allWorkflows.workflow.json --no-deps": should import all workflows from the file "test/e2e/exports/all/allWorkflows.workflow.json" 1`] = `""`; + +exports[`frodo iga workflow import "frodo iga workflow import --all --file test/e2e/exports/all/allWorkflows.workflow.json --no-deps": should import all workflows from the file "test/e2e/exports/all/allWorkflows.workflow.json" 2`] = ` +"✔ Successfully imported workflows. +" +`; + +exports[`frodo iga workflow import "frodo iga workflow import --all-separate --directory test/e2e/exports/all-separate/cloud/global/workflow --no-deps": should import all workflows from the directory "test/e2e/exports/all-separate/cloud/global/workflow" 1`] = `""`; + +exports[`frodo iga workflow import "frodo iga workflow import --all-separate --directory test/e2e/exports/all-separate/cloud/global/workflow --no-deps": should import all workflows from the directory "test/e2e/exports/all-separate/cloud/global/workflow" 2`] = ` +"✔ Successfully imported workflows. +" +`; + +exports[`frodo iga workflow import "frodo iga workflow import --workflow-id testWorkflow1 --file test/e2e/exports/all/allWorkflows.workflow.json --no-deps": should import testWorkflow1 from the file "test/e2e/exports/all/allWorkflows.workflow.json" 1`] = `""`; + +exports[`frodo iga workflow import "frodo iga workflow import --workflow-id testWorkflow1 --file test/e2e/exports/all/allWorkflows.workflow.json --no-deps": should import testWorkflow1 from the file "test/e2e/exports/all/allWorkflows.workflow.json" 2`] = ` +"✔ Successfully imported workflow testWorkflow1. +" +`; + +exports[`frodo iga workflow import "frodo iga workflow import -AD test/e2e/exports/all-separate/cloud/global/workflow": should import all workflows from the directory "test/e2e/exports/all-separate/cloud/global/workflow" with dependencies 1`] = `""`; + +exports[`frodo iga workflow import "frodo iga workflow import -AD test/e2e/exports/all-separate/cloud/global/workflow": should import all workflows from the directory "test/e2e/exports/all-separate/cloud/global/workflow" with dependencies 2`] = ` +"✔ Successfully imported workflows. +" +`; + +exports[`frodo iga workflow import "frodo iga workflow import -af test/e2e/exports/all/allWorkflows.workflow.json": should import all workflows from the file "test/e2e/exports/all/allWorkflows.workflow.json" with dependencies 1`] = `""`; + +exports[`frodo iga workflow import "frodo iga workflow import -af test/e2e/exports/all/allWorkflows.workflow.json": should import all workflows from the file "test/e2e/exports/all/allWorkflows.workflow.json" with dependencies 2`] = ` +"✔ Successfully imported workflows. +" +`; + +exports[`frodo iga workflow import "frodo iga workflow import -f test/e2e/exports/all/allWorkflows.workflow.json --no-deps": should import first workflow from the file "test/e2e/exports/all/allWorkflows.workflow.json" 1`] = `""`; + +exports[`frodo iga workflow import "frodo iga workflow import -f test/e2e/exports/all/allWorkflows.workflow.json --no-deps": should import first workflow from the file "test/e2e/exports/all/allWorkflows.workflow.json" 2`] = ` +"✔ Imported workflow from test/e2e/exports/all/allWorkflows.workflow.json +" +`; + +exports[`frodo iga workflow import "frodo iga workflow import -i testWorkflow1 -f test/e2e/exports/all/allWorkflows.workflow.json": should import testWorkflow1 from the file "test/e2e/exports/all/allWorkflows.workflow.json" with dependencies 1`] = `""`; + +exports[`frodo iga workflow import "frodo iga workflow import -i testWorkflow1 -f test/e2e/exports/all/allWorkflows.workflow.json": should import testWorkflow1 from the file "test/e2e/exports/all/allWorkflows.workflow.json" with dependencies 2`] = ` +"✔ Successfully imported workflow testWorkflow1. +" +`; 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..6b37b0e3d --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-list.e2e.test.js.snap @@ -0,0 +1,147 @@ +// 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 +basicEntitlementGrantCopy │BasicEntitlementGrant-copy │true │true │true +createNonEmployee │CreateNonEmployee │true │true │true +createUserJh │CreateUser - JH │true │false │true +phhBasicEntitlementGrant │phh-BasicEntitlementGrant │true │false │true +phhCustomWorkflow │phhCustomWorkflow │true │false │true +phhInternalRoleEntitlementGrant │phh-InternalRoleEntitlementGrant │true │false │true +phhNewUserCreate │phh-new-user-create │true │true │true +test │test │true │true │true +testWorkflow5 │test_workflow_5 │true │false │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 +BasicRoleCreate │BasicRoleCreate │false │true │false +BasicRoleDelete │BasicRoleDelete │false │true │false +BasicRoleGrant │BasicRoleGrant │false │true │false +BasicRoleModify │BasicRoleModify │false │true │false +BasicRolePublish │BasicRolePublish │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 +basicApplicationGrantCopy │BasicApplicationGrant-copy │false │true │true +custom1BasicEntitlementGrant │custom-1-BasicEntitlementGrant │false │true │true +customBasicEntitlementGrant │custom-BasicEntitlementGrant │false │true │true +extendGrantEndDate │extendGrantEndDate │false │true │false +jhNeCreateTest2 │jh-ne-create-test-2 │false │true │true +pghGenerateRap │pgh-generate-rap │false │true │true +phhBasicApplicationGrant │phh-BasicApplicationGrant │false │true │true +phhBirthrightRolesRequiringApproval│phh-birthright-roles-requiring-approval│false │true │true +phhDelegatedUserDisableWorkflow │phh-delegated-user-disable-workflow │false │true │true +phhFlow │phhFlow │false │true │true +phhNeDisable │phh-ne-disable │false │true │true +test1 │test-1 │false │true │true +testWorkflow1 │test_workflow_1 │false │true │true +testWorkflow4 │test_workflow_4 │false │true │true +testWorkflow6 │test_workflow_6 │false │true │true +testWorkflow7 │test_workflow_7 │false │true │true +testWorkflow8 │test_workflow_8 │false │true │true +testWorkflow9 │testWorkflow9 │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 +basicEntitlementGrantCopy │BasicEntitlementGrant-copy │true │true │true +createNonEmployee │CreateNonEmployee │true │true │true +createUserJh │CreateUser - JH │true │false │true +phhBasicEntitlementGrant │phh-BasicEntitlementGrant │true │false │true +phhCustomWorkflow │phhCustomWorkflow │true │false │true +phhInternalRoleEntitlementGrant │phh-InternalRoleEntitlementGrant │true │false │true +phhNewUserCreate │phh-new-user-create │true │true │true +test │test │true │true │true +testWorkflow5 │test_workflow_5 │true │false │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 +BasicRoleCreate │BasicRoleCreate │false │true │false +BasicRoleDelete │BasicRoleDelete │false │true │false +BasicRoleGrant │BasicRoleGrant │false │true │false +BasicRoleModify │BasicRoleModify │false │true │false +BasicRolePublish │BasicRolePublish │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 +basicApplicationGrantCopy │BasicApplicationGrant-copy │false │true │true +custom1BasicEntitlementGrant │custom-1-BasicEntitlementGrant │false │true │true +customBasicEntitlementGrant │custom-BasicEntitlementGrant │false │true │true +extendGrantEndDate │extendGrantEndDate │false │true │false +jhNeCreateTest2 │jh-ne-create-test-2 │false │true │true +pghGenerateRap │pgh-generate-rap │false │true │true +phhBasicApplicationGrant │phh-BasicApplicationGrant │false │true │true +phhBirthrightRolesRequiringApproval│phh-birthright-roles-requiring-approval│false │true │true +phhDelegatedUserDisableWorkflow │phh-delegated-user-disable-workflow │false │true │true +phhFlow │phhFlow │false │true │true +phhNeDisable │phh-ne-disable │false │true │true +test1 │test-1 │false │true │true +testWorkflow1 │test_workflow_1 │false │true │true +testWorkflow4 │test_workflow_4 │false │true │true +testWorkflow6 │test_workflow_6 │false │true │true +testWorkflow7 │test_workflow_7 │false │true │true +testWorkflow8 │test_workflow_8 │false │true │true +testWorkflow9 │testWorkflow9 │false │true │true +" +`; + +exports[`frodo iga workflow list "frodo iga workflow list": should list the ids of the workflows 1`] = ` +"basicEntitlementGrantCopy +createNonEmployee +createUserJh +phhBasicEntitlementGrant +phhCustomWorkflow +phhInternalRoleEntitlementGrant +phhNewUserCreate +test +testWorkflow5 +wfEntitlementExampleIsPrivileged +BasicApplicationGrant +BasicApplicationRemove +BasicEntitlementGrant +BasicEntitlementRemove +BasicRoleCreate +BasicRoleDelete +BasicRoleGrant +BasicRoleModify +BasicRolePublish +BasicRoleRemove +BasicViolationProcess +CreateEntitlement +CreateUser +DeleteUser +ModifyEntitlement +ModifyUser +basicApplicationGrantCopy +custom1BasicEntitlementGrant +customBasicEntitlementGrant +extendGrantEndDate +jhNeCreateTest2 +pghGenerateRap +phhBasicApplicationGrant +phhBirthrightRolesRequiringApproval +phhDelegatedUserDisableWorkflow +phhFlow +phhNeDisable +test1 +testWorkflow1 +testWorkflow4 +testWorkflow6 +testWorkflow7 +testWorkflow8 +testWorkflow9 +" +`; 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..42e5092b8 --- /dev/null +++ b/test/e2e/__snapshots__/iga-workflow-publish.e2e.test.js.snap @@ -0,0 +1,22 @@ +// 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`] = ` +"✖ 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`] = ` +"✔ Published workflow testWorkflow5. +" +`; diff --git a/test/e2e/config-export.e2e.test.js b/test/e2e/config-export.e2e.test.js index 4885944c5..0fb357ace 100644 --- a/test/e2e/config-export.e2e.test.js +++ b/test/e2e/config-export.e2e.test.js @@ -56,6 +56,11 @@ FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgebloc FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config export -RAD exportAllTestDir5 --include-active-values FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config export -raf testExportAllAlpha.json FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config export -gAD exportAllTestDir9 +// Cloud IGA +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config export -NRag --use-string-arrays --no-coords -f testExportAllIGA1.json +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config export --all --global --file testExportAllIGA2.json +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config export --no-metadata --read-only --all-separate -g --use-string-arrays --no-coords --extract --directory exportAllTestDir11 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config export -AgD exportAllTestDir12 // Classic FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=http://openam-frodo-dev.classic.com:8080/am frodo config export -adND exportAllTestDir6 -m classic FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=http://openam-frodo-dev.classic.com:8080/am frodo config export --all --modified-properties --read-only --file testExportAll2.json --include-active-values --use-string-arrays --no-decode --no-coords --type classic @@ -75,56 +80,85 @@ const classicEnv = getEnv(cc); const type = 'config'; -describe.skip('frodo config export', () => { - test('"frodo config export -adND exportAllTestDir4": should export everything, including default scripts, to a single file', async () => { +describe('frodo config export', () => { + + // Cloud tests + + test.skip('"frodo config export -adND exportAllTestDir4": should export everything, including default scripts, to a single file', async () => { const exportFile = 'all.config.json'; const exportDirectory = 'exportAllTestDir4'; const CMD = `frodo config export -adND ${exportDirectory}`; await testExport(CMD, env, type, exportFile, exportDirectory, false); }); - test('"frodo config export --all --modified-properties --file testExportAll.json --use-string-arrays --no-decode --no-coords": should export everything to a single file named testExportAll.json with no decoding variables, no journey coordinates, and using string arrays', async () => { + test.skip('"frodo config export --all --modified-properties --file testExportAll.json --use-string-arrays --no-decode --no-coords": should export everything to a single file named testExportAll.json with no decoding variables, no journey coordinates, and using string arrays', async () => { const exportFile = 'testExportAll.json'; const CMD = `frodo config export --all --modified-properties --file ${exportFile} --use-string-arrays --no-decode --no-coords`; await testExport(CMD, env, type, exportFile); }); - test('"frodo config export -AD exportAllTestDir1": should export everything into separate files in the directory exportAllTestDir1', async () => { + test.skip('"frodo config export -AD exportAllTestDir1": should export everything into separate files in the directory exportAllTestDir1', async () => { const exportDirectory = 'exportAllTestDir1'; const CMD = `frodo config export -AD ${exportDirectory}`; await testExport(CMD, env, undefined, undefined, exportDirectory, false); }); - test('"frodo config export -MAsxD exportAllTestDir2": should export everything into separate files in the directory exportAllTestDir2 with scripts and mappings separate', async () => { + test.skip('"frodo config export -MAsxD exportAllTestDir2": should export everything into separate files in the directory exportAllTestDir2 with scripts and mappings separate', async () => { const exportDirectory = 'exportAllTestDir2'; const CMD = `frodo config export -MAsxD ${exportDirectory}`; await testExport(CMD, env, undefined, undefined, exportDirectory, false); }); - test('"frodo config export --all-separate --read-only --no-metadata --default --directory exportAllTestDir3 --use-string-arrays --no-decode --no-coords --no-extract --separate-mappings": should export everything, including default scripts, into separate files in the directory exportAllTestDir3 with scripts, no decoding variables, no journey coordinates, separate mappings, and using string arrays', async () => { + test.skip('"frodo config export --all-separate --read-only --no-metadata --default --directory exportAllTestDir3 --use-string-arrays --no-decode --no-coords --extract --separate-mappings": should export everything, including default scripts, into separate files in the directory exportAllTestDir3 with scripts, no decoding variables, no journey coordinates, separate mappings, and using string arrays', async () => { const exportDirectory = 'exportAllTestDir3'; const CMD = `frodo config export --all-separate --read-only --no-metadata --default --directory ${exportDirectory} --use-string-arrays --no-decode --no-coords --no-extract --separate-mappings`; await testExport(CMD, env, undefined, undefined, exportDirectory, false); }); - test('"frodo config export -RAD exportAllTestDir5 --include-active-values": should export everything including secret values into separate files in the directory exportAllTestDir5', async () => { + test.skip('"frodo config export -RAD exportAllTestDir5 --include-active-values": should export everything including secret values into separate files in the directory exportAllTestDir5', async () => { const exportDirectory = 'exportAllTestDir5'; const CMD = `frodo config export -RAD ${exportDirectory} --include-active-values`; await testExport(CMD, env, undefined, undefined, exportDirectory, false); }); - test('"frodo config export -raf testExportAllAlpha.json": should export all alpha realm config to a single file named testExportAllAlpha.json.', async () => { + test.skip('"frodo config export -raf testExportAllAlpha.json": should export all alpha realm config to a single file named testExportAllAlpha.json.', async () => { const exportFile = 'testExportAllAlpha.json'; const CMD = `frodo config export -raf ${exportFile}`; await testExport(CMD, env, type, exportFile); }); - test('"frodo config export -gAD exportAllTestDir9": should export all global config into separate files in the directory exportAllTestDir9', async () => { + test.skip('"frodo config export -gAD exportAllTestDir9": should export all global config into separate files in the directory exportAllTestDir9', async () => { const exportDirectory = 'exportAllTestDir9'; const CMD = `frodo config export -gAD ${exportDirectory}`; await testExport(CMD, env, undefined, undefined, exportDirectory, false); }); + // Cloud IGA Tests + + test.todo('"frodo config export -NRag --use-string-arrays --no-coords -f testExportAllIGA1.json": should export all global IGA configuration with no-coords, string arrays, and read only configuration.', async () => { + const exportFile = 'testExportAllIGA1.json'; + const CMD = `frodo config export -NRag --use-string-arrays --no-coords -f ${exportFile}`; + await testExport(CMD, env, type, exportFile, undefined, false, true); + }); + + test.todo('"frodo config export --all --global --file testExportAllIGA2.json": should export all global IGA configuration.', async () => { + const exportFile = 'testExportAllIGA2.json'; + const CMD = `frodo config export --all --global --file ${exportFile}`; + await testExport(CMD, env, type, exportFile, undefined, true, true); + }); + + test.todo('"frodo config export --no-metadata --read-only --all-separate -g --use-string-arrays --no-coords --extract --directory exportAllTestDir11": should export all global IGA configuration separately with extracted scripts, no-coords, string arrays, and read only configuration.', async () => { + const exportDirectory = 'exportAllTestDir11'; + const CMD = `frodo config export --no-metadata --read-only --all-separate -g --use-string-arrays --no-coords --extract --directory ${exportDirectory}`; + await testExport(CMD, env, type, undefined, exportDirectory, false, true); + }); + + test.todo('"frodo config export -AgD exportAllTestDir12": should export all global IGA configuration separately', async () => { + const exportDirectory = 'exportAllTestDir12'; + const CMD = `frodo config export -AgD ${exportDirectory}`; + await testExport(CMD, env, type, undefined, exportDirectory, true, true); + }); + // Classic Env Tests test('"frodo config export -adND exportAllTestDir6 -m classic": should export everything, including default scripts, to a single file', async () => { @@ -177,4 +211,4 @@ describe.skip('frodo config export', () => { const CMD = `frodo config export --global-only -af ${exportFile} -m classic`; await testExport(CMD, env, type, exportFile); }); -}); +}); \ No newline at end of file diff --git a/test/e2e/config-import.e2e.test.js b/test/e2e/config-import.e2e.test.js index c29f752a4..9dfdb8f06 100644 --- a/test/e2e/config-import.e2e.test.js +++ b/test/e2e/config-import.e2e.test.js @@ -72,6 +72,9 @@ FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgebloc FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config import -AD test/e2e/exports/all-separate/cloud --include-active-values FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config import -gf test/e2e/exports/all-separate/cloud/global/sync/sync.idm.json FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config import --file test/e2e/exports/all-separate/cloud/realm/root-alpha/script/mode.script.json +// Cloud IGA +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config import -af test/e2e/exports/all/all.iga.json +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo config import -AD test/e2e/exports/all-separate/iga // Classic FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=http://openam-frodo-dev.classic.com:8080/am frodo config import -adf test/e2e/exports/all/all.classic.json -m classic FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=http://openam-frodo-dev.classic.com:8080/am frodo config import --all --clean --re-uuid-scripts --re-uuid-journeys --include-active-values --file test/e2e/exports/all/all.classic.json --type classic @@ -87,7 +90,7 @@ import { getEnv, removeAnsiEscapeCodes } from './utils/TestUtils'; -import { connection as c, classic_connection as cc } from './utils/TestConfig'; +import { connection as c, classic_connection as cc, iga_connection as ic } from './utils/TestConfig'; const exec = promisify(cp.exec); @@ -103,8 +106,8 @@ const allClassicExport = `${allDirectory}/${allClassicFileName}`; const allSeparateCloudDirectory = `test/e2e/exports/all-separate/cloud`; const allSeparateClassicDirectory = `test/e2e/exports/all-separate/classic`; -describe.skip('frodo config import', () => { - test(`"frodo config import -adf ${allCloudExport}" Import everything from "${allCloudFileName}", including default scripts.`, async () => { +describe('frodo config import', () => { + test.skip(`"frodo config import -adf ${allCloudExport}" Import everything from "${allCloudFileName}", including default scripts.`, async () => { const CMD = `frodo config import -adf ${allCloudExport}`; try { await exec(CMD, env); @@ -125,7 +128,7 @@ describe.skip('frodo config import', () => { expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); }); - test(`"frodo config import -aCf ${allCloudExport}" Import everything from "${allCloudFileName}". Clean old services`, async () => { + test.skip(`"frodo config import -aCf ${allCloudExport}" Import everything from "${allCloudFileName}". Clean old services`, async () => { const CMD = `frodo config import -aCf ${allCloudExport}`; try { await exec(CMD, env); @@ -139,7 +142,7 @@ describe.skip('frodo config import', () => { } }); - test(`"frodo config import -AD ${allSeparateCloudDirectory}" Import everything from directory "${allSeparateCloudDirectory}"`, async () => { + test.skip(`"frodo config import -AD ${allSeparateCloudDirectory}" Import everything from directory "${allSeparateCloudDirectory}"`, async () => { const CMD = `frodo config import -AD ${allSeparateCloudDirectory}`; try { await exec(CMD, env); @@ -160,7 +163,7 @@ describe.skip('frodo config import', () => { expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); }); - test(`"frodo config import -CAD ${allSeparateCloudDirectory}" Import everything from directory "${allSeparateCloudDirectory}". Clean old services`, async () => { + test.skip(`"frodo config import -CAD ${allSeparateCloudDirectory}" Import everything from directory "${allSeparateCloudDirectory}". Clean old services`, async () => { const CMD = `frodo config import -CAD ${allSeparateCloudDirectory}`; try { await exec(CMD, env); @@ -174,7 +177,7 @@ describe.skip('frodo config import', () => { } }); - test(`"frodo config import --default -CAD ${allSeparateCloudDirectory}" Import everything from directory "${allSeparateCloudDirectory}", including default scripts. Clean old services`, async () => { + test.skip(`"frodo config import --default -CAD ${allSeparateCloudDirectory}" Import everything from directory "${allSeparateCloudDirectory}", including default scripts. Clean old services`, async () => { const CMD = `frodo config import --default -CAD ${allSeparateCloudDirectory}`; try { await exec(CMD, env); @@ -188,7 +191,7 @@ describe.skip('frodo config import', () => { } }); - test(`"frodo config import -AD ${allSeparateCloudDirectory} --include-active-values" Import everything with secret values from directory "${allSeparateCloudDirectory}"`, async () => { + test.skip(`"frodo config import -AD ${allSeparateCloudDirectory} --include-active-values" Import everything with secret values from directory "${allSeparateCloudDirectory}"`, async () => { const CMD = `frodo config import -AD ${allSeparateCloudDirectory} --include-active-values`; try { await exec(CMD, env); @@ -202,18 +205,34 @@ describe.skip('frodo config import', () => { } }); - test(`"frodo config import -gf test/e2e/exports/all-separate/cloud/global/sync/sync.idm.json" Import sync.idm.json along with extracted mappings and no errors`, async () => { + test.skip(`"frodo config import -gf test/e2e/exports/all-separate/cloud/global/sync/sync.idm.json" Import sync.idm.json along with extracted mappings and no errors`, async () => { const CMD = `frodo config import -gf test/e2e/exports/all-separate/cloud/global/sync/sync.idm.json`; const { stdout } = await exec(CMD, env); expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); }); - test(`"frodo config import --file test/e2e/exports/all-separate/cloud/realm/root-alpha/script/mode.script.json" Import mode.script.json long with extracted scripts and no errors`, async () => { + test.skip(`"frodo config import --file test/e2e/exports/all-separate/cloud/realm/root-alpha/script/mode.script.json" Import mode.script.json long with extracted scripts and no errors`, async () => { const CMD = `frodo config import --file test/e2e/exports/all-separate/cloud/realm/root-alpha/script/mode.script.json`; const { stdout } = await exec(CMD, env); expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); }); + // Cloud IGA Tests + + test.skip(`"frodo config import -af test/e2e/exports/all/all.iga.json": Should import all IGA configuration from single file`, async () => { + const CMD = `frodo config import -af test/e2e/exports/all/all.iga.json`; + const { stdout, stderr } = await exec(CMD, env); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test.skip(`"frodo config import -AD test/e2e/exports/all-separate/iga": Should import all IGA configuration from separate files`, async () => { + const CMD = `frodo config import -AD test/e2e/exports/all-separate/iga`; + const { stdout, stderr } = await exec(CMD, env); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + // Classic Env Tests test.skip(`"frodo config import -adf ${allClassicExport} -m classic" Import everything from "${allClassicFileName}", including default scripts.`, async () => { @@ -283,4 +302,4 @@ describe.skip('frodo config import', () => { const { stdout } = await exec(CMD, classicEnv); expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); }); -}); +}); \ No newline at end of file diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js new file mode 100644 index 000000000..79925202b --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/approvalTask-7e33e73d6763.workflow.js @@ -0,0 +1,23 @@ +/** +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 []; +} +)() diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js new file mode 100644 index 000000000..79925202b --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/fulfillmentTask-7fce35a32915.workflow.js @@ -0,0 +1,23 @@ +/** +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 []; +} +)() diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/scriptTask-493f5ea87636.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/scriptTask-493f5ea87636.workflow.js new file mode 100644 index 000000000..608a2ce0f --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/scriptTask-493f5ea87636.workflow.js @@ -0,0 +1,17 @@ +/* +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; +} +*/ diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/violationTask-50261d9bc712.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/violationTask-50261d9bc712.workflow.js new file mode 100644 index 000000000..79925202b --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/draft/violationTask-50261d9bc712.workflow.js @@ -0,0 +1,23 @@ +/** +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 []; +} +)() diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js new file mode 100644 index 000000000..79925202b --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/approvalTask-7e33e73d6763.workflow.js @@ -0,0 +1,23 @@ +/** +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 []; +} +)() diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js new file mode 100644 index 000000000..79925202b --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/fulfillmentTask-7fce35a32915.workflow.js @@ -0,0 +1,23 @@ +/** +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 []; +} +)() diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/scriptTask-493f5ea87636.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/scriptTask-493f5ea87636.workflow.js new file mode 100644 index 000000000..608a2ce0f --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/scriptTask-493f5ea87636.workflow.js @@ -0,0 +1,17 @@ +/* +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; +} +*/ diff --git a/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/violationTask-50261d9bc712.workflow.js b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/violationTask-50261d9bc712.workflow.js new file mode 100644 index 000000000..79925202b --- /dev/null +++ b/test/e2e/exports/all-separate/cloud/global/workflow/testWorkflow1/published/violationTask-50261d9bc712.workflow.js @@ -0,0 +1,23 @@ +/** +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 []; +} +)() diff --git a/test/e2e/exports/all/all.iga.json b/test/e2e/exports/all/all.iga.json new file mode 100644 index 000000000..e69de29bb diff --git a/test/e2e/exports/all/allWorkflows.workflow.json b/test/e2e/exports/all/allWorkflows.workflow.json new file mode 100644 index 000000000..2c93a0bd7 --- /dev/null +++ b/test/e2e/exports/all/allWorkflows.workflow.json @@ -0,0 +1,29974 @@ +{ + "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" + } + }, + "violationAssigned": { + "_id": "emailTemplate/violationAssigned", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, please review at your earliest convenience.
.
" + }, + "message": { + "en": "A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, 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: Violation Assigned" + } + }, + "violationEscalated": { + "_id": "emailTemplate/violationEscalated", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
The violation for {{object.user.givenName}} {{object.user.sn}} has been escalated to your attention.
" + }, + "message": { + "en": "The violation for {{object.user.givenName}} {{object.user.sn}} 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: Violation Escalation" + } + }, + "violationExpired": { + "_id": "emailTemplate/violationExpired", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} has expired.
" + }, + "message": { + "en": "The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 Violation" + } + }, + "violationReassigned": { + "_id": "emailTemplate/violationReassigned", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, please review at your earliest convenience.
" + }, + "message": { + "en": "The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, 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: Violation Reassigned" + } + }, + "violationReminder": { + "_id": "emailTemplate/violationReminder", + "defaultLocale": "en", + "enabled": true, + "from": "", + "html": { + "en": "
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} is awaiting your action.
" + }, + "message": { + "en": "The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 make decision on violation" + } + } + }, + "event": { + "1e679adb-451c-4aa8-8c8c-cda5ec93bdd5": { + "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": "1e679adb-451c-4aa8-8c8c-cda5ec93bdd5", + "metadata": { + "createdDate": "2026-03-05T15:56:30.380227085Z" + }, + "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" + }, + "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" + }, + "f168e34f-3ae9-4db2-b210-5f9176b7a008": { + "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": "f168e34f-3ae9-4db2-b210-5f9176b7a008", + "metadata": { + "createdDate": "2026-03-05T15:56:32.632271486Z" + }, + "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" + } + }, + "requestForm": { + "9c10b680-a790-4f73-95ed-81b345f0f3e9": { + "assignments": [ + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-24T00:52:45.670896494Z" + }, + "objectId": "requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252" + }, + { + "formId": "9c10b680-a790-4f73-95ed-81b345f0f3e9", + "metadata": { + "createdDate": "2026-02-23T23:37:29.474219019Z" + }, + "objectId": "workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac" + } + ], + "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-05T15:56:26.409519268Z" + }, + "objectId": "requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc" + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-05T15:56:27.411137125Z" + }, + "objectId": "workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915" + }, + { + "formId": "9e3fc668-4e96-4b03-9605-38b830bea26c", + "metadata": { + "createdDate": "2026-03-05T15:56:28.42681398Z" + }, + "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-05T15:56:25.363709073Z" + }, + "name": "test_workflow_request_form_2", + "type": "request" + }, + "c385b530-b912-4dcd-98c8-931673add9b7": { + "assignments": [ + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2025-12-15T17:42:41.495353249Z" + }, + "objectId": "workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d" + }, + { + "formId": "c385b530-b912-4dcd-98c8-931673add9b7", + "metadata": { + "createdDate": "2026-01-30T18:27:54.68190238Z" + }, + "objectId": "requestType/8d0055b3-155f-4885-a415-4f1c536098e8" + } + ], + "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-05T15:56:19.40126505Z" + }, + "objectId": "workflow/testWorkflow1/node/approvalTask-7e33e73d6763" + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-05T15:56:20.371327942Z" + }, + "objectId": "workflow/testWorkflow2/node/approvalTask-7e33e73d6763" + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-05T15:56:21.37552509Z" + }, + "objectId": "workflow/testWorkflow3/node/approvalTask-7e33e73d6763" + }, + { + "formId": "fa1a5e72-d803-4879-bc2a-07a5da3d8ee9", + "metadata": { + "createdDate": "2026-03-05T15:56:22.385209715Z" + }, + "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-05T15:56:18.343008411Z" + }, + "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-05T15:56:44.548070781Z" + }, + "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": { + "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-05T15:56:14.317988333Z" + }, + "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": {} + }, + "applicationGrant": { + "displayName": "Grant Application", + "id": "applicationGrant", + "metadata": { + "createdDate": "2025-10-27T18:13:11.160849055Z" + }, + "notModifiableProperties": [ + "common.userId", + "common.applicationId", + "common.requestIdPrefix" + ], + "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" + } + } + }, + { + "_meta": { + "display": "Account Grant", + "properties": { + "applicationId": { + "display": { + "description": "The application that is granted to the user", + "isVisible": true, + "name": "Application", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "application/id/keyword eq \"${applicationId}\" and item/type/keyword eq \"accountGrant\"" + } + }, + "userId": { + "display": { + "description": "The user who is granted the application", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "applicationId": { + "type": "text" + }, + "userId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "uniqueKeys": [ + "common.userId", + "common.applicationId" + ], + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){ validation.errors.push(\"Justification is required\");} validation;" + ] + }, + "workflow": { + "id": "BasicApplicationGrant", + "type": "bpmn" + } + }, + "applicationRemove": { + "displayName": "Remove Application", + "id": "applicationRemove", + "metadata": { + "createdDate": "2025-10-27T18:13:11.160108315Z" + }, + "notModifiableProperties": [ + "common.userId", + "common.applicationId", + "common.requestIdPrefix" + ], + "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" + } + } + }, + { + "_meta": { + "display": "Account Grant", + "properties": { + "applicationId": { + "display": { + "description": "The application that is granted to the user", + "isVisible": true, + "name": "Application", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "application/id/keyword eq \"${applicationId}\" and item/type/keyword eq \"accountGrant\"" + } + }, + "userId": { + "display": { + "description": "The user who is granted the application", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "applicationId": { + "type": "text" + }, + "userId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "uniqueKeys": [ + "common.userId", + "common.applicationId" + ], + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){ validation.errors.push(\"Justification is required\");} validation;" + ] + }, + "workflow": { + "id": "BasicApplicationRemove", + "type": "bpmn" + } + }, + "createEntitlement": { + "customValidation": null, + "displayName": "Create Entitlement", + "id": "createEntitlement", + "metadata": { + "createdDate": "2025-10-27T18:13:11.159349795Z" + }, + "notModifiableProperties": [ + "entitlement.applicationId", + "entitlement.objectType" + ], + "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": [ + {} + ], + "entitlement": [ + { + "_meta": { + "display": "Entitlement Creation", + "properties": { + "applicationId": { + "display": { + "description": "The application that the entitlement belongs to", + "isVisible": true, + "name": "Application", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "application/id/keyword eq \"${applicationId}\" and item/type/keyword eq \"accountGrant\"" + } + }, + "glossary": { + "display": { + "description": "The contents of the entitlement's glossary (business data)", + "isVisible": true, + "name": "Glossary" + }, + "isInternal": true, + "isRequired": false + }, + "object": { + "display": { + "description": "The contents of the entitlement object (technical data)", + "isVisible": true, + "name": "Entitlement Contents" + }, + "isInternal": true, + "isRequired": false + }, + "objectType": { + "display": { + "description": "Object type of the entitlement in the external system (e.g. __GROUP__)", + "isVisible": true, + "name": "Object Type" + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true + } + }, + "type": "system" + }, + "properties": { + "applicationId": { + "type": "text" + }, + "glossary": { + "type": "object" + }, + "object": { + "type": "object" + }, + "objectType": { + "type": "text" + } + } + } + ] + }, + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []};if(object.requester.id.startsWith(\"managed/user/\")){var userId = object.requester.id.split('/');try{var application = openidm.action(\"iga/governance/application/\" + request.entitlement.applicationId, 'GET', {}, {\"endUserId\": userId[2]});if(!application.permissions.createEntitlement){validation.errors.push(\"User does not have permission to create this entitlement.\");}}catch(e){validation.errors.push(\"User does not have permission to create this entitlement.\")}}if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){validation.errors.push(\"Justification is required\");}validation;" + ] + }, + "workflow": { + "id": "CreateEntitlement", + "type": "bpmn" + } + }, + "createUser": { + "customValidation": null, + "displayName": "Create User", + "id": "createUser", + "metadata": { + "createdDate": "2025-10-27T18:13:11.160273205Z" + }, + "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": [ + {} + ], + "user": [ + { + "_meta": { + "display": "User Creation", + "properties": { + "object": { + "display": { + "description": "The contents of the user object.", + "isVisible": true, + "name": "User Contents" + }, + "isInternal": true, + "isRequired": true + } + }, + "type": "system" + }, + "properties": { + "object": { + "type": "object" + } + } + } + ] + }, + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []};if(object.requester.id.startsWith(\"managed/user/\")){var userId = object.requester.id.split('/');try{var user = openidm.action(\"iga/governance/user\", 'GET', {}, {\"endUserId\": userId[2], \"scopePermission\": \"createUser\", \"_queryFilter\": \"id+eq+'\" + userId[2] + \"'\"});if(user.result.length === 0){validation.errors.push(\"User does not have permission to create users.\");}}catch(e){validation.errors.push(\"User does not have permission to create users.\" + e)}}if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){validation.errors.push(\"Justification is required\");}validation;" + ] + }, + "workflow": { + "id": "CreateUser", + "type": "bpmn" + } + }, + "deleteUser": { + "displayName": "Delete User", + "id": "deleteUser", + "metadata": { + "createdDate": "2025-10-27T18:13:11.161392965Z" + }, + "notModifiableProperties": [ + "user.userId" + ], + "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": [ + {} + ], + "user": [ + { + "_meta": { + "display": "User Deletion", + "properties": { + "userId": { + "display": { + "description": "The ID of the user being deleted", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "userId": { + "type": "text" + } + } + } + ] + }, + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []};if(object.requester.id.startsWith(\"managed/user/\")){var userId = object.requester.id.split('/');try{var user = openidm.action(\"iga/governance/user\", 'GET', {}, {\"endUserId\": userId[2], \"scopePermission\": \"deleteUser\", \"_queryFilter\": \"id+eq+'\" + request.user.userId + \"'\"});if(!user.result[0].permissions.deleteUser){validation.errors.push(\"User does not have permission to delete this user.\");}}catch(e){validation.errors.push(\"User does not have permission to delete this user.\")}}if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){validation.errors.push(\"Justification is required\");}validation;" + ] + }, + "workflow": { + "id": "DeleteUser", + "type": "bpmn" + } + }, + "e9dcd66e-1388-4872-9790-66df2f44deef": { + "custom": true, + "displayName": "test_workflow_request_type_1", + "id": "e9dcd66e-1388-4872-9790-66df2f44deef", + "metadata": { + "createdDate": "2026-03-05T15:56:41.545487871Z" + }, + "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": { + "id": "testWorkflow1" + } + }, + "entitlementGrant": { + "displayName": "Grant Entitlement", + "id": "entitlementGrant", + "metadata": { + "createdDate": "2025-10-27T18:13:11.159645156Z" + }, + "notModifiableProperties": [ + "common.userId", + "common.entitlementId", + "common.requestIdPrefix" + ], + "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" + } + } + }, + { + "_meta": { + "displayName": "entitlementGrant", + "properties": { + "entitlementId": { + "display": { + "description": "The entitlement that should be granted to the user (assignment id)", + "isVisible": true, + "name": "Entitlement", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "assignment/id/keyword eq \"${entitlementId}\" and item/type/keyword eq \"entitlementGrant\"" + } + }, + "userId": { + "display": { + "description": "The user who should be granted the entitlement", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "entitlementId": { + "type": "text" + }, + "userId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "uniqueKeys": [ + "common.userId", + "common.entitlementId" + ], + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){ validation.errors.push(\"Justification is required\");} validation;" + ] + }, + "workflow": { + "id": "BasicEntitlementGrant", + "type": "bpmn" + } + }, + "entitlementRemove": { + "displayName": "Remove Entitlement", + "id": "entitlementRemove", + "metadata": { + "createdDate": "2025-10-27T18:13:11.160687845Z" + }, + "notModifiableProperties": [ + "common.userId", + "common.entitlementId", + "common.requestIdPrefix" + ], + "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" + } + } + }, + { + "_meta": { + "displayName": "entitlementGrant", + "properties": { + "entitlementId": { + "display": { + "description": "The entitlement that should be granted to the user (assignment id)", + "isVisible": true, + "name": "Entitlement", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "assignment/id/keyword eq \"${entitlementId}\" and item/type/keyword eq \"entitlementGrant\"" + } + }, + "userId": { + "display": { + "description": "The user who should be granted the entitlement", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "entitlementId": { + "type": "text" + }, + "userId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "uniqueKeys": [ + "common.userId", + "common.entitlementId" + ], + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){ validation.errors.push(\"Justification is required\");} validation;" + ] + }, + "workflow": { + "id": "BasicEntitlementRemove", + "type": "bpmn" + } + }, + "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" + } + } + } + ], + "custom": [ + {} + ] + }, + "validation": null, + "workflow": { + "id": "phhDelegatedUserDisableWorkflow" + } + }, + "modifyEntitlement": { + "displayName": "Modify Entitlement", + "id": "modifyEntitlement", + "metadata": { + "createdDate": "2025-10-27T18:13:11.161001305Z" + }, + "notModifiableProperties": [ + "entitlement.entitlementId" + ], + "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": [ + {} + ], + "entitlement": [ + { + "_meta": { + "display": "Entitlement Modification", + "properties": { + "entitlementId": { + "display": { + "description": "The ID of the entitlement being modified (assignment id)", + "isVisible": true, + "name": "Entitlement", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "assignment/id/keyword eq \"${entitlementId}\" and item/type/keyword eq \"entitlementGrant\"" + } + }, + "glossary": { + "display": { + "description": "The contents of the entitlement's glossary (business data)", + "isVisible": true, + "name": "Glossary" + }, + "isInternal": true, + "isRequired": false + }, + "object": { + "display": { + "description": "The contents of the entitlement object (technical data)", + "isVisible": true, + "name": "Entitlement Contents" + }, + "isInternal": true, + "isRequired": false + } + }, + "type": "system" + }, + "properties": { + "entitlementId": { + "type": "text" + }, + "glossary": { + "type": "object" + }, + "object": { + "type": "object" + } + } + } + ] + }, + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []};if(object.requester.id.startsWith(\"managed/user/\")){var userId = object.requester.id.split('/');try{var entitlement = openidm.action(\"iga/governance/entitlement/\" + request.entitlement.entitlementId, 'GET', {}, {\"endUserId\": userId[2]});if(!entitlement.permissions.modifyEntitlement){validation.errors.push(\"User does not have permission to modify this entitlement.\");}}catch(e){validation.errors.push(\"User does not have permission to modify this entitlement.\")}}if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){validation.errors.push(\"Justification is required\");}validation;" + ] + }, + "workflow": { + "id": "ModifyEntitlement", + "type": "bpmn" + } + }, + "modifyUser": { + "displayName": "Modify User", + "id": "modifyUser", + "metadata": { + "createdDate": "2025-10-27T18:13:11.161131905Z" + }, + "notModifiableProperties": [ + "user.userId" + ], + "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": [ + {} + ], + "user": [ + { + "_meta": { + "display": "User Modification", + "properties": { + "object": { + "display": { + "description": "The contents of the user object. Does not require full contents, works as a patch operation.", + "isVisible": true, + "name": "User Contents" + }, + "isInternal": true, + "isRequired": true + }, + "userId": { + "display": { + "description": "The ID of the user being modified", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "object": { + "type": "object" + }, + "userId": { + "type": "text" + } + } + } + ] + }, + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []};if(object.requester.id.startsWith(\"managed/user/\")){var userId = object.requester.id.split('/');try{var user = openidm.action(\"iga/governance/user\", 'GET', {}, {\"endUserId\": userId[2], \"scopePermission\": \"modifyUser\", \"_queryFilter\": \"id+eq+'\" + request.user.userId + \"'\"});if(!user.result[0].permissions.modifyUser){validation.errors.push(\"User does not have permission to modify this user.\");}}catch(e){validation.errors.push(\"User does not have permission to modify this user.\")}}if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){validation.errors.push(\"Justification is required\");}validation;" + ] + }, + "workflow": { + "id": "ModifyUser", + "type": "bpmn" + } + }, + "roleGrant": { + "displayName": "Grant Role", + "id": "roleGrant", + "metadata": { + "createdDate": "2025-10-27T18:13:11.158911836Z" + }, + "notModifiableProperties": [ + "common.userId", + "common.roleId", + "common.requestIdPrefix" + ], + "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" + } + } + }, + { + "_meta": { + "properties": { + "roleId": { + "display": { + "description": "The role that the user will have assigned", + "isVisible": true, + "name": "Role", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "role/id/keyword eq \"${roleId}\" and item/type/keyword eq \"roleMembership\"" + } + }, + "userId": { + "display": { + "description": "The user who is getting the role assigned to", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "roleId": { + "type": "text" + }, + "userId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "uniqueKeys": [ + "common.userId", + "common.roleId" + ], + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){ validation.errors.push(\"Justification is required\");} validation;" + ] + }, + "workflow": { + "id": "BasicRoleGrant", + "type": "bpmn" + } + }, + "roleRemove": { + "displayName": "Remove Role", + "id": "roleRemove", + "metadata": { + "createdDate": "2025-10-27T18:13:11.159850775Z" + }, + "notModifiableProperties": [ + "common.userId", + "common.roleId", + "common.requestIdPrefix" + ], + "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" + } + } + }, + { + "_meta": { + "properties": { + "roleId": { + "display": { + "description": "The role that the user will have assigned", + "isVisible": true, + "name": "Role", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/iga/index/catalog", + "query": "role/id/keyword eq \"${roleId}\" and item/type/keyword eq \"roleMembership\"" + } + }, + "userId": { + "display": { + "description": "The user who is getting the role assigned to", + "isVisible": true, + "name": "User", + "order": 1 + }, + "isInternal": true, + "isMultiValue": false, + "isRequired": true, + "lookup": { + "path": "/openidm/managed/user" + } + } + }, + "type": "system" + }, + "properties": { + "roleId": { + "type": "text" + }, + "userId": { + "type": "text" + } + } + } + ], + "custom": [ + {} + ] + }, + "uniqueKeys": [ + "common.userId", + "common.roleId" + ], + "validation": { + "source": [ + "var validation = {\"errors\" : [], \"comments\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \"\")){ validation.errors.push(\"Justification is required\");} validation;" + ] + }, + "workflow": { + "id": "BasicRoleRemove", + "type": "bpmn" + } + } + }, + "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", + "x": 2822, + "y": 352 + }, + "startNode": { + "connections": { + "start": "scriptTask-4e9121fe850a" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "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)" + }, + "x": 682, + "y": 155 + }, + "exclusiveGateway-5167870154a9": { + "x": 1855, + "y": 84 + }, + "exclusiveGateway-621c9996676a": { + "x": 433, + "y": 117.015625 + }, + "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-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" + }, + "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", + "x": 2087, + "y": 210 + }, + "startNode": { + "connections": { + "start": "scriptTask-b80009644545" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "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)" + }, + "x": 726, + "y": 162 + }, + "exclusiveGateway-2bf686c17905": { + "x": 457, + "y": 95.015625 + }, + "inclusiveGateway-0c53868eeb2a": { + "x": 1125, + "y": 59.015625 + }, + "scriptTask-626899b6e99a": { + "x": 1713, + "y": 102 + }, + "scriptTask-b80009644545": { + "x": 164, + "y": 108.015625 + }, + "scriptTask-ba009484a101": { + "x": 887, + "y": 68.015625 + }, + "scriptTask-c58309b8c470": { + "x": 1714, + "y": 207 + }, + "waitTask-0431eab1902c": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 1352, + "y": 75.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" + }, + "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", + "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": "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", + "x": 1883, + "y": 97 + }, + "startNode": { + "connections": { + "start": "scriptTask-ca9504ae90d8" + }, + "id": "startNode", + "x": 12, + "y": 110 + }, + "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": 725, + "y": 59 + }, + "exclusiveGateway-abbb089758c8": { + "x": 433, + "y": 89.015625 + }, + "inclusiveGateway-8803458e3a77": { + "x": 1039, + "y": 54.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 1556, + "y": 85.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 1561, + "y": 205.015625 + }, + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 111.015625 + }, + "scriptTask-e8842de66fbb": { + "x": 901, + "y": 243.015625 + }, + "waitTask-b6e654628b18": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 1279, + "y": 94.015625 + } + } + }, + "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", + "x": 2889, + "y": 467 + }, + "startNode": { + "connections": { + "start": "scriptTask-d76490953517" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "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)" + }, + "x": 727, + "y": 144.015625 + }, + "exclusiveGateway-48e748c42994": { + "x": 1694, + "y": 23.015625 + }, + "exclusiveGateway-8cd9decab2e4": { + "x": 453, + "y": 120.015625 + }, + "inclusiveGateway-57e9b96eb570": { + "x": 939, + "y": 39.015625 + }, + "inclusiveGateway-d18d59004c0c": { + "x": 2288, + "y": 68.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 1941, + "y": 65.015625 + }, + "scriptTask-0b56191887de": { + "x": 1939, + "y": 149.015625 + }, + "scriptTask-32dada3fc9f9": { + "x": 2551, + "y": 102.015625 + }, + "scriptTask-3eab1948f1ec": { + "x": 1428, + "y": 56.015625 + }, + "scriptTask-8506123e6208": { + "x": 721, + "y": 41.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 1399, + "y": 325.015625 + }, + "scriptTask-d76490953517": { + "x": 161, + "y": 142.015625 + }, + "waitTask-4e25b1ee7a14": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.startDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 1165, + "y": 13.015625 + } + } + }, + "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", + "x": 1823, + "y": 205 + }, + "startNode": { + "connections": { + "start": "scriptTask-c99a721d2b93" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "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)" + }, + "x": 694, + "y": 234 + }, + "exclusiveGateway-53007af1f4bf": { + "x": 479, + "y": 57.015625 + }, + "inclusiveGateway-a83e210b90d1": { + "x": 992, + "y": 70.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 1498, + "y": 76.015625 + }, + "scriptTask-6dde9c0ec213": { + "x": 785, + "y": 84.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 1165, + "y": 285.015625 + }, + "scriptTask-c99a721d2b93": { + "x": 187, + "y": 143.015625 + }, + "waitTask-e65fcbd06a6d": { + "events": { + "resumeDateNumber": 1, + "resumeDateRequestProperty": "request.common.endDate", + "resumeDateTimeSpan": "day(s)", + "resumeDateType": "requestProp" + }, + "x": 1247, + "y": 84.015625 + } + } + }, + "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", + "x": 1380, + "y": 400 + }, + "startNode": { + "connections": { + "start": "violationTask-df7f65b04ec3" + }, + "id": "startNode", + "x": 60, + "y": 140 + }, + "uiConfig": { + "exclusiveGateway-b1e244b742b5": { + "x": 760, + "y": 90 + }, + "scriptTask-313f487929a4": { + "x": 485, + "y": 80 + }, + "scriptTask-690cd5adc1b6": { + "x": 485, + "y": 164 + }, + "scriptTask-6e8507beca08": { + "x": 1040, + "y": 80.5 + }, + "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)" + }, + "x": 230, + "y": 110 + } + } + }, + "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", + "x": 1357, + "y": 209 + }, + "startNode": { + "connections": { + "start": "scriptTask-c59ee376a37c" + }, + "id": "startNode", + "x": 70, + "y": 140 + }, + "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)" + }, + "x": 722, + "y": 156 + }, + "exclusiveGateway-67a954f33919": { + "x": 445, + "y": 120.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 1018, + "y": 58.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 1014, + "y": 226.015625 + }, + "scriptTask-c59ee376a37c": { + "x": 194, + "y": 143.015625 + }, + "scriptTask-e21178ab80f7": { + "x": 743, + "y": 56.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" + }, + "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", + "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": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "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": "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", + "x": 1378, + "y": 118 + }, + "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": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 713, + "y": 169 + }, + "exclusiveGateway-abbb089758c8": { + "x": 433, + "y": 89.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 993, + "y": 31.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 994, + "y": 237.015625 + }, + "scriptTask-ca9504ae90d8": { + "x": 135, + "y": 111.015625 + }, + "scriptTask-e8842de66fbb": { + "x": 708, + "y": 26.015625 + } + } + }, + "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", + "x": 1774, + "y": 221 + }, + "startNode": { + "connections": { + "start": "scriptTask-365b50ab00a7" + }, + "id": "startNode", + "x": 12, + "y": 110 + }, + "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 + }, + "x": 1128, + "y": 260 + }, + "exclusiveGateway-abbb089758c8": { + "x": 847, + "y": 164.015625 + }, + "exclusiveGateway-c82a357d8c38": { + "x": 306, + "y": 87.015625 + }, + "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)" + }, + "x": 595, + "y": 46.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 1413, + "y": 291.015625 + }, + "scriptTask-365b50ab00a7": { + "x": 95, + "y": 106.015625 + }, + "scriptTask-87ad089a5484": { + "x": 591, + "y": 224.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 1412, + "y": 118.015625 + }, + "scriptTask-e8842de66fbb": { + "x": 1124, + "y": 169.015625 + } + } + }, + "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", + "x": 1223, + "y": 156 + }, + "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": { + "expirationDate": 7, + "expirationDateType": "duration", + "expirationDateVariable": "", + "expirationTimeSpan": "day(s)", + "reminderDate": 3, + "reminderTimeSpan": "day(s)" + }, + "x": 691, + "y": 168 + }, + "exclusiveGateway-abbb089758c8": { + "x": 434, + "y": 89.015625 + }, + "scriptTask-0359a9d77ee2": { + "x": 946, + "y": 78.015625 + }, + "scriptTask-aec6c36b3a45": { + "x": 936, + "y": 242.015625 + }, + "scriptTask-ca9504ae90d8": { + "x": 136, + "y": 111.015625 + }, + "scriptTask-e8842de66fbb": { + "x": 693, + "y": 79.015625 + } + } + }, + "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", + "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 + }, + "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" + } + }, + "phhBasicEntitlementGrant": { + "draft": { + "childType": false, + "description": "phh-BasicEntitlementGrant", + "displayName": "phh-BasicEntitlementGrant", + "id": "phhBasicEntitlementGrant", + "mutable": true, + "name": "phh-BasicEntitlementGrant", + "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 + }, + "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": { + "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": "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": 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() {", + " 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 + } + } +} diff --git a/test/e2e/iga-workflow-delete.e2e.test.js b/test/e2e/iga-workflow-delete.e2e.test.js new file mode 100644 index 000000000..6be1e89e0 --- /dev/null +++ b/test/e2e/iga-workflow-delete.e2e.test.js @@ -0,0 +1,130 @@ +/** + * 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 delete -di testWorkflow1 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow delete -pi testWorkflow1 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow delete --workflow-id testWorkflow4 +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow delete --draft-only -a +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow delete --published-only -a +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow delete -dp --all + */ + +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 delete`, () => { + test(`"frodo iga workflow delete -di testWorkflow1": should delete draft testWorkflow1"`, async () => { + const CMD = `frodo iga workflow delete -di testWorkflow1`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow delete -pi testWorkflow1": should delete published testWorkflow1`, async () => { + const CMD = `frodo iga workflow delete -pi testWorkflow1`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow delete --workflow-id testWorkflow4": Should delete both draft and published testWorkflow4`, async () => { + const CMD = `frodo iga workflow delete --workflow-id testWorkflow4`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow delete --draft-only -a": should delete all draft workflows`, async () => { + const CMD = `frodo iga workflow delete --draft-only -a`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); +/** + * Delete all and delete published only require a try catch because the workflow + * custom-1-BasicEntitlementGrant has a conflicting instance that makes it impossible to delete. + * As far as we know this conflicting instance cannot be removed and will require ping support to resolve + */ + test(`"frodo iga workflow delete --published-only -a": should delete all published workflows`, async () => { + const CMD = `frodo iga workflow delete --published-only -a`; + let stdout = '' + let stderr = '' + try{ + ({ stdout, stderr } = await exec(CMD, igaEnv)); + } catch (e){ + stdout = e.stdout ?? '' + stderr = e.stderr ?? e.message + } + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow delete -dp --all": should delete all workflows`, async () => { + const CMD = `frodo iga workflow delete -dp --all`; + let stdout = ''; + let stderr = ''; + try{ + ({ stdout, stderr } = await exec(CMD, igaEnv)); + } + catch (e){ + stdout = e.stdout ?? '' + stderr = e.stderr ?? e.message + } + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + });} + +); 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-import.e2e.test.js b/test/e2e/iga-workflow-import.e2e.test.js new file mode 100644 index 000000000..2ee2d7621 --- /dev/null +++ b/test/e2e/iga-workflow-import.e2e.test.js @@ -0,0 +1,122 @@ +/** + * 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 import -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 import --workflow-id testWorkflow1 --file test/e2e/exports/all/allWorkflows.workflow.json --no-deps +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow import -f test/e2e/exports/all/allWorkflows.workflow.json --no-deps +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow import -af 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 import --all --file test/e2e/exports/all/allWorkflows.workflow.json --no-deps +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow import -AD test/e2e/exports/all-separate/cloud/global/workflow +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://openam-frodo-dev.forgeblocks.com/am frodo iga workflow import --all-separate --directory test/e2e/exports/all-separate/cloud/global/workflow --no-deps + */ +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 allDirectory = "test/e2e/exports/all"; +const allWorkflowsFileName = "allWorkflows.workflow.json"; +const allWorkflowsExport = `${allDirectory}/${allWorkflowsFileName}`; +const allSeparateWorkflowsDirectory = `test/e2e/exports/all-separate/cloud/global/workflow`; + +describe(`frodo iga workflow import`, () => { + test(`"frodo iga workflow import -i testWorkflow1 -f ${allWorkflowsExport}": should import testWorkflow1 from the file "${allWorkflowsExport}" with dependencies`, async () => { + const CMD = `frodo iga workflow import -i testWorkflow1 -f ${allWorkflowsExport}`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow import --workflow-id testWorkflow1 --file ${allWorkflowsExport} --no-deps": should import testWorkflow1 from the file "${allWorkflowsExport}"`, async () => { + const CMD = `frodo iga workflow import --workflow-id testWorkflow1 --file ${allWorkflowsExport} --no-deps`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow import -f ${allWorkflowsExport} --no-deps": should import first workflow from the file "${allWorkflowsExport}"`, async () => { + const CMD = `frodo iga workflow import -f ${allWorkflowsExport} --no-deps`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow import -af ${allWorkflowsExport}": should import all workflows from the file "${allWorkflowsExport}" with dependencies`, async () => { + const CMD = `frodo iga workflow import -af ${allWorkflowsExport}`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow import --all --file ${allWorkflowsExport} --no-deps": should import all workflows from the file "${allWorkflowsExport}"`, async () => { + const CMD = `frodo iga workflow import --all --file ${allWorkflowsExport} --no-deps`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow import -AD ${allSeparateWorkflowsDirectory}": should import all workflows from the directory "${allSeparateWorkflowsDirectory}" with dependencies`, async () => { + const CMD = `frodo iga workflow import -AD ${allSeparateWorkflowsDirectory}`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); + + test(`"frodo iga workflow import --all-separate --directory ${allSeparateWorkflowsDirectory} --no-deps": should import all workflows from the directory "${allSeparateWorkflowsDirectory}"`, async () => { + const CMD = `frodo iga workflow import --all-separate --directory ${allSeparateWorkflowsDirectory} --no-deps`; + const { stdout, stderr } = await exec(CMD, igaEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + expect(removeAnsiEscapeCodes(stderr)).toMatchSnapshot(); + }); +}); 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/default_2470140894/recording.har b/test/e2e/mocks/default_2470140894/recording.har new file mode 100644 index 000000000..4bec2c6b1 --- /dev/null +++ b/test/e2e/mocks/default_2470140894/recording.har @@ -0,0 +1,2489 @@ +{ + "log": { + "_recordingName": "default", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "d5dac29373cb328e77bd041f21a28f3a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/createNonEmployee/draft" + }, + "response": { + "bodySize": 7667, + "content": { + "mimeType": "application/json", + "size": 7667, + "text": "{\"id\":\"createNonEmployee\",\"name\":\"CreateNonEmployee\",\"displayName\":\"CreateNonEmployee\",\"description\":\"CreateNonEmployee\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"approvalTask-74cf85c35437\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-aec6c36b3a45\"},{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0359a9d77ee2\"}],\"approvalMode\":\"any\",\"actors\":{\"isExpression\":true,\"value\":\"(function() {\\n var systemSettings = openidm.action('iga/commons/config/iga_access_request', 'GET', {}, {});\\n return systemSettings.defaultApprover;\\n})()\\n\"},\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-0359a9d77ee2\",\"displayName\":\"Create User\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-aec6c36b3a45\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-ca9504ae90d8\",\"displayName\":\"Permission Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-abbb089758c8\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-e8842de66fbb\",\"displayName\":\"Auto-Approval\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"scriptTask-0359a9d77ee2\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"exclusiveGateway-abbb089758c8\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApprove\",\"step\":\"scriptTask-e8842de66fbb\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-74cf85c35437\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}}],\"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})()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:32 GMT" + }, + { + "name": "content-length", + "value": "7667" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "baf1c645-7cfb-42db-bab3-d8d11bb7a38e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:32.713Z", + "time": 576, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 576 + } + }, + { + "_id": "2f8fb7f14dec674c26205d8818e09673", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1879, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhBasicApplicationGrant/draft" + }, + "response": { + "bodySize": 22464, + "content": { + "mimeType": "application/json", + "size": 22464, + "text": "{\"id\":\"phhBasicApplicationGrant\",\"name\":\"phh-BasicApplicationGrant\",\"displayName\":\"phh-BasicApplicationGrant\",\"description\":\"phh-BasicApplicationGrant\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"approvalTask-74cf85c35437\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-c444d08a6099\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.applicationOwner[0].id\"},\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-626899b6e99a\",\"displayName\":\"Application Grant Validation\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-5167870154a9\"}],\"language\":\"javascript\",\"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); \\n\"}},{\"name\":\"scriptTask-c58309b8c470\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"exclusiveGateway-5167870154a9\",\"displayName\":\"Validation Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"failureReason == null\",\"outcome\":\"validationSuccess\",\"step\":\"scriptTask-3a74557440fb\"},{\"condition\":\"failureReason != null\",\"outcome\":\"validationFailure\",\"step\":\"scriptTask-744ef6a8b9a2\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-3a74557440fb\",\"displayName\":\"Provisioning\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-7d248125a9bd\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-744ef6a8b9a2\",\"displayName\":\"Application Grant Validation Failure\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-4e9121fe850a\",\"displayName\":\"Request Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-621c9996676a\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"exclusiveGateway-621c9996676a\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApproval\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-74cf85c35437\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-0e5b6187ea62\",\"displayName\":\"Request Approved\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-a71e67faaad1\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"waitTask-13cf96ebeb37\",\"displayName\":\"Wait Task\",\"type\":\"waitTask\",\"waitTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"COMPLETE\",\"step\":\"scriptTask-626899b6e99a\"}],\"resumeDate\":{\"isExpression\":true,\"value\":\"requestIndex.startDate\"},\"events\":null}},{\"name\":\"inclusiveGateway-a71e67faaad1\",\"displayName\":\"Has Start Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableWait == true\",\"outcome\":\"hasStartDate\",\"step\":\"waitTask-13cf96ebeb37\"},{\"condition\":\"enableWait == false\",\"outcome\":\"noStartDate\",\"step\":\"scriptTask-626899b6e99a\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"inclusiveGateway-7d248125a9bd\",\"displayName\":\"Has End Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableEndWait == true\",\"outcome\":\"hasEndDate\",\"step\":\"scriptTask-14acc58c28dd\"},{\"condition\":\"enableEndWait == false\",\"outcome\":\"noEndDate\",\"step\":null}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"scriptTask-14acc58c28dd\",\"displayName\":\"Create Removal Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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 }\\n\"}},{\"name\":\"scriptTask-c444d08a6099\",\"displayName\":\"Check LOB\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-2fbd3e7aa50c\"}],\"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*/\\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}\\n\"}},{\"name\":\"inclusiveGateway-2fbd3e7aa50c\",\"displayName\":\"LOB\",\"type\":\"scriptTask\",\"scriptTask\":{\"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\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"approvalTask-440960b2744d\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"approvalTask-6ad92fcbe998\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"approvalTask-ffa3a83b9dfd\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"approvalTask-5d1d9c5d8384\",\"displayName\":\"Sales Approver Role\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:33 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e097d7a-f468-4efa-b103-87f0cda6fcd5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:33.460Z", + "time": 585, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 585 + } + }, + { + "_id": "95aa524db5de42d3c5e10964067180b0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1879, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhBasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 14974, + "content": { + "mimeType": "application/json", + "size": 14974, + "text": "{\"id\":\"phhBasicEntitlementGrant\",\"name\":\"phh-BasicEntitlementGrant\",\"displayName\":\"phh-BasicEntitlementGrant\",\"description\":\"phh-BasicEntitlementGrant\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"approvalTask-74cf85c35437\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-e21178ab80f7\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-aec6c36b3a45\"}],\"approvalMode\":\"any\",\"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}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-3eab1948f1ec\",\"displayName\":\"Entitlement Grant Validation\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-48e748c42994\"}],\"language\":\"javascript\",\"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); \\n\"}},{\"name\":\"exclusiveGateway-48e748c42994\",\"displayName\":\"Validation Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"failureReason == null\",\"outcome\":\"validationFlowSuccess\",\"step\":\"scriptTask-0359a9d77ee2\"},{\"condition\":\"failureReason != null\",\"outcome\":\"validationFlowFailure\",\"step\":\"scriptTask-0b56191887de\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-0b56191887de\",\"displayName\":\"Entitlement Grant Validation Failure\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-0359a9d77ee2\",\"displayName\":\"Provisioning\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-f105ed2b352d\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-aec6c36b3a45\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-e04f42607ba5\",\"displayName\":\"Request Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-67a954f33919\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-e21178ab80f7\",\"displayName\":\"Request Approved\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-3f85f36eeeef\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"exclusiveGateway-67a954f33919\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApproval\",\"step\":\"scriptTask-e21178ab80f7\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-74cf85c35437\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"inclusiveGateway-3f85f36eeeef\",\"displayName\":\"Has Start Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableWait == true\",\"outcome\":\"hasStartDate\",\"step\":\"waitTask-0d53639996da\"},{\"condition\":\"enableWait == false\",\"outcome\":\"noStartDate\",\"step\":\"scriptTask-3eab1948f1ec\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"waitTask-0d53639996da\",\"displayName\":\"Wait Task\",\"type\":\"waitTask\",\"waitTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"COMPLETE\",\"step\":\"scriptTask-3eab1948f1ec\"}],\"resumeDate\":{\"isExpression\":true,\"value\":\"requestIndex.request.common.startDate\"},\"events\":null}},{\"name\":\"inclusiveGateway-f105ed2b352d\",\"displayName\":\"Has End Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableEndWait == true\",\"outcome\":\"hasEndDate\",\"step\":\"scriptTask-91769554db51\"},{\"condition\":\"enableEndWait == false\",\"outcome\":\"noEndDate\",\"step\":null}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"scriptTask-91769554db51\",\"displayName\":\"Create Removal Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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 }\\n\"}}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:33 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "51a2ccf0-a000-4333-acc9-8ad00321a229" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:34.206Z", + "time": 590, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 590 + } + }, + { + "_id": "0fe8de309c0574e489135e6c3829fd3f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1886, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhInternalRoleEntitlementGrant/draft" + }, + "response": { + "bodySize": 15002, + "content": { + "mimeType": "application/json", + "size": 15002, + "text": "{\"id\":\"phhInternalRoleEntitlementGrant\",\"name\":\"phh-InternalRoleEntitlementGrant\",\"displayName\":\"phh-InternalRoleEntitlementGrant\",\"description\":\"phh-InternalRoleEntitlementGrant\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"approvalTask-74cf85c35437\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-e21178ab80f7\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-aec6c36b3a45\"}],\"approvalMode\":\"any\",\"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}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-3eab1948f1ec\",\"displayName\":\"Entitlement Grant Validation\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-48e748c42994\"}],\"language\":\"javascript\",\"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); \\n\"}},{\"name\":\"exclusiveGateway-48e748c42994\",\"displayName\":\"Validation Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"failureReason == null\",\"outcome\":\"validationFlowSuccess\",\"step\":\"scriptTask-0359a9d77ee2\"},{\"condition\":\"failureReason != null\",\"outcome\":\"validationFlowFailure\",\"step\":\"scriptTask-0b56191887de\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-0b56191887de\",\"displayName\":\"Entitlement Grant Validation Failure\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-0359a9d77ee2\",\"displayName\":\"Provisioning\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-f105ed2b352d\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-aec6c36b3a45\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-e04f42607ba5\",\"displayName\":\"Request Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-67a954f33919\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-e21178ab80f7\",\"displayName\":\"Request Approved\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-3f85f36eeeef\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"exclusiveGateway-67a954f33919\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApproval\",\"step\":\"scriptTask-e21178ab80f7\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-74cf85c35437\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"inclusiveGateway-3f85f36eeeef\",\"displayName\":\"Has Start Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableWait == true\",\"outcome\":\"hasStartDate\",\"step\":\"waitTask-0d53639996da\"},{\"condition\":\"enableWait == false\",\"outcome\":\"noStartDate\",\"step\":\"scriptTask-3eab1948f1ec\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"waitTask-0d53639996da\",\"displayName\":\"Wait Task\",\"type\":\"waitTask\",\"waitTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"COMPLETE\",\"step\":\"scriptTask-3eab1948f1ec\"}],\"resumeDate\":{\"isExpression\":true,\"value\":\"requestIndex.request.common.startDate\"},\"events\":null}},{\"name\":\"inclusiveGateway-f105ed2b352d\",\"displayName\":\"Has End Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableEndWait == true\",\"outcome\":\"hasEndDate\",\"step\":\"scriptTask-91769554db51\"},{\"condition\":\"enableEndWait == false\",\"outcome\":\"noEndDate\",\"step\":null}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"scriptTask-91769554db51\",\"displayName\":\"Create Removal Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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 }\\n\"}}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:34 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "e7fc251b-5a0e-4d8d-a56d-8f7a30862a3d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:34.960Z", + "time": 604, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 604 + } + }, + { + "_id": "fdce44855fefb08baae37b8fa6701ac4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhNewUserCreate/draft" + }, + "response": { + "bodySize": 7525, + "content": { + "mimeType": "application/json", + "size": 7525, + "text": "{\"id\":\"phhNewUserCreate\",\"name\":\"phh-new-user-create\",\"displayName\":\"phh-new-user-create\",\"description\":\"phh-new-user-create\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-626899b6e99a\",\"displayName\":\"User Create Validation\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-c58309b8c470\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-4e9121fe850a\",\"displayName\":\"Request Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-621c9996676a\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"exclusiveGateway-621c9996676a\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApproval\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-75cf4247ba1d\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-0e5b6187ea62\",\"displayName\":\"Request Approved\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"scriptTask-626899b6e99a\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"approvalTask-75cf4247ba1d\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-626899b6e99a\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:35 GMT" + }, + { + "name": "content-length", + "value": "7525" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "419ae3a0-8028-4a72-b589-b27ab18868b0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:35.720Z", + "time": 584, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 584 + } + }, + { + "_id": "26c6e7586e711f4d5f9fa15f45f2f06f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow1/draft" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow1\",\"name\":\"test_workflow_1\",\"displayName\":\"test_workflow_1\",\"description\":\"test_workflow_1\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:36 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "79425fdf-4de4-436d-93e2-0ed95f9d38df" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:36.461Z", + "time": 596, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 596 + } + }, + { + "_id": "6108666766ee10a90ce80d90695f1801", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow4/draft" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow4\",\"name\":\"test_workflow_4\",\"displayName\":\"test_workflow_4\",\"description\":\"test_workflow_4\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:36 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "e5823244-ff66-4fff-a7e5-9fe2ecfc5d3c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:37.216Z", + "time": 587, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 587 + } + }, + { + "_id": "c957750a2b14ecc14bb288b3bde348a8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow7/draft" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow7\",\"name\":\"test_workflow_7\",\"displayName\":\"test_workflow_7\",\"description\":\"test_workflow_7\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:37 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "d5c77960-2fac-4e14-bfcc-3f3e7e997a41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:37.972Z", + "time": 689, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 689 + } + }, + { + "_id": "11577a0c3a43ef0d2f1d7bffbab4b5c3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow8/draft" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow8\",\"name\":\"test_workflow_8\",\"displayName\":\"test_workflow_8\",\"description\":\"test_workflow_8\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:38 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "09524747-591b-43bb-baee-78bd5b9d87c8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:38.824Z", + "time": 586, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 586 + } + }, + { + "_id": "69c49e7caa67376762dc3c62754925e6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1887, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/wfEntitlementExampleIsPrivileged/draft" + }, + "response": { + "bodySize": 16591, + "content": { + "mimeType": "application/json", + "size": 16591, + "text": "{\"id\":\"wfEntitlementExampleIsPrivileged\",\"name\":\"wfEntitlementExampleIsPrivileged\",\"displayName\":\"wfEntitlementExampleIsPrivileged\",\"description\":\"wfEntitlementExampleIsPrivileged\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-3eab1948f1ec\",\"displayName\":\"Entitlement Grant Validation\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-48e748c42994\"}],\"language\":\"javascript\",\"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); \\n\"}},{\"name\":\"exclusiveGateway-48e748c42994\",\"displayName\":\"Validation Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"failureReason == null\",\"outcome\":\"validationFlowSuccess\",\"step\":\"scriptTask-0359a9d77ee2\"},{\"condition\":\"failureReason != null\",\"outcome\":\"validationFlowFailure\",\"step\":\"scriptTask-0b56191887de\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-0b56191887de\",\"displayName\":\"Entitlement Grant Validation Failure\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-0359a9d77ee2\",\"displayName\":\"Auto Provisioning\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-aec6c36b3a45\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-e04f42607ba5\",\"displayName\":\"Request Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-67a954f33919\"}],\"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*/\\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);\\n\"}},{\"name\":\"scriptTask-e21178ab80f7\",\"displayName\":\"Auto Approval\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"scriptTask-3eab1948f1ec\"}],\"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*/\\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}\\n\"}},{\"name\":\"exclusiveGateway-67a954f33919\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApproval\",\"step\":\"scriptTask-e21178ab80f7\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-63163dc11c1f\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-5106f7a29d86\",\"displayName\":\"Entitlement Privileged\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-bcb05a148971\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"inclusiveGateway-bcb05a148971\",\"displayName\":\"Inclusive Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"entPriv == true\",\"outcome\":\"Privileged\",\"step\":\"approvalTask-77691047b28d\"},{\"condition\":\"entPriv == false\",\"outcome\":\"NotPrivileged\",\"step\":\"scriptTask-3eab1948f1ec\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"approvalTask-77691047b28d\",\"displayName\":\"Manager Approval\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-3eab1948f1ec\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-aec6c36b3a45\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.user.manager._refResourceId\"},\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"approvalTask-63163dc11c1f\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-5106f7a29d86\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-aec6c36b3a45\"}],\"approvalMode\":\"any\",\"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}}],\"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\"}}},\"approvalMode\":\"any\"}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:39 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "70844cfa-8f0c-4346-a556-8b78fbbd6a30" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:39.576Z", + "time": 583, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 583 + } + }, + { + "_id": "435af69db406a4719792d409139fb3b8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1887, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/custom1BasicEntitlementGrant/published" + }, + "response": { + "bodySize": 121, + "content": { + "mimeType": "text/plain", + "size": 121, + "text": "Exception: {\"code\":409,\"reason\":\"Conflict\",\"message\":\"The process definition has running instances, can not be deleted\"} " + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:40 GMT" + }, + { + "name": "content-length", + "value": "121" + }, + { + "name": "content-type", + "value": "text/plain" + }, + { + "name": "x-forgerock-transactionid", + "value": "fee520ea-c091-4363-9abd-2d096b98b10b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 293, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 500, + "statusText": "Internal Server Error" + }, + "startedDateTime": "2026-05-05T18:46:40.320Z", + "time": 685, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 685 + } + }, + { + "_id": "ad59d36f733b2ddf93397aedb1d6941b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/jhNeCreateTest2/published" + }, + "response": { + "bodySize": 8221, + "content": { + "mimeType": "application/json", + "size": 8221, + "text": "{\"id\":\"jhNeCreateTest2\",\"name\":\"jh-ne-create-test-2\",\"displayName\":\"jh-ne-create-test-2\",\"description\":\"jh-ne-create-test-2\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-2131bbe3663d\",\"displayName\":\"Permissions Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-69f93dd39054\"}],\"language\":\"javascript\",\"script\":\"logger.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);\\n\"}},{\"name\":\"exclusiveGateway-69f93dd39054\",\"displayName\":\"Auto Approve Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApprove\",\"step\":\"scriptTask-c174d2210667\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-6649e6d6f2a3\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"approvalTask-6649e6d6f2a3\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-f2a2d7eee947\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":null}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-c174d2210667\",\"displayName\":\"Mark Approved\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"emailTask-731854fb34db\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"Create User - marking request as auto approved.\\\");\\n\\nvar content = execution.getVariables();\\nvar requestId = content.get('id');\\nvar queryParams = { \\\"_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} catch (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\"}},{\"name\":\"scriptTask-f2a2d7eee947\",\"displayName\":\"\\\"Create\\\" User\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"emailTask-731854fb34db\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"Creating User\\\");\\n\\nvar content = execution.getVariables();\\nvar requestId = content.get('id');\\nvar failureReason = null;\\nvar request = 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 request = requestObj.request;\\n\\n \\n \\n // var payload = {\\n // \\\"userName\\\": request.custom.userName,\\n // \\\"givenName\\\": request.custom.givenName,\\n // \\\"sn\\\": request.custom.sn,\\n // \\\"mail\\\": request.custom.mail,\\n // \\\"password\\\": 'DemoP@ssword1'\\n // };\\n\\n /** Create new user **/\\n // var result = openidm.create('managed/alpha_user', null, payload, queryParams);\\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 in the system.\\\\n\\\\nUsername: \\\" + payload.userName + \\\"\\\\nPassword: \\\" + payload.password + \\\"\\\\n\\\\nLogin to your account here: https://openam-gov-dev-4.forgeblocks.com/am/XUI/?realm=/alpha#/\\\",\\n // object: {}\\n // };\\n // openidm.action(\\\"external/email\\\", \\\"send\\\", body);\\n }\\n catch (e) {\\n failureReason = \\\"Creating user failed: Error during creation of user \\\" + request.custom.userName + \\\". Error message: \\\" + e.message;\\n }\\n\\n var decision = {'status': 'complete', 'decision': 'approved', \\\"comment\\\": JSON.stringify(request)};\\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}\\n\"}},{\"name\":\"emailTask-731854fb34db\",\"displayName\":\"Account Creation Email\",\"type\":\"emailTask\",\"emailTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"SUCCESS\",\"step\":null},{\"condition\":null,\"outcome\":\"FAILED\",\"step\":null}],\"to\":\"jhatton@trivir.com\",\"cc\":\"\",\"bcc\":\"\",\"object\":{\"cn\":\"9959348\",\"custom_DisplayName\":\"Jack Hatton\",\"custom_LocationName\":\"remote\",\"custom_siteLocation\":\"remote\",\"manager\":\"test\"},\"templateName\":\"staffNe1AccountCreation\"}}],\"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\":1463,\"y\":262},\"startNode\":{\"_outcomes\":[{\"displayName\":\"start\",\"id\":\"start\"}],\"connections\":{\"start\":\"scriptTask-2131bbe3663d\"},\"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-6649e6d6f2a3\":{\"actors\":[{\"id\":{\"isExpression\":false,\"value\":\"managed/user/6a2d0e09-a9ac-41ca-af24-8af052c480f2\"},\"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\":606.3999938964844,\"y\":431.6125030517578},\"emailTask-731854fb34db\":{\"x\":1119.3999938964844,\"y\":107.61250305175781},\"exclusiveGateway-69f93dd39054\":{\"x\":394.3999938964844,\"y\":252.6125030517578},\"scriptTask-2131bbe3663d\":{\"x\":156.39999389648438,\"y\":252.6125030517578},\"scriptTask-c174d2210667\":{\"x\":814.3999938964844,\"y\":43.61250305175781},\"scriptTask-f2a2d7eee947\":{\"x\":821.3999938964844,\"y\":298.6125030517578}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:41 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "92f48efd-8879-4ea7-9f34-8a20419b1f91" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:41.013Z", + "time": 1120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1120 + } + }, + { + "_id": "7efd0018bbfcd1243fc518a1a9ac433a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1873, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/pghGenerateRap/published" + }, + "response": { + "bodySize": 7668, + "content": { + "mimeType": "application/json", + "size": 7668, + "text": "{\"id\":\"pghGenerateRap\",\"name\":\"pgh-generate-rap\",\"displayName\":\"pgh-generate-rap\",\"description\":\"pgh-generate-rap\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-115d1ab72679\",\"displayName\":\"Generate RAP\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-2d4351f5c77b\"}],\"language\":\"javascript\",\"script\":\"function getPublishedWorkflow(workflowId) {\\n return openidm.action(`iga/governance/workflow/${workflowId}/published`, 'GET', {}, {});\\n}\\n\\nfunction getRequestType(requestTypeId) {\\n return openidm.action(`iga/governance/requestTypes/${requestTypeId}`, 'GET', {}, {});\\n}\\n\\nfunction getRequest() {\\n var requestId = execution.getVariables().get('id');\\n return openidm.action(`iga/governance/requests/${requestId}`, 'GET', {}, {});\\n}\\n\\nfunction modifyRequest(body) {\\n var requestId = execution.getVariables().get('id');\\n return openidm.action(`iga/governance/requests/${requestId}`, 'POST', body, { _action: \\\"modify\\\", phaseName: execution.getVariables().get('phaseName') });\\n}\\n\\nfunction updateRequest(body) {\\n var requestId = execution.getVariables().get('id');\\n return openidm.action(`iga/governance/requests/${requestId}`, 'POST', body, { _action: \\\"update\\\" });\\n}\\n\\nfunction commentRequest(message, isFail) {\\n return updateRequest({ comment: message, failure: !!isFail });\\n}\\n\\nfunction main() {\\n var isSuccessful = false;\\n try {\\n var request = getRequest();\\n\\n // Get user ID\\n var idPath = request.request.custom.idPath;\\n var userId = idPath.split('/').pop();\\n execution.setVariable(\\\"idPath\\\", idPath);\\n\\n // Get script ID for the phase name\\n var requestType = getRequestType(request.requestType);\\n var workflow = getPublishedWorkflow(requestType.workflow.id);\\n execution.setVariable(\\\"phaseName\\\", workflow.staticNodes.startNode.connections.start);\\n \\n // Generate RAP\\n var response = openidm.action('endpoint/helpdesk-rap/generate/' + userId, 'create', {}, {});\\n modifyRequest({\\n common: {\\n isDraft: false,\\n context: {\\n type: \\\"request\\\"\\n }\\n },\\n custom: {\\n idPath: idPath,\\n rap: response.rap\\n }\\n });\\n isSuccessful = true;\\n } catch (e) {\\n commentRequest(\\\"Error generating RAP. Error message: \\\" + e.message, true);\\n } finally {\\n execution.setVariable(\\\"isSuccessful\\\", isSuccessful);\\n }\\n}\\n\\nmain();\\n\"}},{\"name\":\"exclusiveGateway-2d4351f5c77b\",\"displayName\":\"Is Successful\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"isSuccessful == true\",\"outcome\":\"success\",\"step\":\"fulfillmentTask-f49f20d19149\"},{\"condition\":\"isSuccessful == false\",\"outcome\":\"error\",\"step\":\"scriptTask-6f260211dc0f\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-5a2b73dd9dd2\",\"displayName\":\"Auto Approve\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"script\":\"function updateRequest(body) {\\n var requestId = execution.getVariables().get('id');\\n return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: \\\"update\\\" });\\n}\\n\\nfunction modifyRequest(body) {\\n var requestId = execution.getVariables().get('id');\\n return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: \\\"modify\\\", phaseName: execution.getVariables().get('phaseName') });\\n}\\n\\nfunction commentRequest(message, isFail) {\\n return updateRequest({ comment: message, failure: isFail });\\n}\\n\\nfunction approveRequest() {\\n updateRequest({\\n outcome: 'fulfilled',\\n status: 'complete',\\n decision: 'approved'\\n });\\n}\\n\\nfunction main() {\\n try {\\n modifyRequest({\\n common: {\\n isDraft: false,\\n context: {\\n type: \\\"request\\\"\\n }\\n },\\n custom: {\\n idPath: execution.getVariables().get('idPath'),\\n rap: \\\"\\\"\\n }\\n });\\n approveRequest();\\n } catch (e) {\\n commentRequest(\\\"Failure auto-approving RAP request. Error message: \\\" + e.message, true);\\n }\\n}\\n\\nmain();\\n\"}},{\"name\":\"scriptTask-6f260211dc0f\",\"displayName\":\"Auto Reject\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"script\":\"function updateRequest(body) {\\n var requestId = execution.getVariables().get('id');\\n return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: \\\"update\\\" });\\n}\\n\\nfunction modifyRequest(body) {\\n var requestId = execution.getVariables().get('id');\\n return openidm.action('iga/governance/requests/' + requestId, 'POST', body, { _action: \\\"modify\\\", phaseName: execution.getVariables().get('phaseName') });\\n}\\n\\nfunction commentRequest(message, isFail) {\\n return updateRequest({ comment: message, failure: isFail });\\n}\\n\\nfunction rejectRequest() {\\n updateRequest({\\n outcome: 'cancelled',\\n status: 'complete',\\n decision: 'rejected'\\n });\\n}\\n\\nfunction main() {\\n try {\\n modifyRequest({\\n common: {\\n isDraft: false,\\n context: {\\n type: \\\"request\\\"\\n }\\n },\\n custom: {\\n idPath: execution.getVariables().get('idPath'),\\n rap: \\\"\\\"\\n }\\n });\\n rejectRequest();\\n } catch (e) {\\n commentRequest(\\\"Failure auto-rejecting RAP request. Error message: \\\" + e.message, true);\\n }\\n}\\n\\nmain();\\n\"}},{\"name\":\"fulfillmentTask-f49f20d19149\",\"displayName\":\"Confirm RAP\",\"type\":\"fulfillmentTask\",\"fulfillmentTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"FULFILL\",\"step\":\"scriptTask-5a2b73dd9dd2\"},{\"condition\":null,\"outcome\":\"DENY\",\"step\":\"scriptTask-6f260211dc0f\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\",\"permissions\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":true}}],\"events\":{}}}],\"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\":1156,\"y\":151},\"startNode\":{\"_outcomes\":[{\"displayName\":\"start\",\"id\":\"start\"}],\"connections\":{\"start\":\"scriptTask-115d1ab72679\"},\"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\":{\"exclusiveGateway-2d4351f5c77b\":{\"x\":451,\"y\":126.5},\"fulfillmentTask-f49f20d19149\":{\"actors\":[{\"id\":{\"isExpression\":false,\"value\":\"managed/user/0f325c99-6965-4f45-b1e4-f9db1fa4dcf6\"},\"type\":\"user\"}],\"events\":{\"escalationDate\":1,\"escalationType\":\"applicationOwner\",\"expirationDateType\":\"duration\",\"expirationDateVariable\":\"\",\"reassignedActors\":[],\"reminderDate\":1},\"x\":683,\"y\":126.5},\"scriptTask-115d1ab72679\":{\"x\":208,\"y\":158},\"scriptTask-5a2b73dd9dd2\":{\"x\":916,\"y\":80},\"scriptTask-6f260211dc0f\":{\"x\":916,\"y\":226}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:42 GMT" + }, + { + "name": "content-length", + "value": "7668" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "ef6a66f4-efe4-43b9-a969-81f8c45f1fc9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:42.306Z", + "time": 912, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 912 + } + }, + { + "_id": "411f10786329d362ca472fea1f6dcad8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1883, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhBasicApplicationGrant/published" + }, + "response": { + "bodySize": 22464, + "content": { + "mimeType": "application/json", + "size": 22464, + "text": "{\"id\":\"phhBasicApplicationGrant\",\"name\":\"phh-BasicApplicationGrant\",\"displayName\":\"phh-BasicApplicationGrant\",\"description\":\"phh-BasicApplicationGrant\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"approvalTask-74cf85c35437\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-c444d08a6099\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.applicationOwner[0].id\"},\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-626899b6e99a\",\"displayName\":\"Application Grant Validation\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-5167870154a9\"}],\"language\":\"javascript\",\"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); \\n\"}},{\"name\":\"scriptTask-c58309b8c470\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"exclusiveGateway-5167870154a9\",\"displayName\":\"Validation Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"failureReason == null\",\"outcome\":\"validationSuccess\",\"step\":\"scriptTask-3a74557440fb\"},{\"condition\":\"failureReason != null\",\"outcome\":\"validationFailure\",\"step\":\"scriptTask-744ef6a8b9a2\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-3a74557440fb\",\"displayName\":\"Provisioning\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-7d248125a9bd\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-744ef6a8b9a2\",\"displayName\":\"Application Grant Validation Failure\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-4e9121fe850a\",\"displayName\":\"Request Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-621c9996676a\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"exclusiveGateway-621c9996676a\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApproval\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-74cf85c35437\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-0e5b6187ea62\",\"displayName\":\"Request Approved\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-a71e67faaad1\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"waitTask-13cf96ebeb37\",\"displayName\":\"Wait Task\",\"type\":\"waitTask\",\"waitTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"COMPLETE\",\"step\":\"scriptTask-626899b6e99a\"}],\"resumeDate\":{\"isExpression\":true,\"value\":\"requestIndex.startDate\"},\"events\":null}},{\"name\":\"inclusiveGateway-a71e67faaad1\",\"displayName\":\"Has Start Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableWait == true\",\"outcome\":\"hasStartDate\",\"step\":\"waitTask-13cf96ebeb37\"},{\"condition\":\"enableWait == false\",\"outcome\":\"noStartDate\",\"step\":\"scriptTask-626899b6e99a\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"inclusiveGateway-7d248125a9bd\",\"displayName\":\"Has End Date\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"enableEndWait == true\",\"outcome\":\"hasEndDate\",\"step\":\"scriptTask-14acc58c28dd\"},{\"condition\":\"enableEndWait == false\",\"outcome\":\"noEndDate\",\"step\":null}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"scriptTask-14acc58c28dd\",\"displayName\":\"Create Removal Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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 }\\n\"}},{\"name\":\"scriptTask-c444d08a6099\",\"displayName\":\"Check LOB\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"inclusiveGateway-2fbd3e7aa50c\"}],\"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*/\\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}\\n\"}},{\"name\":\"inclusiveGateway-2fbd3e7aa50c\",\"displayName\":\"LOB\",\"type\":\"scriptTask\",\"scriptTask\":{\"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\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is inclusive gateway\\\");\",\"gatewayType\":\"inclusive\"}},{\"name\":\"approvalTask-440960b2744d\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"approvalTask-6ad92fcbe998\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"approvalTask-ffa3a83b9dfd\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"approvalTask-5d1d9c5d8384\",\"displayName\":\"Sales Approver Role\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:43 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "f0d26cd5-84a4-47da-895d-06f259030761" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:43.387Z", + "time": 983, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 983 + } + }, + { + "_id": "bf20323c814652fde6aba25c10952bf8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1894, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhBirthrightRolesRequiringApproval/published" + }, + "response": { + "bodySize": 8879, + "content": { + "mimeType": "application/json", + "size": 8879, + "text": "{\"id\":\"phhBirthrightRolesRequiringApproval\",\"name\":\"phh-birthright-roles-requiring-approval\",\"displayName\":\"phh-birthright-roles-requiring-approval\",\"description\":\"phh-birthright-roles-requiring-approval\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-0e64ff0c1695\",\"displayName\":\"Debug Task\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"approvalTask-f4e7324654b5\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"approvalTask-f4e7324654b5\",\"displayName\":\"Manager Approval\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-792e240778b1\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-ad05a46c2e74\"}],\"approvalMode\":\"any\",\"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})()\\n\"},\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-792e240778b1\",\"displayName\":\"Look Up Roles and Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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.\\\");\\n\"}},{\"name\":\"scriptTask-ad05a46c2e74\",\"displayName\":\"Finalize Request on Reject\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"scriptTask-aecf833994d2\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-aecf833994d2\",\"displayName\":\"Failure Handler\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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}\\n\"}}],\"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})()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:44 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "00a546fc-91b6-4570-80cf-2bba04c7192c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:44.758Z", + "time": 954, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 954 + } + }, + { + "_id": "2d677bed45073df9dcacac71bb1fa9e4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhDelegatedUserDisableWorkflow/published" + }, + "response": { + "bodySize": 18375, + "content": { + "mimeType": "application/json", + "size": 18375, + "text": "{\"id\":\"phhDelegatedUserDisableWorkflow\",\"name\":\"phh-delegated-user-disable-workflow\",\"displayName\":\"phh-delegated-user-disable-workflow\",\"description\":\"phh-delegated-user-disable-workflow\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-3d854e98930e\",\"displayName\":\"Load Delegation Info\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-26e0a9262468\"}],\"language\":\"javascript\",\"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 ===\\\");\\n\"}},{\"name\":\"exclusiveGateway-26e0a9262468\",\"displayName\":\"Auth Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"hasDelegationAuthority == true\",\"outcome\":\"validationSuccess\",\"step\":\"scriptTask-8e24794e9be4\"},{\"condition\":\"hasDelegationAuthority == false\",\"outcome\":\"validationFailure\",\"step\":\"scriptTask-38eb13f4deca\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-38eb13f4deca\",\"displayName\":\"Auto-Reject - No Authority\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-8e24794e9be4\",\"displayName\":\"Validate Delegation Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-d5b7b2e2a80a\"}],\"language\":\"javascript\",\"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\\\") + \\\" ===\\\");\\n\"}},{\"name\":\"exclusiveGateway-d5b7b2e2a80a\",\"displayName\":\"Validation Passed?\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"validationPassed == true\",\"outcome\":\"validationSuccess\",\"step\":\"approvalTask-bebe49db4dac\"},{\"condition\":\"validationPassed == false\",\"outcome\":\"validationFailure\",\"step\":\"scriptTask-449aac6b18b8\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-449aac6b18b8\",\"displayName\":\"Auto-Reject - Validation Failed\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"approvalTask-bebe49db4dac\",\"displayName\":\"Manager Approval\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-4f4b87291099\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":null}],\"approvalMode\":\"any\",\"actors\":[{\"id\":{\"isExpression\":true,\"value\":\"\\\"managed/user/\\\" + requestIndex.manager.id\"},\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-4f4b87291099\",\"displayName\":\"Disable User Account\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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 ===\\\");\\n\"}}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:45 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "4968cd10-7217-4287-9281-6defa3b6ecbc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:45.873Z", + "time": 941, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 941 + } + }, + { + "_id": "6b31b3695e5f801ec9647e75b8a5299e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhFlow/published" + }, + "response": { + "bodySize": 7038, + "content": { + "mimeType": "application/json", + "size": 7038, + "text": "{\"id\":\"phhFlow\",\"name\":\"phhFlow\",\"displayName\":\"phhFlow\",\"description\":\"phhFlow\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-10bf48033687\",\"displayName\":\"Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"approvalTask-bf52ce203a81\"}],\"language\":\"javascript\",\"script\":\"var content = execution.getVariables();\\nvar requestId = content.get('id');\\nvar context = null;\\n\\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 }\\n // --- Log comment to request audit trail ---\\n try {\\n var logComment = \\\"Context Check\\\"\\n + \\\" | full dump: \\\" + JSON.stringify(requestObj);\\n \\n\\n openidm.action(\\n 'iga/governance/requests/' + requestId,\\n 'POST',\\n { 'comment': logComment },\\n { '_action': 'update' }\\n );\\n } catch (e) {\\n logger.error(\\\"Failed to write log comment: \\\" + e.message);\\n }\\n}\\ncatch (e) {\\n logger.info(\\\"Request Context Check failed \\\"+e.message);\\n}\\n\\nlogger.info(\\\"Context: \\\" + context);\\nexecution.setVariable(\\\"context\\\", context);\\n\"}},{\"name\":\"approvalTask-bf52ce203a81\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-c28119ea007e\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-610744f7d369\"}],\"approvalMode\":\"any\",\"actors\":{\"isExpression\":true,\"value\":\"\\n//Define 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\\n\\n \\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\\n \\n(\\nfunction(){\\n// --- Log comment to request audit trail ---\\n try {\\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n var logComment = \\\"Context Check\\\"\\n + \\\" | applicationOwner: \\\" + requestObj.applicationOwner[0].id\\n + \\\" | full dump: \\\" + JSON.stringify(requestObj);\\n \\n\\n openidm.action(\\n 'iga/governance/requests/' + requestId,\\n 'POST',\\n { 'comment': logComment },\\n { '_action': 'update' }\\n );\\n } catch (e) {\\n logger.error(\\\"Failed to write log comment: \\\" + e.message);\\n } \\n return [];\\n}\\n)()\\n\"},\"events\":{\"expiration\":{\"date\":{\"value\":\"(new Date(new Date().getTime()+(7*24*60*60*1000))).toISOString()\"}}}},\"approvalMode\":\"any\"},{\"name\":\"scriptTask-c28119ea007e\",\"displayName\":\"Approve\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"Approving 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': 'not provisioned', 'status': 'complete', 'decision': 'approved'};\\nvar queryParams = { '_action': 'update'};\\nopenidm.action('iga/governance/requests/' + requestId, 'POST', decision, queryParams);\\n\"}},{\"name\":\"scriptTask-610744f7d369\",\"displayName\":\"Script Task\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}}],\"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\":564,\"y\":312},\"startNode\":{\"_outcomes\":[{\"displayName\":\"start\",\"id\":\"start\"}],\"connections\":{\"start\":\"scriptTask-10bf48033687\"},\"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-bf52ce203a81\":{\"actors\":{\"isExpression\":true,\"value\":\"\\n//Define 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\\n\\n \\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\\n \\n(\\nfunction(){\\n// --- Log comment to request audit trail ---\\n try {\\n var requestObj = openidm.action('iga/governance/requests/' + requestId, 'GET', {}, {});\\n var logComment = \\\"Context Check\\\"\\n + \\\" | applicationOwner: \\\" + requestObj.applicationOwner[0].id\\n + \\\" | full dump: \\\" + JSON.stringify(requestObj);\\n \\n\\n openidm.action(\\n 'iga/governance/requests/' + requestId,\\n 'POST',\\n { 'comment': logComment },\\n { '_action': 'update' }\\n );\\n } catch (e) {\\n logger.error(\\\"Failed to write log comment: \\\" + e.message);\\n } \\n return [];\\n}\\n)()\\n\"},\"events\":{\"escalationDate\":1,\"escalationType\":\"applicationOwner\",\"expirationDate\":7,\"expirationDateType\":\"duration\",\"expirationDateVariable\":\"\",\"expirationTimeSpan\":\"day(s)\",\"reassignedActors\":[],\"reminderDate\":1},\"x\":153.39999389648438,\"y\":268.6125030517578},\"scriptTask-10bf48033687\":{\"x\":162.39999389648438,\"y\":140.6125030517578},\"scriptTask-610744f7d369\":{\"x\":357.3999938964844,\"y\":370.6125030517578},\"scriptTask-c28119ea007e\":{\"x\":360.3999938964844,\"y\":256.6125030517578}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:47 GMT" + }, + { + "name": "content-length", + "value": "7038" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "9789569b-f3f7-4cfd-b442-62729115dde6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:46.975Z", + "time": 942, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 942 + } + }, + { + "_id": "0c23b7cf637916d86bd1f8f9dc7441a4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhNeDisable/published" + }, + "response": { + "bodySize": 3199, + "content": { + "mimeType": "application/json", + "size": 3199, + "text": "{\"id\":\"phhNeDisable\",\"name\":\"phh-ne-disable\",\"displayName\":\"phh-ne-disable\",\"description\":\"phh-ne-disable\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-99fdf317c49b\",\"displayName\":\"Load Delegate Sources\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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 ===\\\");\\n\"}}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:48 GMT" + }, + { + "name": "content-length", + "value": "3199" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "a7fb68f5-231e-486d-98fa-64afc4a003cb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:48.113Z", + "time": 983, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 983 + } + }, + { + "_id": "11d1a8712fd14ab8ff4c39dd32ab578b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1875, + "httpVersion": "HTTP/1.1", + "method": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/phhNewUserCreate/published" + }, + "response": { + "bodySize": 7525, + "content": { + "mimeType": "application/json", + "size": 7525, + "text": "{\"id\":\"phhNewUserCreate\",\"name\":\"phh-new-user-create\",\"displayName\":\"phh-new-user-create\",\"description\":\"phh-new-user-create\",\"type\":\"provisioning\",\"childType\":false,\"_rev\":0,\"steps\":[{\"name\":\"scriptTask-626899b6e99a\",\"displayName\":\"User Create Validation\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"scriptTask-c58309b8c470\",\"displayName\":\"Reject Request\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":null}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"scriptTask-4e9121fe850a\",\"displayName\":\"Request Context Check\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"exclusiveGateway-621c9996676a\"}],\"language\":\"javascript\",\"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);\\n\"}},{\"name\":\"exclusiveGateway-621c9996676a\",\"displayName\":\"Context Gateway\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"skipApproval == true\",\"outcome\":\"AutoApproval\",\"step\":\"scriptTask-0e5b6187ea62\"},{\"condition\":\"skipApproval == false\",\"outcome\":\"Approval\",\"step\":\"approvalTask-75cf4247ba1d\"}],\"language\":\"javascript\",\"script\":\"logger.info(\\\"This is exclusive gateway\\\");\"}},{\"name\":\"scriptTask-0e5b6187ea62\",\"displayName\":\"Request Approved\",\"type\":\"scriptTask\",\"scriptTask\":{\"nextStep\":[{\"condition\":\"true\",\"outcome\":\"done\",\"step\":\"scriptTask-626899b6e99a\"}],\"language\":\"javascript\",\"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}\\n\"}},{\"name\":\"approvalTask-75cf4247ba1d\",\"displayName\":\"Approval Task\",\"type\":\"approvalTask\",\"approvalTask\":{\"nextStep\":[{\"condition\":null,\"outcome\":\"APPROVE\",\"step\":\"scriptTask-626899b6e99a\"},{\"condition\":null,\"outcome\":\"REJECT\",\"step\":\"scriptTask-c58309b8c470\"}],\"approvalMode\":\"any\",\"actors\":[{\"id\":\"managed/user/6b21c283-d491-4fd9-8322-898c171c7018\",\"permissions\":{\"approve\":true,\"comment\":true,\"modify\":true,\"reassign\":true,\"reject\":true}}],\"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\"}}},\"approvalMode\":\"any\"}],\"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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:49 GMT" + }, + { + "name": "content-length", + "value": "7525" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "8b014642-7963-4248-b6ae-25cc9ca6cb34" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 300, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:49.276Z", + "time": 1188, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1188 + } + }, + { + "_id": "dea86ed50cc6b07708db6b49e8af4ef2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow1/published" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow1\",\"name\":\"test_workflow_1\",\"displayName\":\"test_workflow_1\",\"description\":\"test_workflow_1\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:50 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "f3f75c25-5e2c-4d71-bbed-346995f125c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:50.627Z", + "time": 1056, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1056 + } + }, + { + "_id": "2ba7b7a869b819d1f853f9628cc93e09", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow4/published" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow4\",\"name\":\"test_workflow_4\",\"displayName\":\"test_workflow_4\",\"description\":\"test_workflow_4\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:51 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "6e74f2cb-dcbc-4125-8dcb-c07d2d84b59e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:51.852Z", + "time": 954, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 954 + } + }, + { + "_id": "a3c6b2739259cf88c5b107fef185ea12", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow5/published" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:53 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "13f754cf-8886-4c69-abab-9a00f43b15b7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:52.972Z", + "time": 981, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 981 + } + }, + { + "_id": "896f15be0b440b68a5c21bda860cec70", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow6/published" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow6\",\"name\":\"test_workflow_6\",\"displayName\":\"test_workflow_6\",\"description\":\"test_workflow_6\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:54 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "f7552d53-6b32-44f9-9783-1a8784892083" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:54.116Z", + "time": 966, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 966 + } + }, + { + "_id": "a29238d94193985ef54d5ee128f8efe8", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow7/published" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow7\",\"name\":\"test_workflow_7\",\"displayName\":\"test_workflow_7\",\"description\":\"test_workflow_7\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:55 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "736ad1e8-6c25-45ab-9d89-21ad274f9c86" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:55.244Z", + "time": 1352, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1352 + } + }, + { + "_id": "86d9f9ea3e5b0848172ca446d9f214de", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "DELETE", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/auto/orchestration/definition/testWorkflow8/published" + }, + "response": { + "bodySize": 22406, + "content": { + "mimeType": "application/json", + "size": 22406, + "text": "{\"id\":\"testWorkflow8\",\"name\":\"test_workflow_8\",\"displayName\":\"test_workflow_8\",\"description\":\"test_workflow_8\",\"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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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}}}}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 5 May 2026 18:46:56 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "x-forgerock-transactionid", + "value": "6f5b0e91-7aa1-4291-9f36-8756a22a50da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 306, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:56.760Z", + "time": 707, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 707 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/am_1076162899/recording.har new file mode 100644 index 000000000..f7ff1c25c --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_di/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:03.887Z", + "time": 161, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 161 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:04.242Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/environment_1072573434/recording.har new file mode 100644 index 000000000..6068a410e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_di/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-39" + }, + { + "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": "Tue, 05 May 2026 18:40:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b1c9611c-bc63-486b-9059-d72c74b41166" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:04.352Z", + "time": 96, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 96 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/iga_2664973160/recording.har new file mode 100644 index 000000000..374bd4bfe --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/iga_2664973160/recording.har @@ -0,0 +1,142 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_di/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:40:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ca7ef845-adb8-4967-9e9a-c14c5b43a223" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:05.283Z", + "time": 285, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 285 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/oauth2_393036114/recording.har new file mode 100644 index 000000000..b7ac93e96 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_di/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "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": "Tue, 05 May 2026 18:40:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:04.081Z", + "time": 144, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 144 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/openidm_3290118515/recording.har new file mode 100644 index 000000000..c0f351f12 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_di_4247760239/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_di/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:04 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:04.283Z", + "time": 191, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 191 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:04 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-657a9575-ef96-4d36-878a-fae72bd10b33" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:04.457Z", + "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-delete_3752417468/0_dp_all_3154051416/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/am_1076162899/recording.har new file mode 100644 index 000000000..dd0578a47 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_dp_all/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:46:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:31.315Z", + "time": 157, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 157 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:46:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:31.658Z", + "time": 103, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 103 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/environment_1072573434/recording.har new file mode 100644 index 000000000..8af5d5811 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_dp_all/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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7e5a3105-5216-45e8-9c4c-30e2d82e1b60" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:31.769Z", + "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-delete_3752417468/0_dp_all_3154051416/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/iga_2664973160/recording.har new file mode 100644 index 000000000..87804e375 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/iga_2664973160/recording.har @@ -0,0 +1,2451 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_dp_all/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-39" + }, + { + "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": 41893, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 41893, + "text": "[\"W/zhSB3Rs1LbA6A6cHD9w7Rsx/V8/5mv1v9qe4I3FUoxRRIffn01PY6tpNU3sd2y3T/TlQaJQwkxBagBUrbGYdVbrd96+f5/39IyX2ei2VA+VBDLk6C8z2yQX/POUbmgDYJuAAFAMLABaAJyuNe993/9qi40qhtUoxukQKMRyXUg15px8iaUooDDJkE5HysKf1U1wG6AHGNlnM3zsTJJttosko2htldKZKh4yjfaVxmtujddxQuU0mTmxGSpZZK90l4XUwUIAdLYyXJo/+e9P8cVVaNChsQ9xpLa/U+ZmiEgYA1mMqbU/tyioiKEcBlY/GWo2aVz/Cc2awghhLDpY5j/vv7z2NZEDVFUQDxizTa9kWWyvgdSPb4RrUhFjjr+1xteW7PaH3p7QiQhMXKPpCKXJ+upC8e9puLD7/+aHAZtzUOH0wFJRY77/h68tkabLQnJkco799d/cJ3sPYbkm8MjqZKQ+AEPXmySTl6wwb+mj7K/l/55kYu2K9KWp4LnUvYuqJ8D99I/81eJTCHhpndWvRGDr8PdgAdTiXNPvHNSmbHvQ2LHobWyPHCz+mV1eU+k3ESqw9eDZH+hS2yzlmcNlyIlU5jUN/7i9nZz89vq/s8k4WkpS5XniIxMT/KufbVKmz9ocyIhke1gnSfVG9F+9Xpw6D23hw1uxJCsZfZSUpEC9l5qAwBwlA4O1/9y7nAYtNl6WML/P+CM2kdyhz/qQG9l3Nr93hoft9Z0ehvrrfw228HJbw4PPP+HEIQQfF7dByG8TSG8TfNzLnquSuO5H52hB7PoDwrdeW2m+WxeGzKFBI9oBoXeifReb80ezZAzD7aD7nQrixfx7lzQLaHa+87Xg3Y0y29EBaC+8ju2g6m+2x6fQqLkgEb7zhp8gSs54KwS/ak6m9EPTHzIkg9Z8oEmSTKfz6PBru9u7ganzXY2J1NIOlm/aUx7IhUN9bhn9XrQ7m7ZoeJBpXsbKt7nx9pro9BVrtYdyG8X729k23uapoJ7fAqrdKjIB1zOc+DBo3Mlor5cQMIN0ar8ImRwI5LHu5Q1eP0YM/b99BQSr7mTVOSse4nR75JUpLfbLbpIm87Oaoe4ps1WxpdTk/l5bWpzlG6exktgCZNx/C6jLQ6/Sadl06Ofzc+JyXxn1wqWOz422uIwC7QK6P6gOqn70eEGpbcGlmDGvue2PrhTxZapXc5N871Kiw==\",\"9eHeK02LcaY9x8cBnInh1eiTU20m2zgBM/QhpkCWIX5PFaycsw4cSqXNlsH7Ai962IFWUBOuyOVFa6O72TtNiWFSEh9fxkGeeisVLEHhXqTCO41Gjy6yzXdsh6x4FABA/OEDNFovDwy+wOjRwYcPcarYPEofiK+bZsEqei9Q8aUCOffb6NEFofH7oSTvOYR/RnSnW+nk3ns/o4jc8+DRQapdZYXHjB7dtdyjLdb92EsPJ1x5BjW5IKO1b9YCqrVvWhGciWoyZ7YMwPTbiD98gDs0SscXwL3UvaZv11h1giW87XcFAMDMJo+toCa/Y99ascjMV4m2+ojmXZ++5I1AV7yrSZjoqcFWRFfupe5PflmNVacKavKnHZ2sYhXHq2iM9OckqmtT1+bBozNyjxVf/pRJY36fqeBtsv+U6dw8O3Q3E+o7ZuQWHbx/D5uvFn1z2M3fBDZysfu5AetDIhJWPQvorJMT8xJVw3zpvZgZ8kdlpC7m/O3kUTqm0zZYRr9mh1LN9Gg4T+g70lh1itoWlslB/mjyaRPUciGNYY8XfzCy6RGWXbAqVdItMAsWslWMzn8rbcQZjD9avm21Jli3E5v3ndckhJp4NKomYdlD00AKtqpjdu4MalOapoi9mlwcNJTYB2hrwHZ1LqhzL9qbFGuqFBXSsRtP52X+PcES3gI/yGH0QQUBvD8bhBCQnQkqCKDhOqqg9D+j7mDmSAeQdi+Csl8NlhAYOwAkfzpUwTk5n6N4CiybIJOUCK4KSxjcqNazxt6jCDZ7yCZhDulfwXstB9/g3bsJKgjGg5IDal5Ja/ew25u7+yCUz/Pohjfobpoads2Qcnf90odMWlYRDvhaTLUhE+DR/QSz99LZANcesJtLmAcR2TosAGfLlh4t0CYUZFD+k2IUvmIcu+ZRZ++1G1QQKDQaVRBCdcQuB12XKsOtfAgVwVe8lWWaCIllooqru2/R7XUv4r+wcLnD9hl0D8gYxt/cP8sBX+RpIZumSYoyT4u2IHj8eBxPaicGSnj6+y6I3Idp73CrXh9IfbiAyVAgCIPo6Rn/CODg9FH3uEUPg61NHDfgHQmr3l0EsO7A2xB0wo/1z/oA0pygd16DGdsAwYnFvp/Tn2Bvj20mpbhp2EHRr3VUm9pUsKZbxfClPQ8wGHD2WR8uFOHRKd2/eJkAcQwblApsSAAMG2ZZR1vUA7EYbI0O/W9C13wA8ku7nI20iibne47/XQ87YP9io0cXB3Po99w4hnXH7D7tQcL6AHqwK0DsxrBQ9Uc8K0pi3ec7liLBa+0oXVr1dU+GhP12Dr0eZkEcoDneJdOw1E1Rdrw7QKMe+K0EFeOX88ieQgh8aw9Y48G5QTHtPSTU+eZS/op80v2ALqjgb63O8J+z4G84+7w6nMHfwd8TXFvT3awjRh0XvTqKp/s3JHOQaxW8hB6QjtAAgYK7sPeYxCsQx3CPRpoBVjeFVQ7Hs7ig9D19kNFWU923NbA/t/i2e2Fc2FBjVu7MivbuJ/GXzGqi9aU1CQUM++xXHItCMIVZ1jXN1X0X42AXFbi9H6INcAYoiw+bJE/3lL10z0MFD5Ye5DhY35pAVducX8M/jTRA8R5pqB9Qkwpq8rhUk+yVLtFE61xAzwLUBE9gKqyJ7iyv1AReIx1jy/vkONiF6idAjZ0tchI1mMRWdSxFy7Ue1YQHAelWIgun5mAD0NyNC3U/be0A3NmhzRZorVqT4dldJGxgEDQBRiP7TQkqxidCCARZCqrqzgMCVZoDubtvutZmABozSMFT7J54HQD9VFh7DVeH97o2n7kYB0sUqNTazViRC5sDhGqMV6IQHxyxaL6P1pQeZQWQd0p7sA==\",\"8jJsMePLqMn8nEzTU0j+8y53t9dWYRDhNBp1PewM2iwZzPy+D+ZAEIzJ/iBC8koqmpUiJCdS0VRMKe7phutEum+nR0F1b+Ix8Onge5c9PIImU0hGfRlSgYhFzFoYzlg4Yjx3o29lP2I0dF/wh0g05/SVHDB8wtEO3PiT8N/pvd7j3UEaUhElTzMfp7j3lVQ5t/dSzuJD4ar5yOqNvJJKcJ5D70NRRglNM5ZO1c8IUOBebytZ8TNPue7l03U347MNxl51zwwZvY3ybG9K2Y2uuSjbV+T0i0V3KtN/1sPoSUWUk91AQrIflwuFhWllCuPC7/aw232UXrcXh0Mfr3rOZyfNEB5+VofdbkFm+Lg4tQ4Xh9Mlvzjvw8bheO9rqhVCqKSQWVKWr9Hw82uvTQuelE3RijwhL93HPwbI8C4X1qTLNFQHb55nFL5GBxx8JzcvBt1j8hTpIKXsDg2Iq+sjE2rGeRNPdd4/EYh4KG878R1bevD4woM2KYsWJ+1TJyq2xfI4DBPyfNHphx8BOXRXbac/swSZn6e86nMDJD/C9Me+ZiwryrLJsCylAuPx1wFV+wD4TfZaiXR23HjX9JRmeZEnNBWyNPi+zc1ojDZbmFFLsG0VifA4HFvXzs2huaEhxP2So3R1A8eaETxD6Hwz1EgUpVTS3pFWuzdn3yZGjoV+FcTzN8fxGDwDFBYOZd2x/CZLfLP52ugOwH+ULtuwgIFaCL1UwLCX08JhbBSKOyUPB2CshBhqlx+yo+dDp41qhiY16FLp62BCtmyMtbT8CxRfDHr0OuyLWfJuJt7iJtl/SJtq8FFhUjWCSbqEqvMffG0HrGDYt11FWYMgJ/BJPzYOtecMeo/w5kt0Qucyv61Wa9ps3a+rBs50fS7YDnb2xasKQ+mho0cXeCBvFvg54uhKdQcT+oaFN2DtpvlOPjgZaUUAOfUIASFTKt+zPoAnFB78oH7Eby/qrFvJdjeLcRKW/x4bOFJVBGB/7LJcLru6Nk9UYkCBy83l4chmIk4v+vq4h9ro0T9WPeoTkIuO4arGv6AbYMf7lRl4GD67ccVmRghNN7yZXt1hthmpUQGLtcnwDesO3LUmYQZjgntYm/3mNmy+ockId8uVpY348ak4BrY7lXYCpIevp6DKauEGmDMMQXNsyvlevQfUUoBohekBK6zGpbvRweVvxfeDy1ykaS5E0jlCDS07/ruCyPnt7/c/qcuFwC6TRVNK5g/1VYVunfmp4dbB0lIQid8CGjVSrum5YqKgLJVlo3zDqvYztR2YARPfgM5EQWTTiScnMbfxldjGAEuTSvIX1bKMXc7Qxe0lwEP0OYWmAXomTIyTNamyAWrapdZEceph2jtHpQeM5ao1qeBtigDW6pn70wEROspW/k6i1uXed9N8j3RB9an2lioWOWkocadUCqLDBx4sCoY+GrZktZNw6vNSGx0lNKLeTWOWRUfsg6ecQRAbU5sC0PzUJc0hJS5g0v1BHaUDdA6WgNF3eZSr1xYPBuqdczIAx4dI9/9yd3MdvVd0983QuejtJ2TDmVtJgOASLBOe+/49oHMRh3nw08N+dLDUdKggw4CZGR3+Q4dg6oR1GOyWQc0BW45LNeG82uaxlabIJk21ZWITMxSH5VxggNaB86fs3abgVeM+emXU71IPQQgnyuFVnDW60DBGtdVQzPdXA1uknQt7meNm2r0267jaYpMsUp4KpjVuTocY57MI/SDM1J4rFrwYGfuyEFhSRjss0sTPzAxoWl5njiP6qWHGaFuWZZblmSRjr9dKQHt/Ubdd+bvUA4dSBJLSsy4GtyL9lkwjJl5S3WaEdHlSd8CiVIdYkRVBYkjuzJ0AIA==\",\"mry0T4mG02G5vlN3MAt+AVguIXij5YeDEoqSBjPaADSOp1zJAXmJuhvlapaf62WgUd9F7xsXl0kVWEH0jCNHExoMyaNLGwAjD5qpZFxwt4157oqiaE+4JmEKIbIrahKCADPTkQUgLvRk+KL6P48+maE5TE8Za7Tq3REmXSpKxlIXqYVf8QTTJqNFjjJjjoj5xsbyPRC6WaGFBXv4gxfVmmJ7IT41lDnFLO+klIoSWwbCQHnqWBSUlh6j+434KjytVf7mtOUMV6mE9URVGj1tSMQuowAPlgVmKDZDWbfSwj/qNfu1kA16hODf+ovU832fKG+7MsMGG5YV2EFkJNKuhBNvIuHDcpP8m+Ly5uvtl9U9uUrTJtamp/BMKE90j1eUEJYHsHuS0VAnVEY4ZYDUehkKxgRo3snP0sPdIN0AeVfnBB/geuwTgO/aSX/XiCQqFrnRbeaqY2Tv/N3K2E+iHU4vVLHoJAFr+u9KSJ7p3gswxRyfdI72Pbuf/s5YGfWdTJ7QpbuyHn0BvmqokG2bFi0rlPosS3Av5qcqTnNReU8IKRptMycHHR+ytsE955yWhtZuNSs794dd2UUYiwj0dAO4ZitFJciiobMsyGfY2cyZRxEKTrZ0lKeuoMqOuMUsxBUe4AN2lheDYw0MRBH4hxbXYEArYGfMQIIZWaAcxs35qIEUI7Plmhw86GWBgbG0tDf2/tCuOVYqv02vTApFe5MHCtCITg8DqmOmHr2Xg25l359OTAGH3OJRDMxMOgnNqQbGmN1irereMDVn1DQUhD0UGAPSn7epJm/vqdl5VlFF/DcSSwAlCX5Jsl7tEapwe3mUZmeiow3PHBYRTCo0SaUH+1YiroY0IWk8uq6ttd7tUQBWO/7p+XLzkcwHrwmsaxTHXMo0aY+74w+1uTvzSDBWoQfptOaARr8bbY72GeHidu3ButXHVQQ8vj9L6O1Wt1Ft/rQjtG8cA8KIzYgUfG199fX/fxtEtblDhN0wHHwVx41sn/0gtxh11m3R2fb58+38I1K29bFWbW9HFfdyQD/EuIP1xV4HMJV17QfwtHcRv1j33PX2ZWENtMvo8E0KAaTLPXvrEPbrns5HtSm5uPFcMgp6pASvzbZHAFRDA130BJqDa8MOV6uep1tA8wmMvCsF2oCEwZ0WipJ3N71tn5PiO044AtWGu7FRp3et5eki+rSjArW28VdD24jg64PvQyxPEC1QY8HQbwY5xFB5/g587q330p1O7uht8yJVkY67FRIIZ0xkPLNKDH6WVxuyihtA3zwgdpDGBZXcIFMOO5etCZolkv3sGQQxFKtrdIcEl4k9POq1wZsOTHTpx4/lGTDA22ZNFlNfa71tahJCb5s56TqXPfc9GzuAw8FpPCLkE8UxbDJAHi7KqZrAu6cPUnUb6yuC6hXEDAZtzqerHS6AxO/rEmriZY++JvMFeF3M0ZQR2Cu/SBVVZZuqghfiX4pZvLH9JvxBZyL/XpVCJGWWNCwXQh3Tdi5i9am4MNxvKOevykyqknVtg2VZHKlFaUf6dS5BPqXsOsllwZtSdWq+r8uq6WguwvCiaQtRYuPwrtFl/lab/Bl2bD80b9Yw2rKCL5Qo6UJ0qlwUnLFFURYtzWmbJ7Qg5nyGvd6fjlJhyRqWLbCkuBCiyReyLegil0jbTKqulEqILTDVK2cq9qZFarY3Y98V0zCY7Q0XmJAWy2644PQk2XT33ckevfbP/6Tfwcb2yIoqhoNbZwWDa3uSecqcVqKPuK/Ik9sv9AKWM8SblQIaIGKYLizoDCYh8AVGj45ALQnoJNSfGkrRlJrvsdi0j8TSeZkdAJI8vLfG/GXSKVlR49hv+mFlig==\",\"S0lFzruZYh64E9VFLy2LL/cHQRNeRLkoy5LxPMmSNAV2+2tBZGWUZ2nGioKKrMxZPg1bxmrxgVGV/oLLiP3icC70MvqBUQ8dlT9+/iyhjfxLYwNm8ltDFKkKJ2+coUPNWo8tDrb5lVkxNU37iN4POjAawX6FZVSWu+c8e2TAeiAQ6goteOaWhQilDfYQOpXBVndQmqOa2jq6esMXA/8ui4RHvCzLkhdlJgqB2PvnV+QsyihLE56kNE/zIkat8YtZeQEmaB5CpXqBtQ43lXqZMqzgMUogV724RblfKkrs1184pZlWiKUsLmepmLh1kQbTYCXkepQsUzLmXwulVJDlrMjVz1wkGmyQgq2koiRTkiI/GtOEivA2mtK9WZIXW2uAEaW2okUd/4K5KFRcCvQU0/9hNE3FDsEmuwLDNmFz9SYPCbOAB12P+wYdO2RbAVb6hAuFbBpOs2DboHCImBi4nEX6QHZVc/FrL1IYEilQL17mvDJE8ygN8vsSVmbQQ/9WtH+cPG/GCnLcd+DpJU2Mu35Ac7nFIM/XLWSU5oVsiqTLD33tqJa6/szYFUWYGtYcjH/PHt6/B0/qwh8XAT/5R3loClSxmjMMlJpuVnNo4TSC3zKTlaFZRtXdD46yoaUoOoqKZZJhzfLjdU0UmIuiFawsxSH7n6XpOKcefb8tb5/d1uHg3fgOULN3arO9gPbhq6/PBIyXWUKRlAINR83iRii0CpDKWEQLORdVlsqdY11z8IfoqzhAuQpLbS+r3lIjReVm2ZqNWkt+EwWLV57ImkHAlJNWVl1u4lX+/WKuLzCnGk0CXb6V0+jHDouXYCtU9a0DJKakVcW0FI/YaCIPE7CAdYdVlxC6gQ3XQiyrywU98GTojxYFE10kwy5lLRlBc/RNEfWLQ6H3hNDjmRym8zpUMUvDOERk+AdHMzwVOQIBGf5Rgx+Thx9sCDWj/6g7eUwVGwLiPc4tQEivm+Mwq1Yj4Jr61UNCTkIO60b2hyY+MKcwyTMmLebcSjIzClPhjEqXLgcB+ll/6u0LCrRxbcvK3I7eviAweom9bjVpRktaFLlCYi6T1t3zsZhUwsWmvAftYJJjJ/f0MaOo45/NuaNJioo1PGWHnCf7iBfaTy0MGxUrg9+lN8qiRtmoHHVcJiM+cbkzgzbbW1XRaRGJ4CowmFgSU5Gs7UAdl1RcEJ1sWuVETRXWDaOb7ARA8rzFmO5H4+AAkXyO37/GweBVh4TAuK8LTEQnWJbkjWyVQLnZxS3/XMtyWaai47yk5WHfA4kL8htGB6e6nfPI5YqrKZWhkPuQuziAZn/WBN4VacczRMTuML5kNBy5FIML3DYGk8voUQafaOWIHWAZ7hLHogWZnSEnmNpI8+QqBWGFxrnpMvibqRI2JzC7P+lKVMozXpZlpuSh1eKqqoKkUF/6GSitqaN3pH4HlLfJU4UjTmoLd+Xw5fVitttebwIrGPPPaChpnpVpKlST0kOXzWbabylwDwPCXErLGUo5SFQbHNrQVsHtD9zlCMCWb7SGLM+HK3ehyivZeREe/i4uorwC8eQzKJq8NpV+01S8AvB2ylXOOvuiyGXURaYfJQ5s4hsR5K74cWqb3+Qv0plZ0K6E5PF+EGf6J2paUqn4h69Ky/yOZnousjp3qHKW5PnF1UMdo3leU2zBDLHclmSu7eVyQ/akacYNq4mikM/zh9Gc05+kcNho1dgQAy+LrJ7uoIzylGbM1eD7SinUFgqz32oiCTzpCmOSEbYWBROrpyHRCVrmeTIO1apIkSOlcMhmOg7TeEjD4HSuZcE5X8comWU1pIZZuM7SLO+3zkUwT3ujdSqE2wbLckG3fnK9Qn2jnw==\",\"BcEVVyCmbvecZh8Cw6G5w8NKLKrLLKloA85eXPBteW3Uufwt2NgeOVVzfBtQeXYgWzGlHEcA/QeEYwAO7KsPvMaXB4+uLzD4Vd+DwZfF6NEtWg/GoDDiz+ZKdRyB5lUxosrSjVsZAhYkUEcniCHnzejgG/V42O2ewDJPtpSoBnsr2UdTIwczYydPh+BH6yMBJaJehy2ga3h5Ru7x1mGnX2EJQe57TJ7gLNhTH5OnuWW2q/PzaK5UcpBcDICRrM16vIHkY3jhmoTwZn1ZMirxpfgXqMm/3lL1qKkmf08hPMKTV7uWe6zJ0/k5wJqHZVq6kTW490R7eZhxV3T+TbrRj2IAndNeDg6gYQn0vDavc8x7n+n/oUmSJAm8fw/xdqJx6fMV+tmYrhNwBjyd5+h5dJBq9uaRszSEIAnmc3zTuj47Q9mT7nilIkFUfypSBK7ue/DoZptxC/gsQPvxpFEDbI4yrEOK/qQiyAbzZkIzjqMCs77H/g/NR6BKZaWCKDir7w9rU5PaJD2lGgbfN3tzeMmb5zt7SydTILK2c1NNdhFXRshPg5+lzsFJHVwx6ylpTSq+BMvLWVGTikHhlJnOi4rrMUK0Li+OaSepWWRkKZ9EGqYyw0uNIDYhG1Zqc3FcY7eAZZMmbyIzRR5C2zCy515YQnCbe/e/Y1wEzScts+XUMpEpK28wuQHjFUFas1STYY9QrpfjhcEGTDiEUOSA7TlTE62mNHRgn8/zdv298q+3H+9sraa/Q6jJ59X9fSZJDP/5exy6IOq/U+mpiXS/aFQnEziY+CAY3FmXSUtGeKV9+rw2N4psE2NobYaJQSuVYRojcTudds467HQooC6Bc0bzbOyLGR2Ec7q3gr9Xjj/iKS16b8WMyp+7KvjXG473+PS3GR6MZqHJlSqy3sE6rbwB1aPSxLhhuv76XCs/yIze7HpMLlj715bT39gb2dlra6Ec2pPrLaihtO40c8fd0Ef5+M/USttOMJE3kqqH7O0Ka8XdVrpa7YsOJa9GwRv+VaWYD6RoB6dqxwdvMWZrT/WYxi/U1FUkbRSgZ7T3atx1xErGrVCO0fx6pnkepQj7YmrG0VmCNqeqe2emtOk3QTpVrZbznJ5ja8bQ8iMy3aq+KqViSspRyZ5SUnyGKUWCdfa0hVpltC5NKyOEs8YXYuQrNFEU6illHmV/NOTBXdWd2F2VcREV/H1iQojwvQP64XddxmtUZPB9A/rhm47jI77Z4+D50QKBHVfRxkW80sg55lxlecYfnUtMxVECmOVddGPf6b7foymia2retchTyVlJU8DlxFHbRgkKYL6LhGVUlU2bU1Oh+TJ82CWjF3h38YcPtbnCThvEbyUrz+/c6XangTpYjvho6Zw8ge0AKqrDi6MmDEzE/Qq4jNrMbOelwU4G2w8HoM4jNntn+m3TXHENrPGtP05ddbQtgg5FlUpJRC6/pFSUQottAkosTkKSWNSNCK9EDiMo4P9ES2D9Hwmnc8XgRjwjzbwdn56MDYZ9T6jNUI692fQYZxT43qo2hgkLSYgeJPO3mp+cVfYe/bDaS93f4/7QywEphPpDQiQdZ2lblouszNKF6ES6aCiKRVeqhnZSqLbLHuHrTisyWIAqZmTWiCQ/L9rqmsJh0g/Wd7bHuMGs6ApOF7Lo+EIwJRclV92iEE3TZplgecIKk0nmNuz2iiBvQeLRy83JJXgBEy+fXzHtvnSjRwu0L74mH3FHH2zSBeytqWrUnIQAzT2OreJrdrbHmxUA0tETj8lT6ocg3rx6qyJhLa7S7vzDjKSRDU/g/XuwmNtNR56N3UQRT31cTR78O3iaz+pHiUUBGDJCOpzaai0fHnVNbA==\",\"6n3EfXRybyFbtAbAO1B84Mm0w4REF5u5GEAcbI+MLGqfwlmToVaM00n4bKkhxm/o08OXT+svX2zE2GuqFE3LFU873ojv/3LW1er6z093ECsExLZEz+9CU65FhhdHkz0sCPiUQgNS0v2QD4c7yQ/RaVonJ5qrZbvNQ8cedyybELvQbU8TKYbudSJdZKvkO/PeZMA+UtSOJ+h6Oc4rtek2fe50IZHZFvtssz690jJruzJL0hbTKbtYSohbVzuHrkMEsoVC53TH7aTwyMiCSPkO1szzrfrGBTlEc/PSJdASpaPj3BCFvKpFybsUZZFnPCtEPkkDO99tsl/69y/2p8Bvm79jdg4RUJth+Qc6DyI1huwbGr6Hk0WZHQpCF9TB2+5fYqR/XrAkK7pU5ZTufMj1D9YnablD0QFYqFvlUNYeCt/o1KaR8N9KDWddfbP6urpaX9wAIFhZyZC1+Xq7+PLl5veNXsbqj9v15uJ+fXMN6JjcbL4f17vuiBj98MXJUNcEc9KiyPcjypezfW9f6sIiT9MzQ8X/KJii/EW5m7o3DJi0gy6dQEHDFarestzcQ8eXSfHWcwdxgygdvcf2IhQLJGfJqyZ8cTMJ/15K8uM3dPdwebm6u0smGl5TTd61NCtbKbBhyX5L+XSx/rK6Ih8vbrBdniA7loadDVBEc8+tTU0G+5+iXzuj1u5rck6mkLRtoj9t2/6M23ayzfvh5v2o5j3qS/1JkuqN7LDvLanI1lrVnJCEZKdJRXa2F95Lz+UuYU6jOy7OUz/Z0dl/DBy8CPU7A9YGNUb0rnjGkTPZdmVxW7XCqEfFfMd8MMT9XZOxRhjMaqQGtTAWENtUjyq11opjfUrDSplTJWRToFpa0599EB0Oo/cJ3bgxj+CGa51OCUekVpLTJWeOVJUWZ9DdXgSzMd+o7tkUX2iTQEPC5j8lKQrasTJPkYlEkmEODXsWaVQxaSC4AqpxJrpJ1/aGwodC1dr6/ZO2nKm05DyhlNFFE0BdQvxoGqZH6BeDCqkTCqRiIkOXM+uhUORD9mLQnJP9v6RFwwVv21x1eVuSb4GM5NXO4eWLwZu/ZnZFkmUpLRqRySrSrF1hiXHbwbxaojmItBpjZEA1HT3KsFiNDcwtHmIC8hcxTZfa1Pt2IOiaUQyFxsEER7pXg3rQKjst8xkuT2BtL92xJ36OmPKaHXTTMc+8EU2DLdKj4d/O3fDfuWtzGAcSmve/yznr1BYb9NN+9Cjtr7DHAS3r8novyV85ezj8+9OtlB7ePfxne0SH6h0Bz31eGUVCYqzCfD3Etzvcy7bE8Jnb1j2vpCqYJdWpaWLFWVVt01sviCadld1maG8RXdJoI40eoffh0MvTN+mcfXlPOxffnkGbzn66Z91ac1MGOgKBIyRK3cbvnGn53clf3pHqMlvY2xbsnWaEOUMmJjAet9OtLTCgkvpfvAWiyYX7KiVBmB7/JjjbI+EkBPVWqGCm9kMrdo5Mgwa3Q/qPWxHCeaCSmuyQEtV6gMU5oFac8rsBomR/M6Z3O9WlF5y1pcjvG+kXTMs02PPJ4ewMDPk6By0B8wydnTsV6x9PU3Mdef7GlLgipjGe3c6O7sTGDseAvDcGG2UyULaauH0s2ZU9d2/NsLs9vQtFdhNwPW4ny0LoNtOJnW+IVNHcOlumSVp/1pkoooKyNGFFRhPG3+nxHHwE8MsfI3IRie80Y0VR0IJPm6SVXClnP1OR7s5yga/G5UAc6ctD/cZOmBkqojwmgpev6GMhFVAWt1VuxfnRN0V2tPWk622oC4G0y1Xw7NygPLFvT1EZayB1FP5p/EHxRugIC3usbEDc6P/uAHbb6XSRcTMydCC5ww==\",\"uc18C5EwR7bhW/U4Tuw2i19wmifRce3rbYDhP4e9ID4v7Ro+NkBi4D5Vue8hJOxnViRTKAdgzRTwaAGEOYEsF2k71May0eCnH6R//uD1kd2nSt0yL+6v9NKMcqx2SMzbqcV/5tRjb5FnpbudTIvvFJuRND+bkogRScqjJ/aTUYqf1VIo3Y+cOVXHSSdH1SAlrWPhbIyg3GaxS56XRHUVpnpvlzgWcSziAwdPAGK5Xfmx5MeSf+DgCSBfbldxLMWxFB/YdwIols0vnR/ZSNv65NrfRp5VTV1kb+7ahgBW9kbavm9ufogkbsGTi//GwwCAx8ryTykEqwqTnzHvkBmnG4GLG434h+wlXIyDhVumyYw3LqPzg5AhO4h2B1nC+zyPxDg4YbEPVbiaDItVn8psebBBlDvktbyb2OQQsol1jU1jclKd5ciB88VsGmqh+P4m/uRKMYPm7K+kz9CPFcPGU1hTzdC3tkmgYqFyKMaC4Vqx6yDMX7drPLLXnmd6rNDwJ0X6AXFFc642uB5wf0NrPILY+oMilSWCLuRImJsoWt52yu0cuoSZW4tNKI08551ZtWs4f2NrAF+YmT3kdv8Z/b/RePbhCNUPUYsQyDSpTsNvy3lxQ3UkKm4jfHKfU2pvByJzVdjJWdf3dB16LfqvtOpQD1N1egJWpHQ97kHYSWqqR8rdsrexIXRaW3OHSjfVUWNnMlgFx4b/B5NkZqgMrcJ+rZuGazElVzhWlhJlWwkyk+XgF2emjsN7dJya4fHvMvzn6ilvbDE2WdKDYGEan4wmLYgu//6kOOM046qltKXdIov1qk9pknW5ZKUqslEjVypSpNWOiZFsHZdrQtM2SSqpKMqc1ky70HdaD5nzStLPkRK8DDRDmAC9GJrh1unjAMC24lhQCmi4p26dbNiUV2rT2Q5W56wlNNnEURLQkCrI61BVyYa3EXgRGDQgoMqVlqLvx2TkmjWYVrZ+GEcqj57FKPIBxITZwRlhCgQuFLzrDgd/6FOcVm4edtEDRC31RXwIuoPXROTxECKhsgea3RBDgawYIxpTfVaUh0Y76W9ejOj9lbOaaDnmF6nJfA4/FX0oWqUL/QFlPvCufL7BThtWiTgHtvXuXV6g9sQ5a3jij3KF3vuDDG503hzzYjcIz2NocoLVj2+DLbWCh4ZmJiXVpif9J7UUr6vT8u1uZ7QfeZ6VNBF5w4qYC5KpN3fPlPye13bYg+xzZt6x6sECm0dGvGSBRjkSV6XTmgvyiFVXxsRm5i3zyVrX7vAqMvtDhiG4PB1skOLE9TAiHzkUhz6o18r8hNDpEQKyI8isy9TFVeFel/8nJ+FCFKLpFlSIYiGSplg0qpOLNCvLBLukbXmyBEpYQbTjzXahS87pNV5eBQuXY14ioE4TGLbEDkEFa+IplUgb4ZwmQebowzTmhKaXfrPAT7B1NbYtrmsEq3Gr59rWNoK/Zu3rnHXGMseoT2fMvnfEWLcElJNCt+T9LOeZ7gky7UkZ7awS2DaLUJE6MhPgboBcvW7IPE5Lro/VTTjbUAIpnqPyOzvafTrLQo5GU3DtOs452D1hD7TSAlDfJyijTtkJRASN6xq+XhlYM3vSRGzmO4WP/c/nB+GMZiCQhZ5lRp8o5yll6ZMe3517FLAzl7K0cEpPU775qMYh8d2kPM/jWR7xX6zt9bgsZXM15SUbprtuyrKtcUHcfr0USa4hVBglSHT9u9dLXep3+SwX+fT9vPcF1DSK5Dp4j8Ke5kmjCbV5MM7HsE4kZH3jHyNJEUJHpg76jVvDZ5e947oEKO+GrrcvEkXgFGlwTDQKyR6XRvtJvzQ0xNBpWbsHt5UbgGlGgxQ1zGYJOw==\",\"e6sUCVJFxCmWAbyRjm5UCM7zOCzKXqeD/xvUgebGVEkOiL0VpsJzkDcT12sBhpkZ3Ki5VMD4BpOWl7MyG7j+BifmgTxJ4q4QtOGR9B5Ia0WenT71RsPBlhhSM9fRVWli86hVdP2BzwR1m8xAAk0aU54z1QtYWMAPUTIt1xa9hiex0xsbBFqi3E0lYc9iwIMC5qKwic6oa/MDKODH+B1lcCaG6AKNZxTjFB5Mm54KUaDaOXfOA06MG0z4R1NDtAy4YfagDM+q1wwxTmpPPWSmvaM5G57jDhUr1K1gxcyU/uNb8mRYJmoUMk2es4AEZSL9g40/hC9mJgPamNXzhicAQIwm+oHTMuR1tcKaV09UJKEul+Gx0gum8B5XR2i9MRmAb9bVNIEATFTVa8zc++TUO0kxTlamaatcuqF2NSGnhNMUzho+Hrl6gI2o6xGJJMp93AlSkUk5jWBOk9iA6+nRL0wbaTiYub4dNUKyzGYf5wUWmsRMtIwFrj8Wi3yzSeeRaeb5wNSPlrMMHjgWxI91NJlH7XBfLLsfK2gBQoAqyw4HM6PRWbOcEpRtvA04swlfP5NKshHVPfEiVqpt9pc1Ke7o6RnTUnwgahqjaPSl2Rtr6gHblB/vafJwaISXNnNiME0rP1FAzYDFlzThK6D4MQ0o7BGCX9M6BiXq6ECJlbO/Qp870A8RN7VVf7kZF8tnVW5kkpSiEJImdFloP0y7QgAxV+SdjUwetVp1iahHc1CgqR1AGOoNguu1LQO2R7sef3aHRh2ugVH71XELVuPY2fBYRpD6Qq77/Z02sk+KY6Ecaz9x9UFWu9TkM8Cdj+q3WFN1luNPxKbrxPmaJFXh0/B6neYwhXBMmOCEUFlxYRIOzoCRPtfabjLS9DoOvHHNkiFnRZSpSMkgeAcbVCZjyk4+Oi2UxRTDMCMORHzfq78RgW2fNZzDORf/G/GzuUGd6nNBLnMYVIoSHN65hODVn7FZWyEWjPdqSdQjf0oCmBXtw3bgLgVH/RJASkhMP4RJ8NRoLFsXYx0A5vS694AecM8brTkz4eRn92503H34ktZHk+LmHFZgYwZVznapCTjs3UiOpOP8RERgmxFv7tSwQyKBvG31ot3Y96ewBKjq1ot2TuFjNoBwDsf0xAsxCRpG8AvnvDF632siVlz8D0KgRlc7CDet/7BBEskIgqft6a9plw3T3nmeiRJQEPsm3wY8byn5iTm8RN3OBvGrjhIGxsXcFwIOvVBj1SnM8UbnD6f3FvGNphq2avIwfQm2ZyBWJAIDZzYw/+FpDqQuOtUINXc0MAtxQcwnPB91OaX+FXc4QBy4dyE4t88OGr0hYepHUt9PmQ7qEQYEllspY/1kTrWRlWaUZ4MPGI7VNbvzbR1aiGMOs1cGsK1hOMP54VaMOtRDIlPXf8hVirrrp30WTZEkSZkJkQrDcZ/WYE2XFVlL8zJJkdYGCDKBpu16rqomv2S5P0i9Ve2hAC1pYTfjGn9NZVra9atwzAK4QBRnNe1csQCxt/NWXAC8/RT48QOmRChj/sU6sAFot7vGnGXrVJG5ecLmV8P5snQqynyKRKfqmZSo7r9QCiStTNSGpsaQ+jmt0FhJekWNTFlfRQ5PFVjcM23QHywHNsVJ0aD7LgngbANPnEFAClIcZUX0nDeoiVZEcO3RONqUp5DkPV2T9ZUDbcHaTmNVkqO1QrHX+1PtnA5+FdD78/D7J2HSgKTM7XOnHw7UcWZ08pAf6MOgx8c+oqCFW6DVjlANzhfHqJDxOpEjFgL0Kxh+UVi+LmRMoowLP2psq1DIyMhhPOydeMHyR+PXcDPOPEbl681ySGJM81JUoaXUh92w+ql40g==\",\"przICsSGyXjpUDQpseatokuHV9MTL9+qWGFO11ZUfsr6sLQ+sBw7IzrDzTivzBpwq2DOjELO/5Gw56cTwanV0Sc7Ye3TXrjYhtlHnge21WRG3Ar8LiXRwyNif2s3CFDXrTc2PVeSQrFxI13DgcWbXv7yEzZSMJ37Us+v5BTg1pQg71wQ4FfmtCnRTK15LrT0bhZ+2zQZXBqaVsWZl0WqfTwyFKg0fYWr6xVJTQ2NjIyMmqK5TBlCsZ4OF/PRL9kJzQRo1rMnUuXxmwmkXh4QL+ULFSDcpN9xrMCbOL0b/ziIHBG2ZjtpU5V+7zour2KM21zW8X10ccA5ht/MKTfhDzCQdYufZvE35AkARu2UZtxnVFlMPows2amKU2HjqVWIY61As/cNdwmvG/TLMJbawt9m1PKCHpAypRUYKZsRi7DaorlpeUFyrH3RPx2mFs57iyItLyB/rx2kpmwTWBCtKMiGkiMHjiM27NlIB70jdipUtC/AjiYekEgI3VqgW4ntoih77R7Qb7dCI9ZzXYUdhlvB+qPK08IeDjLYHBPWW2BxrE5pJlkGjWCyyph2obOwQm6ZkrXJEfBSdlHEGt5wEgAYqVOtt5ZgeL2VJywpB/1Uu56yrWgyN895KuEzR0U02UbDTyFzXZAaJQaXVAZ2imZ2h/aUXF/xwS/le2aVM8imXHenZnQoS9l7r9VjmypQQaHtssep1HwQKJU1DVectvQArdJUMM3mjIKqSsVXk/EFIsNjYYwvjgBrJcYZDNFV0JWJBhsEST+Bg9Dqzap4lPHXM8Ptz7jsq76PTQ7uhVYXvQ/x3q4Y+v7nDe/BMEgwUzyHUs1IQ72aTB1aqI2bEsyBmbOoCtNtnXUYFwuTKQgYM3RQ+VbFOEAxhQZ0MYtsgczmrPgCTsxeSKssy9QoPMiGeb2FZJ9wXQuKhQo8mi3Eq4rWvhEHVkffY1GIv2KflLyr8I6rWAgsTahTbKaxqxcACEqlrD7L2oTKJSwdrAvZG7VbilicUMoyrqu3OnFdCa48fi8OcZKf1Tf6ZrmZF08DBvaxqNBZnYjWekxIwgHoG1n8xW9rIqb2MEuYKRGEzzmwKBIu0gK5zPOHvu+C5sJzo9iUvIFwDQ6mmOkY0UzNxcSHzr30+CojczOrHEf/Z7MTnzQ1GWapyFjR0OKhfUSvaudXBvEObKtZ+ztSv8se2Lvn/LsnNRpVb3ZC3EFH2WhK4548ynq7TovCpsFHO8scTMkWHDKxistpahdjjMKwhAtV5EG6tw2WGKOI3+dHdwhdKRNApPJqJIODgzOPErc6UgYNTLujlww8+HoKjhz9knHT/uuxQdHXL2daCAxfnNnYHkd7oAUb1BMNdp4XxoMJchfnoCuMg1Y/p+pz3bC7SQYU1iKKDLwtIfPL+GCSZSkUvW6R2RYiDIqyH6/VSdowpLITTe7fej/ojD/fVceI6udM7jAGLmDB6jSr0qwJSC7mc53tce3X+gwIKRmMFMkto/iL6ak4X3e2r3wMT16gOhJLU4LPSZVSsa31NIQC0ltwJZxBsCOGqhBX3DTfz7WV5shRtSxmsCUYKaUVvT+Bh3Y429cHQfPxPc72GOko0RzbwvFt2MRwVLXjHrCTHozd3q+mTWej4BzujKxdptocynZHAzf9gijYS1k6+y1vheHY3VXB21SJJWXB/Sjlin1MgZZ0dyj6Uce3FG+QF5A6xUUL4U5y0XfiOfMcqOFyl7Xac6eRp1NAOzJcAXPHjQzWLZNyBVSD14k2Ake16ManTvUXSe6Jw2AmYz6tgs3bOpvNW+XkAmXAlgbUEeHskU+481aCcC8GW4DjammfYWN7HOCCi7JCWvU/MMph6w==\",\"uwc+B9tz49/IwwfKw2c/RenzGRL/ldpsIR/5N3VjewzoJScQnc0cUDKcsXjwNRzDRJVkmFlMk+nMuzeoAIILTZOmi0TZCfKAlfUVtQGROVWbKeXPbrIzGo/6QTHsUE0Mct5NRUFizaCxTcp/xlSnI5ne1m7s40pmVlV6u0WIDQ0ieYyvHh3TjxfLuLN1oVUha6HHuuXz+FAx4I97udNx22HFbOqQG8/NNDf0mZG4cX1rokh7APR2aSZKQUVi7bSJTzlPjCmAl+7Le6aJBr7HC5P19p9UhT0+gu0U5veE0yCeNOUNaiFViQp6rwTGRs0VzoxKBoYzj2oEFbMsYuaIc1V5eTK9ayODAwZxRFWoAtf4kmAeBpf+onk6N1I/ZFdqQpOZYRAOGP2C8nyx7yhsGPtGtCJ/FbEnIFB6vTWVTqPF0JJm6q1XMK7iftBqgczkRtPo2cK3hhKJHyzTFGVDKSsWKZN8IVrZLmQi1CLNWqmSjgqWcDI9mQqtKiotEDXN3nGy14fYASsv6wlUSuKDBBlIXmn37ow0CgQcZg5rWqHZUYPhC2WlcBJE2ORpZX3GoD81p9cADGis6rDjGM97FrBnRHGSK/bqwMWvKqZv1XEZd8XmNXrxw1f9hO8uQUyG69Kov6j/3UPK2SvFSnQxpiJVWbtRBRqMrKV/xzpzFGLcfWdzY4LzY6uGszFstD6sRoR6oUTOtApiRuSMmbYopYqw58C7JQTSwqPpgLx1ipmoYXvpnhQc/znKX0QiCn8mTvE5kVavjwFfd1PwdBHepszPF093Vh5wbhtgcpEd3r/mpoOR9DWPQ0/5R7pdb+51uCQ5jUG0RFSYpJpQzWf2Immd6ZWkiX+T4AyCiE3txXgWGNMK6zjBwDn6m6e40CA28uCa3dCsE6lIWSclr2Zum7YDPiJexb8FvMcXt6xtOwIlrlbDMSZvGhH6VxyqWXiWTHpm41XDtDpFjId63WOTD20l1vEXXZyJtZn0sZqNQoYVjBANYBf3PgFotvMiI7IC8tqIA/5DcIdH6LWJWLIYY9MUUSDOdGxW+s6HEFytvqzuVwejNkXL33UVfcR9yqRTNPLWUwXEiSVIKPwlCVgNw5khAo0J7W38a7TdjQNKo1Cq/Y2XxJAOQdbl2HEz4pnzIe9DpPCRS6EYccu0XH6kNRtDMVRFk6OUg2eRopgLzvUWR1msada5zYm6eaHYfXPwrnVFmrXPvYsF0g+Em/CLU6QtGtbXbESzrluYiWno4opMtE2UyLdNkDmoLqOtT3NOmGiutFn3irbbvxNYziU1Dlwa6hqxM8mpclG2r8TVCZv8ZNSRTkGBER406dNoeeXgPBxEjw7B2MulgiEUPM3bKyntje82WIaGcAAUKzSZ7/FJ2ddVykZ2a8QDelfz9jItJWY2cxE/W9hEZ88Yy73ylMMupnAxoRINzmc3tkd3oYjssKcZ1AYEgXuMZnLgZ9SSVJUb+vb1P1iQIIdxW7nO0ferzYssV4qlJS/iKO9voXbmsFrlV7pIk4wyjhlLbhaidgIobHei3qSaXYLPAwyP5G9tqe9UIluXnaxrbW0yp1wvLdWv5dVQfzAdp1n2loraFe1/nynsQoqLWAfyyHraa4ccXEDUB5eQRJrOjpVOagkAEP0thqNXzC0p2pNcarkd5NUt/JYnUlrOrMQ2xxruseSBJmRaz2ByTWBDbaNw9u6NrHCi0IHibMkk3wurN7trt2T8suS6IH9kPmuzooVKyyQRbdI+ED/m2bdEYFktDL0geyDzz4nO9uh6DFRvivUSAupDbuA8+tH6cKMML2M+raPyTJRJmfKU5o9PaxStKhW2smEoHkqvrCVp42t4Hw==\",\"9+iAjOTTLOrjATy6CcnEWLmO3kYXGlP/PTP9vJ0l9d5Kk7Kjdju4JnFKHI7aN5kM5I7ON8xydiZV/6re2IrVxds7K4bs6EbeQzY9/eYTvVmhYgUjf5TwKje9mzTHsikzbNL7ZiqPBmpriaJD0UmYghqH3wivkkZatl95baumdTPDVOlV5Y28DFkFObhTtJ5xXpmn/JxwMeYzYgSytKGIuaTiobfWzIOB5vmaH8yg+2PTYrXf9q46qs7dGM2jdtPuPOjy7Wc0cKakkrxry6586G0zk+roS0dU5g1XJBDZRbjN4pBduhszJvT5dnH5XqRJRc2HrQdeM8ybCKOLMaed7TGdTxJHAHigY7YqZw6NAXBLFe8gWChucPv7YavZi3niFn3WG1UYst3nr1UPuErFvZIaRpG7DqnwTbkauWNSXWh8r7RUENNF6L3plc6lTCgz9LDMy1Vtg7P5NDOXtwhdWMmQENBcVlzhikj7EvszZ4lmXGAcl3O2vrqwKZFRBcd5eQ/WuSJHrBS6bAxeH0s+CFsPNpS7nKTNm2bHq6tvCdYcQy6kdCZ8JbZD9Gz++LwYmobihK5xUv6yTDNLMMcpT7nzwELJBrwnNbq2hBu0zlhxfZIjgzxcV1xotpU0zZK+OKlG/2n3q+cozjNNNKq+XhjPZxptEAWdU7nRrQJU9OKIiU3Z2ZIjFAB33x/7UQEqVusXcCm6W9b2DSWuOfQcfGVRzYIJNSM3yUt7mPZZ6kQvmCalpasEyimGjrUi2ksoSpXb1DIXWawiT6yLStj0b4I2oXAVqEg1snDP5iZUwIiVMmkgwY1Y4D8Ed7b1ESlo2d0I1dhKk6ARWrSywz8ZxlNNC6tMilrzISUjVyJg39uKnPFVtXxlgNWdVy5ekm14ihStI6i4CfLcmY7k2dcUQnD7YKJVRsZLHxV+FCzuo+JUwZKMV1DJ6phgdJF/iRpf5K9Sbsc2wsghZeHGLFDe8eLEIOo3RxLP2IycD3kfImW0DETHvno9saIsySLaMcOe3aL8hrGqYvnmfm5MLlqJh4nrldeGZJLiOROqYnv83oYOgc5a/+aQ0Ef3FjrqQVTEVEM0ww2UBVIhgOoNbL9aZSMXnFz7nWHECnEHtXIRtHqiHT+BnsKeo9TFOFgY61Vw36DzXcGcdTzLOGsfBSUTlMqqMWBzQvN72z6pn2a4sAK3DtUODq1VhDvWn+RKFljQznl3WJ1hq8U4xF9MNtkSG7sTv1Am4wb6b7JUHLtYjDxkjgnCGFIQEQeLY7WvtBEpE0XJZKeW1iBkmH5rNyQmcDAy2y7W4Az4IINqaTfLc1gMbj0lk7AfjoMg30vu9l3uWu2X7uTMWwVhMZXFO70pi5c34jOmcqW6gjGaKpU8ZJJekDvOKc09LphQG2J7mViWo0OqHNdsbHhKaZbItGwetVt+3CxAcqhoswJhgZcCehS0NZMTKq1FELrWT1FicHArf83GB92qK+CP5P6WJuKNOOBmloT9nNna4y2yxlGF4aQqq40mERxi3vpEo1YAuulbQm8tPuBV0QHHx656cX/5cxBGWRDD/SnmFaBrYodBThTgmhTD+QeV4WO6OGFhuCTKotMx05tdQEIFBpOD9wm9lUvbuPtQyT4P9FnLJV27FzJpy65NRYuKFeW2x+OHLSjBF1BgjTyQuoZl1kHuudxJs/VKgTnUZwYLtxl/e5NasEk0H+VyIo4h/gC6HPgnFVrJsWc85IWSXBYxKFnECGn9N9A6vd2w0yxMMPJPeJ3ADObiPoD67QcluFxmZQRBirCNsY1qZcZbX+MLAv4v72MMOHAZLCQCT8byUJVh5ab13/NH2T7DYOHKyW6AT9Z1XQ==\",\"++j7angskfeauMMBmWcpnNNgK79jomzDNxnhVn2Hkyf3WwY4Uteszdx8Zpl8pmSdhykpKD6HJ6PPx6uQLpmvgMhVnlxQu4+J4MlzlbIbTDT/KxnO/znJi69IRKlbDG2ZJy4qPE6CdVftIgpxKe9cRGQvu19dxuG3h76mq3G+vfKiNJm/C+XZlCYWAZWj4fOZmCjypcHo/1XrcHe1LiVokWuMF7eM6UOyUhRMdERual7ErRoNYtiFIu+ZJhr1DmnMX4Qq2OcysES2HPiiVvzfyyDaT0rY9V/kelx2zc6UwrJNsGWUP+zi4oDopVK80UL30szWvdJ2eB2U0q1TfVnyBnF/1GrOmYRD23VEDZlCRZTdL8pdQkMDwsIiEKlOsNufZPXRbz69tTj2Be0IOmPCqvG1VLfPIMaQ8Ba8/p7B0SvS0TNgt994s4dnNgN7P1KeJLnsaCealyFkJq3gbhS5ehsI1zBflJH4+cK+tWUpc0YVa0r+gGM+s3bVdQrJ19DSLl5Dv6VoFZfBOOLJRPp1pb1scyuZjRUZhciZofpg4z/QUc84E2I29umsLvrjgKN7bbooD5V7WGAfJTT8/lkWZMGR0aQpkzuu/oD2q/7DIpZZzp0DUzv7jBbM0q5tVJLJTL1pu5pVjlvN398V5BpU1+hy330B+zuBJSk5yMGjkAwSTQd7UmcHasgtc1MUCGJc5A0K/MUVUa5b7GSybzw26rZZMc0SDbhA3MOeuAeuxkhRJXXkJSOSqP9CN5qVBkghguNyXpiwXkxELSNHRMTI5bLEXaznwygHkm0y3i5M5JoZoeTm7Cewllaiv3s7YVFr5FbvEANqBkfKi9FN/vTkXjA4PtLU1vR+C7amzXZTZ1iVsPU91U/Hn9QedgWoCeNC1N5WaqyY736oLu+ytEkEtjBB5JDDuPZdRblJL71vi9bqX4f911iZtCqVqqXN+jAZl8OrikHXbE55J4q8ZKUUCJrJvt3Ii+7fjD1GjgAJfSFxJNtXDrperH9ul04MgmoEQRObcFKT8PSSmUtQlkx2LMMIqDxrnlGXTPZTPyXXooegeDvWYiaCnhWW9BUi4F3M6lZItINejLxlBunQDGu9jC+6w/bU9hipj//79Y0efgIFsJluGapeV86iPiVnrghjtDprZYWi0hrw6g3nkGBN7rKdaWow0smv86BQIq7Fugrr1EVJ41yTG4pMiCYXrEnfBrUldmizDVzlOTpM/h0HtikMH6sFSuIijQywATzDXgALrYnVEWUYIHGn9KXxhpC2h3xRtKzLMwaXrWqJ5I1lj/6GP768ZqhkVmgTt8zZjz/UUdYDlgmDfsdM+iVWT5LN2IjY0C/dQtjOO2MQAQjlAVFAtjzywpo4OWkVXUYXXSwxm2P/Lbjoe/sSu6rA/AZTevGnbZ/uPeykx9ubS/9IL3o/kvtBV+8lhDxvDIwtjGQFaurNTAxZOEl6COyTpg7kSu3EVmdvyGA5GFYaSyC3Vs1iY082jlhxVXpX0AiDgETk7Xcic1DSX51PiJJoOSOFHHrBXzddZCMRjmtCbtW6aveRkHHdGGmYk/GzJSmAXMh4ihh+iIBwiehFIm7sdQZB+ymD0K94m+bn854MIC5WF0oztKcveb3ydaYeKnLs1NaMu10hFF+m4CrN590DbHmtbvx9wMKHzgTTZH/P8iMKPTBKG1jemX3KsEiTvMFWctFWf2eEp8CPH/Ccb6Qn9OMHHLahd8auPPWPIR9dAoNtyJbZY9nMQaqQNnySUsWmC+93huD+CMe15wkpvY5aRFuQlT96IXPFHtlo/28aDxfjYHPr/qa3b3drVM3Q0CGtC72R7LJUrq6LCUhM/CJqYw==\",\"wc2dPS2QBeTn94l6Syqm5KNcpULNS417a5/HQzLuMXa5sYmVAc+mPo1pYfcJv2SBitrf+FNvK6dCk4pyl3XTfC9GY4sydm2wpGM+WKLCYbOzlKr3A1GtlYfliq6vAuwULNA1ahewne70xJrZXvSATnkcze5KpLDQs2rzWt2wadDX6r1Hrd0frNcDrtVcBcRVu0AbThzxVWgix55KljuQ7B6pCBAOtcSklm0G4N+0E2pBfGylPlE7ahLaPVKmvS+E4XRgAxY1OK0H3MtUjHNlxBKhtTvby3T2pR9+K4fd0+kOZorBGkn3g+U/A4ahQbTK/qFS5Bv4WzqyMgmVq9hwS/+LJETsW/qxHh53+jfZjyMAoWWRLgmJa1P2kVMWgyKklELHCV8TDyPUv9QH3bcQ3SHWOdYekkdKK0PPe3wdElEyOj4rgg7+ge6Ub7Kao3v+pO70wZGRpFXcdYFoVIa7Qnc95aD4P7oUHOtKmSkCE+GjpMjQo/U2Rc5inadavvc62Kt23mNRVab6AflYIZsPiqnrAZzVdjoeeHtSd6c9J+X4fB7KlCWtHiWsY0wsJ2wk2ZeSImnBH7LrJHZBQGcATxI8FZL53TWWjozusOJnLGJEnG+pJjGCnG5IpT5m0mZ1WROMELcjmaMUlMMAbFIqlCBaHsmHPWdtOjs/9fLGfjhn59gP/m5mWC85Oox+N7M8BxTCLPY6j829arfxHIoIJaN8YskuhUrg6DWQcACfwpodZhkSBrCjrCi/2hhwvIxHpXQdLeOVPQyE3ZRmpeKPeVrysuqAOrJw1I27qQ7FvXs0qMccvyfbVyBr6vvYSGHZLFih+rK8p/2bwmYJ1i8J2CET+uqAXufvAObwdu+V6kBwmQAOdMkKSN4dY5YSw+b7VvtMvK8VXhD6usgkeUR187+nZDqA/ZUOKd2EaTFXNntU3xDPaIVx9vLMVcjTQHzElukLrBzrcN2aZjz2pJlgf063cCEqTi8PL42lBgrSRFg7vWTp9J7kIonmFYO0PaQUbgVDY+7LBrCOCINYh2VLgQnn6A1UyS4x+CLmGgHqUwnymGSKMceUzSo5svkyAKz9yMNuDIgW660OZP4rcWpZfvJTFZZ/+9pOHYNugkXyJxO+mSKmpSlWLwyEr4hUlcxTGqCeUpCV0xJD/0D/2FfkUvY9rD9fwMXtOp+TOZw4y2BbRThA6o0rz2w8/+h3+IfABeMtGLc893gBVaf6pHhOFx5pD1dQR8MH0AJ1qfWppszBFue8sJRicr1ejwdiKqZ/D5kwwqK7kvR8shTgGWEqxOu9FCh4EMgHxjF8HHW/R7mQeSwqNBzm0ZRI802sWwESUFKUHk5Koy4LJGyfUf30itFz2/Z03sbOKs8/ojLkjtheNbukN5zWMfRhXYQj0IoYgQdzmhCe0hwnI+Ml/gdVW3RMKBzq2xTTrq7N3NJTa+LolRQDd9Nm+/nmut/5Xcx8gHPivJ7a1gAAOX2wYaYkxnbvYu/0Lh/FmOqlfM4ZUSUuUUm5i87QORXWzUw+cOy6Wt5sJBeCW59TWutV3aYlIs8zyfPWF2aNsJMWt2V+tZmvr6nawey4Goto6cr3MZpmUxiH9f6QBXK89j7S1ht5XLrSHoyuZe1+NEBJrqIdkEYaZlQkGqFAjrFQ74Y0eMZh0T+oCzjg6ZTZBGm0us1trXLgQyNbQAvK26jqykCMwBg6T9o/CjVI2EuGo6wfer3n0hjVaqlfJuExWXsFfzQMa1RuDVhQYIOmUcvvAILKFpavR25MW9WOLFlpSMMkYe4mqnJ4SwIbLU3rB+rS2VNusyXJL//vLJaUpCqapCxv8kWQQ/GpcPvH/JeqojsUVA==\",\"L9lYY8ZIBZDoklPoJ6Lvj0zt1JVAIg04FWeX3b2zMr9SpAG2nXSYJDIHRExC3uaXFbScdh+2ZR9qvdDPG8UyfLkPH0s3kpYXi+EtXP5mV9+5JbclrDFlkbfZePAhxBQKjQqYN6rRosVz0iLcRDr8kHSIeNYKaFllbaMfX16bjSNocWmehtuI9E22Rbt0XFh9M9zgooWLlo+j2PZ3kFfd2GDTCAql2HH56l2vuWUE6RJWRmHGhmfSyCXUElRhMctI5rBl2MD5WVykpFd6qIL2SqCOCbv/nUBT0Qa8OLTllOrEOnNNybzc7xeXs8ec3DaCKpEoXdF2ZJSMCLULUxOPft5o1SFBikTbkX+yzepgJUKEC2AoGnEncOhae712A7KR3LQTplWmY217oKNGY1WS3w1VscgznV6hN8F5wzJYBS32wWvNO1bQ7b+aoBNYrViPP3wwF9XFMpqTUZBR7kO5EjQb0XI94B4twYmf58m0eylpSytFsPURmIglm9kuNARtyZOYZMTQvwph441tY0myOPpBaUp5cy7SLWgHVq1ntavM6K1K8Kip/PH8+t3WiRTkJe3xGs6MmNV02/1goe1fxFhki8PPRN2YrGsjCeJBDednJrc5UuvWOal7bE93wphVpoku68ulj8lTHyShxQFxc52Rui6yD0rbBseaENUQ7S7/b+2Elrqv4nnx0TZavPGixW0wE/1qr5ylzePD6fs0MndkBGx3c3f6wvSOoXSHQo/N5lnTvpY6nJuWJOAjGuzcl42CDE5sqwkOy6aRi/RQe1pM+rwKVsOoGBWLbvIHUrnzpU0vjdAbbrdxOV6cU0uBsBgQ6F3cmuf8VGXGW+mMIo5j0GVY0Lk6wpr0rUVM5cPKWlHFNQ0oNEsgGZkSqFRhjPUgVMK0w1Xr0sRuuEmkgKdIwxzJjrCuyBylkcRpVVHWbfgHjC7UjVWgG8LjZoaZQukfTTHlnV3XCphxtmu9smJt137ZODjq69xa/KW8sOmmOxgVuEurfHHsdRsqWUI4X2/iKe1AnPZuqJ1MIz+agND5RnnXyx0O2tpqby0QGO+XQhdlmDzW+A7kOs1I9AoC31eYfZgwczs7WWD6zfh59z4VuVRJUcpUbO810hMWOvwWSk0s8rdQnWsx3d2A5l4/cj+/mAXMmHXtL1nzW0IHAuzeDZVO6OjGmd7h68F8PjbzvYMbMTBkAAXBh3E4g4NgQt9eOMct2xHZRgbHtpHytU6RYb86qMIuN833yrJBszCblu/P0uwdApdVDHzGHz/gXYjP6RbPaGV8CME4BlNQKsrzJD0fgCUZ524kWr8ug5HIy4H3722pjFDq+82wxvrZD56lTZrIJklktzFGIpg1jNBrRVswydNcFS1/axfUmgKhwT6DDjoyDMjXKVGQJ0byFXW+it9TXowycAOsdz3ZCGNPZZXne9kI2W9GspCbSh2jNfAUdLN8zqLXQeiFwiSyYdBKbZtu2g3dQ2jxgMwE0mpRGNx4dVQ5XIgZ41fDpLTanJsVT5/ZCaRgAXTkuYpiiQbyH2JFByyHNRxhMeKFdMS+hYaCDKXsFIDS8jYb4bG5tikvmcGz2KA/kEatwrY2A9YS9Ha6JtonOb26Ybl5Hm12gVlvOoGda8dDEV4ZNLD08RTGYsoIlpC0jdJLUz+eOHZAPTFW8FaD+KANHjW+xLay2lkK2fERaG1Gk2jHGa7QHcwsAazO7PMSgrs/7+5XXwOHA+e29PASsfFA1g78X6ZCyihyty878UifqjE7UO43A+KRgX4hG2qtYraiQErJoO1hykyPL3uyrqFD6EdAcc9mgTzczbcvWC5tZ3mTVJ7+1y8rhvDDdZGM2taKlg==\",\"FCnZLsFdrI57cJ56MvdsvJ/8h0IfD5/p1qr3rknoCRYAPaMUaZduAXoydGnFCqFCOpXyJ1+eIAZJSwK0WxdM6X4s2hYLIbM8yXGsHL2aO2zZr43213bQT9jIAJmVbmwqBKeLW9L2HTT8MjoJPpAt5FymWnx9mcYcKYN2hXE3e0hYq8bRrJJwBUyrAa8+XMlC8gcBuousMCnZvG47kS8nqAamYYSl604Z3Z19ilRMN4vIvlT+zNFJWAOxmZ9fpkIzSWgeTaHd80b/aGBtKHe0nC6XBr1kYvyv5DmzpR8MjL4fPLIPa5Zk0rhMYSzMvKnlBCqzRw8uRaPw6np9iNGQUNcKpdS3prGMr40RSR+AFSpWOPrxYeXP41T0P5lIgdOfrmmHzTRbCq+M1iw0Za9gUXVvmgkNdV6Kpy2npVyQtsHYQ0cR1InEf/qzTBNd7kMT9vhM7utFhwirGGEUStiUyCNImkb+gWRGHU8BXDJ8RhpSbiy5cGJiJxdV9I0xKNjp541WcXy5Dx9zKdgRaOs6+wcx7DD8QPhSKFAI0nIIhv4x7RmDwEd1BBpJ5JEOPyNIPKy+6D3RNI68ZiLYzYduMeW6qIwY6ay1om8KjC4FQKKzqC6GfVf1Mgb0LVbD40Z8x2Uv4ngseBYeRKUpia7DhTfRsQUueEpxALPKd9cznmA7VLWMOjRXTgkjBRgYs17HMk7aTfew5Ca312er0wue8qCadBr7Ih5WlfZ+xtPB/SOTcY5zvsDjM56eTOrP3IGLsnZXmc5BSGXeEHT1mFc2azQ6hkkRdMWGjRcJceMC6Uig3McD/PXHbnCDkSCh5IStAMKqHG8N1vXPCLTCVuBs14X1UXkr0wMRQUIDSYiss4NhnYbnmoXCrjPW10aBdnMEm/KWv0aNPlpHKoKFWG5GZzDqF2XJCWIcq/iR2M8e7cgKCq0WixHAcsvJt8Q13cGWp7UKIz/D64p2rbSKGgcjvSEjXriIdZI8sBxVrMcmP/MP2GiaPXpZc/0To1mBr7BcCqnpTCbnTaVXDhH2s8BECxapqZfRUZxkjt3AqxdaEb1CvIpaL4J+vEYR8FprfTwWdLdbyjxFz4AlTwdKbUtQLrxZJW9hkoMfQGYAwH1viS6S8BmVBL5eheXSLWEz+w4AIF/zOOz+uxFEinwZQvkMADoMoJPQyKA7dAtyIzh82efYlwOCPqYWnnswcREjJOb1HhrDYrGAyxLDJtnHniUPHQVgJBG83pD78WajzBIcVfqegcVioWyD5kN1cD8fHrxmkYGgIxXgU/cQnDCP0N2YOrYMjPw0AyCxK4PxOgjVMKPubjii11MDmq+cl7Z4fPuCQcHqBWJcYGzGH8Y7YfHtxovT+scJ5zzqDWryzWGnBHsKSv0G4F4q9RsxWaNp6jqiKhQOb3rUQuk3Z26CRUrL4UXI7UBUCcUfwJVB7wf647hVXSF2ugxcSRWZ3CsLRTcqSDPvsBJUED7Ct4EKFTTjkJukOAHknWJ2XOksOKnst0ulUXBI81vgVKoqkYO49TvJciDuDhxGiq/cDU9MQScIFnor4/FqZwjWHXS3d7OeOt9Yzz+gu94ZgqFybLyIXqk261NKnCFEAX1hExTohXTfh9rAhzte4f5rq7BaV4Gl91C6BbvAkY+4Hd3Beqy6fqeL1wiBMdNfhwweJoC2NFhpvK05O0YLAsot+0jrszj4So2XEsKL1INH3Z8WQmFbP7m8VtNk23WtQiiKWQZvCosauJnElSsO+m7TwvidsC8aX5EZ5MzTEx6DeJHWvMH6bQ0Bob7ZVRlDQ+naBlIFNR5o8+l803jZ9BHrt4Zm0IuQyPk0BgI19xZBNFALUX8E3w==\",\"wCFPdFVQGCD1+KfCEXmhrurR8353LuvcQxwtTsFQbUeYjfvXS9fLrf+Vmui0IXQANTgfz3Qzms61p6gI2Mbvodoe2KeXa+kpiAb1xFBsereM+jtgfaWoGR3CdpERR2mhlIerN6BvApKOaxuZwwasyJkPyJORuTkeHtSH5wlNLUPuctN8N9MaAFRo9GFJeq3Fjn+HRlq9njP8uBXd/CYNntRQtAPX70+HMO5YxDrSosdcUp/G809B8tLNqHc/2NM6TTLZDZMKb1ebeqiHeoj2CoAMAR2PcD0cX/VdU2YSRY69M/qmlcOi4lPqIQvIOL12fqo0nbSvYXP+aWZBKW7zH/ZRE1+G/HeIHnB/bGNUShkx12XjP53sfOhXOSy/lsmdMFwRBMM10itOY3NLQPhL8zzgSucIB0/OhmwK6rlqmOn+qS92O5yDYPaxA/gdV4HBSd0n4lZqCtLbOGW3l5X+dDnaWUU8w6LSzs1n0L7kINzxN+t8Kibo70m4DFkPGfySGayBn0spU7ufT6H1SpZCqqMtGeVCOOt+m/WQ6RErYkAGZWBWIc/K+Awblyj9WSci0MNwO73R+MlwM2I61qmwqqSYQZER0K2GYSIHmHgVHlztxekBoQ/wBBnWETLFEQ8wbBbORwbBvQ/oIq7s57T5NHyMUEnM6lT9MngneUmwp294FfY4hNQeIhl3qMcEKAB0m2S9NNCiUnW06+sTI6yrjq249hg6ApdQAUdE0E+GbUtp2WYSun7IZTTY1MMaCrqpnamNIHX4uBqydj9MKvvnZX5N61pwHUzOjhKuC8atIr/4MyyYBJWAtcGsWGFiPyDEQEEuRVqfx80QlaitZZu2ioFoMNEWrAitMMS0F+H9YLEDQ9oXukqvZSWaIuxMib+Dm9Ja2tZwmGryB9ndKVAPUKmL4OgiGFuHGSgdWI0nGZBgO3GjSE2jA1fYkU1lYRUI/HchmI1RRvpt4lq+AXAAsAnd+CTQcNH1mBTg3a8DGoXOL0r/VDn0Xzd+AYkzov1zemUUkLy8e/U6oKmbBQau4i0X5QwMFvRZBkmtYQVQHVGAL0H27Gacvx255uriyyGsVfVAeKl4FamimMe2iRslLrljA41AthsAQwap75jAgsL8mJTmAmrqY0alwST0ggTNDsqVAOtYWXQtK5VSIf5xPrXofviRXC12miGCA4lHQ/D1qmT3w383HBfTMG8aAOp8YkpyhDyCS7DCsIZnyhJ342ehJEjHmUflu42c25BaDMO2y9WJPqDTlBy4kiLkUHhG1qCVRLswJk90xJCPHoI0kGZJHumCHtRHJUk1ot4bUwMA1yOdUPYz7hZJW8qGqaJTOYZow0DMKaH9lUD0TIke5pwHo/KDC8UokzYijiH/31AbPNpnrPqiSQVl4o4zcwqGQN0cpKsBLRPHUbVJfGjWBE8HIcnYVsKRqWUVhIZ3muzy4wc8y/guwVepQqHLzXcPO2dfZmLaW/XbWVob2Qtbdkr7kS66tYz2hh9qYwkWjbVpMVKz2/1OWznI3m4/aezVV3k4AJVlmoUymREwfCIlx70l1MEKipqSSEGg2TpDwn7lWRIi3LhOWfGJJMAdhN6OBp/gylsC8yZ7A8lq5/vg8eiNPHnS8Qezh+0Ks5Bbp+csjwpcgYuPqskg3RaHKUT4IF4gmtYx2EQuZTU6aH2wrjrwjV79+nDx5Y5IGh2O6g3e9Oe9ckjMxYCWvgQncIqGTHK8OV6Tf8oflo3aqIQMQwHPZe01puXBjGnlGTYeMPDc2bYC1kbCobGo5SBIet+bnkxsWmzHxfUVbfIUcMmNVCIzCIIAp9992A7nIYQ3B+KugXm/ckoKACVWg7ynFA==\",\"RBM1q8dMzXUaCYsaSbWtyfT37zUmttmiL+vRp2QBzrTGtmCpyhWPydP5uUYdQvwbJJGo/5vvKd1WinNmJFQFyvtK/8RsHGRC/qvdSDIyzxp+/IBjeOit3ZbLpRMEEsVN17aYh6p0wZabO+tiKdDYFrwy0mruXrXJ6aQj7o0D9PniPzSCYacV1vVggyJiBXBD6TEPeKh1p0pO9CNJ0mm9GsDbRJF2Ehuqpin8jwicTZBXI0sYZVWhtRH+6neiXqVCbmZwVCZPRRCyndkPX8rIAGaY7JYik95cgEwqzL2r34iznvycxleFA0yJgOWrg6IJolxOk++NaDwvsIXtK8+IYtL4jznixp8KfBqcbIR/+4I3GlVLaMi+Ko6G5gmUQTYxJynKwHNGXhLRjU+ujNpG3t3QHiqCb2eD0teNF8VjZ+YVyflsYWnpw+L/oF4BiNGFU7qmMyfRxaFiuN05aR8ibo+n0iiQ7gMmTwxx2cJhKqiqUgpkpFj7lku04zenMhJ9OXqcZuBOGzJ+f4S6pEtfA1MYrmuDbbjltD7XvD/mTFU1MGeBkZzsSPxLYpFv8GTIQH8Yl5N7gmYg0CUh74MXo8tIAEYj9JORJ/CAaqPQHho+0ZvPdqb0fDgLruDMbF8AhDnDjt7YB0OyVI8fkwO3tg+oz5ev+DSWX4CI7tWK2OM3ulCH74GMoYyMuqnMyNWKeIImnB2/MWjPG904SkbspVvBrTyvKItzJ77vri9akufcox/YCPr3ft8tDO5CUN+IxYB+WAhgIXKc7kMSUKvYUPjSU/eDUU6bBnmW8ZvdtHYb/WYOY+5an5VdyZXiZZJyf0qdOyPs32CL1qE6flIYG5L+8q1fzUj79Rj7gm9G6mKmw1JgPDcDxJf6ZK2luVCM0STLhFHzSXGWiRIzlXVM8reg1rZHsKUIaYIQKZQibeyQeC3tmGQqR8RS8GDBY1OyVf2+h9Sp3ug1/0MzZZKpBJNyIUvZLgRt5UJ2TCwK2SUpa0WRdIwwNaHF6Bm36/USW2pmKAk1k/x/Cr5K90y8c4C3I9Drcs5pkYqu4UI1pdv5MEOZEP4lIqCfx+H7UHigrHmL8kX4Gu+8KeBOEHyUAc1yLszsPzi0l86EzQIak8H6O7omwKpnq+LsTEouRSrh41fKY+YbDbSZGe6XFXOryQnFklMv/O+94xhG/z0Zx4BZwBvXFalLt7jXlGiUuAmdpLe6K+u72KmttD64911Zx0/x5kCU3oitrJQkCpla7Y5XDwyucG9v//PkcRroPJgcJC4AFnIfe7RfpLDl8piRJwOWpHieXFbIAAaOJvhMe0SzAn4d2dCXIRwUEM4K3/Pv2DZUYH9fBtPcWdfm1tesQ9kz+XFuXZsvdqtFX3rqZEdpMz4Mduiw2rV+fpf2gEbuF1t7XCg8LsTNzAFbvk/Hb18/vwu5j/94WMc/OZT9fnm5w0/5P7Gj9Kwr837DTOGGHMbKY+bDzrRsRTnt1iX4bOEUNmXfJZkdtaZuYWGyUMrUnWPezIVRTm8dpxFLx8Bivw3xoAjYvwyNV672Us9f+FDhXR2HqAHx0xo+be0JDN+ALTzhz+L7Tg6DNf8ZnD5qd+uR9cntRqa21Zp3SlpDKlKWacnFTVEJ0erCb1elu3N+ke0z/Ky2OIx3lmn6eNrh3gq1mlQ56/WA79UhCHfouf1NZAS5heLezg+y666ROj5/yKLquLjftWCrVOzmxM0ZtcuW7AIIoi5gtG8txDcX7hek22cpxVANNnYAfybYi2zJpGoKgz8F2c7cew2q5bcLQcvofzIELnjXQeVSBd0yS+64+acVnEZ34dIYmDdRS/iWlN7ZULvQJFdrJG2/1w==\",\"zSv42IuX4j492oKl+xBnKAKT2Uand/5UjmJDLQAQH1sW1FCjxG55Ih8aNEFq/cwY3Y2VhZlKkqQ8edju/sFoeM6AG3lAIjh72O4W2/DX0sK9agBI3IM0+oD3OA/tr32iNFVUNjnLLoYctsE/wbC5uIXSmCHwWsGU4Cnt0jbPgass2Y87YYvDWl6totoPpfqzC8xI7kJ4hNZkVV3Mba2LT94R/+tNneNTLCSsUX/DTABSqsxEpc+z96cDtsO/Y+9PBzSQPF/us12o3MQm0xgon6Q0QIlDICyNI1HW1M6u4JVhWsTX4t/QO22mDU2deLpNXza1hXkxclktFGHnRiq3TAfvFcwh2CC8lf1rnjmBaCBwwj9VfDnkEYz7OxiC9p+k7qOjYfX+m9z5j1dwLlVkz1Tw7p0yrsa77aWm+LpJ+24Fciz1yFihFFgvhGWkGTrvj/aAOIbPOAB+FOUhmIBZT0nIlQK96P2CQAg8puH8xISPi0fIGSk9LzrYwwz7ZRzEpsCzYQZD8H++qTEjOQvrK5i13uAgHF3DKhRlEbE0kpDVowNNBJ3UTWCMZaosT+9HqavVwzBk2xTV7qpJCOdLGv6DqJxejxDpkUdmZVbLiUSGZ1gnzUzXQeLqYYeg30O8w/6g0D8vnDzEe+xYLZbSaz0U0KOD1m2keTJMIib7M+/31vSQW9J+FZa6FYraiPCgfkuLxFMAus2TXF0pgVa9hvj4hulss68dhuyACSFU9qpP3ru7nDxUgp1+usjJg3biKe1iVpRWo88HuGRpaJOitZqsWhvIq755tNnC5uIWHtgJhzBio3SnyxV5uE9AYrFTmhniqLRDUpSST0zA8pCfdBnJLLrtWHtI8yr8rozrU4hiYEfCSjLnu7IfnSg7lihaUrFw8KYWDtoTbP5hPo7PNT3rWJYwSlWbdO3v5alD7VMqWZNzpUq1WFIK6ay1ReYyrHOlbHFGChVFIbglHzNSOKzaModr/7ASs5aUqYKfCHmDw0/SxyqwYRoMI2EirMroUykOQTT8yGqccTuDWg0aPD2vrGexz7DA5KpZ4fupt3LYXVMnrBjkulNrkteHclszAJT8xVItkgKAoAyXY2vBjJdCQSCfFGmtkT34KXV/g+p3HdA3xFxNUZVd3FIfvcFIp/3LP6bIAxFmD3Ielv9X9g0RoFv6iNcPTAA0tFpNcftvliotnZCfLuzntLLH3tnVFG5/K9SpYLbvbrP04+BiX73oUH7lYSDAw0/b1XXbT9iHFsZ3PAon+JMSesf4CKPBls91kVJfXmLZfgIWTxArbI5vzd1Mhg3X5e/vaTq2ROs6pz8bxDv2rZddtGbsnKGwjU3OPLTgNJq2KmuADjZP98qxFG2pLqtahXH4k8tY1jjc3W1FqvKazb3ws7umY9I77zAD8BQ/2mg4jqpLWewEDmMU3oyTtzcKnAD2GusChH7Pajfs/mX9gRmof9sb/GfUTpttBzJC27v/sNstmjM6i6V1XF24nzR+CjBKbaDxlTrXpgdcQM8qxpbdjwQz0XVJS7NScFAvdIXNuOUKSJzfCpRzTUb42r7oBOaciSwVTdpJgu9vXaCDhj12OkAz+xDWPGiZ6NySOuag7c0mX7D6rqk+0E8/enRoaEShJD3PM/AFOuBI7U0v20zdTV7Pmp2vje3WCnRB6hfZQwZWpT6XUZMzThrWbprvjGBmzGmXXBGwCun/i3WqjnamtryCZsaLQ2MIvwjqdnfT2ybiuLF7fhKg5dHZhAnu4eI5yP9lMSMN7DvE97PQldElqD8Cu2OUc3Zy6hK8uatQnMcOVjB+m5jOs3tLP76u5SVDJpI8Lxr69lpUSSpF1jLMxVsODQ==\",\"Zh6sCPl+bFfixce1TSa/6Es0Wu5KEMRGpWkwSvE9TLjLHN7UKqgErDNo2hA6O48bXWdQBonC0LDJdMqRWqhTSurcKy8yH4/dQZ/FQY+tQU82eX9nTLURGmKcsLvhBNdhMImlk1yzy8sjvlj7DA8HKI9Dn4k51e9xXpQ4JzCWIOdQKXLOFrseFMfxZxwCKrgbXHwh3AeF3GvJ9kPKbtCXJ2G1EB+GAzofnckCD90qDErazAB/7Z9+M+lk7orKinXm3t+B2LU0HuQoAdtYDXFLjjk3cVvOsqs73VkHIqsT/9Rf7gRtlEzhAS+xm2TozuPxm57Oj7j3skdpDrs7GpzeB3li7BwX5rT/xtC65ridjXRFBW/AWnuvYuC4Ew2Gv5OEwM55vdJ0eZpuoR29PlDI+jkyhnhhBVpfeLPRlszYn4T5QVylOz2skFtYGeqJ/3TirhwZKvrlbm/u7qWqyNMxXGcveDLxn4h+1r265aYpyDBv68/38IwnlbofLxwGy+s2q1dvJs1EcRLNKjQn06w9auWHZJc7P1p18qk0IOOS7V3/pFYVt+0nIq3c3DE4Ee3U6QeZ+eRbbf7t1ji3gpr09oW5J5yGFsgSrauX2pblWqEnZxjoBdu1m7Qo0eroRNxCPWb06HwFjyni8afQjgNvj/s/WnUKa5rQE5kXs3Xl2oq8FSJ/d/Kf4csunwPf7cuKqX8QV5svl5vVxf36+jNsVr8+3N13InTqxom196xQlnTV4Uu67s4Q3gaBRTanVmoSKXKSR3ENpDN/BMmWYPaBW0ta9PD6A5AlJZ3L0t8kSBjaJO0cIwe7rJ9qI4o8yqgbgmu5JbJUhqWEdvLEJ6g0pkEwnQfVbuYD7UKjnzJHCQNMECCyGSJQpauxZm/kq33SRvb6v/w/f7BbM0yzNuL3Bmy7gvOyFJdHiWmLTgX//bwNFTph/YvuMogKGtGa+EjPpRNsEhGX74aBG9OpP/V8PyCZDb17BpA6ab0oGyYrCw0pCFJMO58Dg5lmFGfXUNinII8NJRMIs9/5LDoGYXzGkFoI72yHNjzP/wWGn6VRfdv7qlD5YrnyYisITYcfPqY4zf2OG/SCVHFOmAlcEc3CIalFEdmcD3QHGG3/+kqefPDz7E3zERf7eoqZkNZ8zzWppMnwh+pIieLt3uQy7IOyF+NXboH0VqkPZG6316wnXrWcXn3UGofRo0+rEbfaWa6p17h9Lx8oO1wJPcfx2SnjvVl3tc7aoDOO0+Ql2jlZ3qqxd7LbXWGPWzngmH+vXWmvupJax2XUYd1XW+PSzsq3a51Ni5ffRvK0xH62LEvmo4r2ke0HV0UqsCxKnoyf0r1frFQAkEu0NbfgwRnS03+tYhkmsmQZE9lar7MnfADnE6Uex/5kzR5GnVYDuIGO0IWGGcANV8q5uCyrrh5mkxakw3vfmMq4rKruv+0x6u12VpPlcnkI1MX69eVymRsw9uSs29T1lW66hrl2R2rbVaBN5zKWahGjQhtvRC+Ssj/Aywxu7bHzxvSzyQwGNJqGbLR5xpfuhA2AQVVcUGukC6vp6D6zXWLvB8Yx/DqiG3jTTR7uGXrp5ryF5FJakRUweus7KFpZDNTsd0FNLtALNFSVdoV6Ob8R+A/UJHDRQ+AMgpq0XmStJt+GIgh64ica6loLl0LWe70Jv+neSl0wnVf9M3A0cyYmjP/POuVqZVwSWPA63KZbLlVH9ul7vdf+4t8SCmFYYKDqbj7wvXqqszw/o8836l2OddggcTkO2gk8iL6P26muEGljkj2sDG9JtrS2Cxq8u5eI2mGRwo3tViWnTQGwNa0MxylteMnosZ8PjiMedbaEmvz///v/6InpIg==\",\"HImr3VebPek22xVqGqVLKTg0d12qVkPbi3BpWrodoEW7WKQ86BAR2OaZBY40sCEHKGOQO5rVsTPw5Z3QBK7qjoVb3UbDkvLCVWOnKeImUAiQQsWqh/u3iYGsxYXRJh4Cjf3HFtcWq58ajToi6a2fdzdYhy/grEusgzve5dLo240myJZGTRQYbUhAPH1NQngCT12+OXAi7O/wTMb3HTvp44zTF+Ow4w8FTIO+RNXPYUDkTxUv3DlYOMST8Ny5O+wP6AADETIAbc5IMsHBGT7bWbfHA6kBbtwMfqGB3lZ6K6vPk2pspfpb8cTdADVpFrl+/YBBjd7duv1P6Jcux/JDV3B9hppUcArl7lK1avpXqsQF/lFgWCbO0hC9lognIUu7DI+myiNH/uqwHmWzWriJGoxYMpGu29irKW5628Sddfv4sKVZ/ePFUI8AAg639uRVjCQHgjOllyAWYD8DijjxjLBPsxuuRsGVmfKdlejmV/RWhn95qct1NTXFA0OtqyQuP0z3L8PjpJIde18QgXlc0HjhYQW5R0Rw26P0mDRcl+2wnXE7/9lkHUG8TEoxDaJQ+q0FSzOS2WYu4Lf6xTjs6ucKnBi/xW0F6tjdjwKZyEuBZYOTzDJoY3NX0U2B2nY/JeEFNpR3QmEr35TF3tlZtovXIczDYAHXFiDb2lxaGRX3lBWzXSp9bPIKMHZC+JKKEaMw1NPVsdN0QzdCzyzkxhouGo1EZmBCjf4DE+s7C4eKA/xiCZybhlrxcF1xQRArR7gbtIHLeKcfgoWfpieTMcQGbODjW0H6bIKQNOMrHWREDyyOSS24plZi52G/x4Du4GRHuBUSpXYgLEszgjNToiAeVkkMoxJdT7QgEIVXK2SANpjZpkBe3fVIfO71BIgR2Vm79YeGj+2tij9YdeEHYlDsS+IA2Uq+TINGtGb0QNKAQxis6QBniE50zVNpkzcMmSwS+RY9Cr0NzDUFFI+6U5vD+FI2lqFhSGKzWaASSWFMizaEvAYRlb6kW+k9qjJTIqa9f+WcdZNSAIohQFsKHn3rtGn1QfZL86whH4s9Qew+FNvRW8j6v4jaRMGGmleOwqGYW/g7WQ5yDNcsK2aI+PQu4hhWr4OT7ZA7AiHzvrfIgjRf3VDfibr01HpnnRyIPE+19QGI01PSWLGzNFGP6UQJ9+lxoEiY1opesb0OyaM1wdUdHUNCCAFsxNSde7dj93msa0TaPMBDeA3RWpEe2jiAexMME6DGeeeUy4IfP1xJwrowmQjAS3BUZIY6FOL1oNEfLaLJT/MstENFhkk19nDFMpa7kICp6xbxKJGpZfbpV87hIVWSc5NcQZzvCpKOleF6/H/WRlzLCDiIwdwSzsA+ne5gtvWIDQHM6zRkufMAhCwgG2X7ywbosVauE5/4v4F+cm4vUEiJBkIWYlJeUnFLulHaa+2WEHr8EIz+ZIp/u2ocw2/oZigjdqcIeb89t8IL2GFtAKd19DsX9SMznsCPH7BVGoulAfxRJuClpslg6jg5nAsTMW7HP2TXxPJcBbPYIQGF2AwFXA==\",\"uvanHa8byLKxl2+DTL58sB2iBDpuSsAP4JZcaBPDR51oEv6BapjmIHLyxuNgqCEAcVcQtIVsN/2L3wTL0BkFyKUtdjVbOMWBdDBZOHKKFTBC7AMBE+RHnRhlL/jxI85lXFkmGlCxWFUxgHDj+fgV+QePJ4z3xZ5FUb6wM4rtbSs0P6gQoleQNtG7c/DCPTLACxi5zmkXUs91mbRSODCl2sV/LorFoTAIjHjZkvZjhDHVGZRt2gml96GTdjhvJ9KekyAoT52kdLtA7DQtNoJxN+sHJi4H0UYRICEPa6f2MJsSoq6F22pC/2FZ0dXd68xEgcrNFLxHoKeS1rYY8UkQFsZ5xtitcBLYyAFM+fEjS1AW1w3/YmQQyT2j7mBmGw/C7Dvyf4Amv9lPqTuy2CmawE2UZitf8wWXb11Bz7Me+064B16+HYIMxrDyUyZ7wPv3wRJGUtBNxnDTnGy/o9I1oTiEmpXFDgUq3orcX+6V3ikhgXbrhIB76Ng8gCXd0T2EpWseDqQE9h62c0b2HfUVjk6ECDmOZuhhEgsWyp9R5XBKogCqdSNBePRjIQ6OBd7eQ5dTvMyFxAUqYJYw/Ffj09j3bm9cAls/nt44AHsZPZb0ScNzAIfMFV5NAcrHldkwEjsr8NhGun2Use3NBIpwKsLDdnoZUBiYbwoJcZwBTouGEQghLF+gI2gj5vCq8wPJDzuAf/XvVptZTc4hciIUZUcVAjekoMb0viDi6Nx15hMJ6nypFgWSCcQisaNJS0eiu29vajvVjjscXgUHvaOHHNOXHDIPDaZRhPXfw4NaYOIpwwwD0iBqs9E5wZVZrJy+sOH/bn6Cmtxe3N2trmY7UufTgja0XpN5+qQEa1ZTtiP0d5ijLWDzefxJNNPxRAWZs4yioXzWfjTYoChVI5R8Xcm5tp2PjjH7KYcQpZRt1tCiKd60xR7LXLI8ZWjH0Q9rrfxshdxZ27k+XxbI9xhLr6DCHpSrbiVbNsKv0Nub2ywH87S9jW1BWGwCNaOXGgwh/Cwec9ej+Vnn6cZcSTKNo4J4Bci3wzUPtuOkUuDiFeFmUNEuyuFxr7mB7L+4MF3ri8gheRg21c6atY/3GsSjpmDO7L6Au78ni040Rc5Kei9bYQESdqmv3K0FTSglaumcbkLqIqRt7AHKXtthd1nvDpx+6xBvCghS6SikyVEPpeZGMketqB5bLsDFMGqPdChYmgOzwUCMFS+mzramb1R+1hQBUXndpH5S51LNvfQGSWOlRXzgXL9pZWTTsYKMkVqwPuLFk9CvJOXCqZSSystbCSvWtaYL3Kz4YVQDDFEHKTQCI4A8qmY4jI4txSSDxd9JBCxndAmIyrqBkYvAzUQdY0qTNF4eVn9UOyZZDDx9Rmg+usHdnwInimkiCBCoHnzr8CAdjnRpkh+HrugqoqDwzsCrB3H12s0eG1wKozvXyMEaF1Xl7NG1uPnZmmhzKGgXkDWGng4Kh0hFqvMexDcjyjOyseNFrGJSJ4rsMVFSwk+qAk8n1DpmJIRUdLxS23jgR8BJPej8XueRUCKxvo6cYMv+E25qUoTndWhOdJZQ0MaRGEZ9HUSSsSn8qTyRQa0qCalw8YQ8KH24qAkkZKDCWWKHlHSAiZHhQT6kFFQDuJVAPFzww4L1Nubn2ReX2TUcdaRQS4ty6EikSMNE6kMc9X4AJpThFYOtIFQKp9A8iKIWySt6XZAOLBuqn9AAjsoQZHITfTTXjO5XTj0W54Q4m/BLDkBS/xSVDK0NGaPcEyVYkb5B4zp6UlvTSo3x6mHVJZVRktEezdqHJqMn+URwG36uNoesnQirzbItAp3CP7Ec8anBajFGdqQ=\",\"PcS4yKAxbJMRiUmzDGmLEPGaaHKsAF8tgSNj4TA95vsi5QuNLH3RXwAZCl1cP0LAaRR47r2yJhjy+p3FqE4kujf7DBil2tN76Z5VJiHFAQ244k87wp38cvlFrrjcXT/iViplfy/s0CFp3UAaZtKsf2mpKg90UNHLgV56D6jxbi0P7es5oNbgsBD3cqDAO02Fc7TBZ+hCd3XlM7r2aFTEGCARv49AydRrwBVKF7bgpmylrvD796eLNqJmmD0FL7rBN4J3yy+jnAnqmfk9lpxGeVmWRZ6XrMyKDvmPoA5UoVaV60OFNVtmwmmNvJt/llkq9JPimzHyxS1u2yk1TPO0SIPOllSsFhmXz3j2XhGH6XGJEGx+0dFLzvwiaAInXb6TH35PD+3TV1jfT/eTCh2h14f+o0F2l8+ZfU44f5908LziNGk6USScZ0X+NiMN5DTQ36fgXcpaZAmXRWMGnaJF0pxWFRnKGCVYcphKJhetWYnkOA5tPOCjE7gc6dFHdGPfgxr3nbGhJ4N1TtXOred2B3v5leHa3hIKg6wdMStjmKZvjCY3s37MQs2KFEwdLMyU1OeMGI8fGlCvwQRRBqTCAbaYAyWUZqzD+69bLSsoLVEmSY51Tb2uZjTJhehyxbPy7d8vaxPHV4scByMJdJTUB8nBOqwXUrkr0hOOodA0R3GkQgquEkmFNObEBElVoKvNelsFS6ZZC6KMgYuo2lPMFo+p4jjJPN8kTShcHukXSZbZBxFxXaJZsr7X7pOK6vgloZrNBbklFJUEYrg50LtBI+ZH10kZIyRpyyRzdTJ3SduAYbM3D2UHdTOAcc48tjUysatdoEi+XEurfdr7PBtpeJ1OMXOG1FLA4fs02Hzwq40bWbhF7jHP++ZwQNElsl76Yuj8EOCUX6CpTQcJD5VpljXH3vgnA2mxQOf5mga7N005o+5nOSs0p4geW2aM4/eLTEWiCaD42IunOXtt+zw3S2ek6fEzy5KpLGUcFmbTrVyjIKBR/8aqwTo3XJadtYndUzz9qKJz8ftUlp3qOM1bMekuVTUOZxHu7A07ZcaJCyPiajKSI2Ec28/9dUSn0cs70WXXI8FlwlBbo9Ow304ViEo23KzAAqsRrCnnxfmE2OWv/MweYiyZLJrZqitY5fMl2mz16OJUyap56XtTjLS/gcyCUuUFjF1GK+u9cGAKaogSOOG/aDDiNPXp2ZMDa7oJ+w5+gmoKR6HP7IoujG3yqqUguyxBdy2BDb3ZavqWJJa3nuO0RVb1\",\"FKoqCy2LW5szoFNSL6X58J8MSqOslYKdTypFoNS8lPymTTisGLoWiHyZUQUEVCOdggEHuhDcdPkFXfohwStmG0OCkrv1yZ+g0hM6oDWQPl35BRBXUZ9k4Cnw71qTME1KYKKSIiHTtKZ8+Xu0022VpQTfdBrUNBExEjFVpkDwdlauWgA6yEACsxz0ztbk8QntFgXWRrsKBcwzlkAzTsLe33O5XGL401+sVIoZhPaIA4quyvazV18Tvlay2y3HqxOSiz1tLgRclG7cBsvzKT+1kzc6KgAWh/LMBty8MfQEsECUF1TX+8bNE8AiUV6wZb23Kz2W9FjSDyw8AaRvtys7luxYsg8sPAFkb2/cPAHcfnkKPt64eQK4BfMEB8Fh/SkkL/+z/19x0Q3o/hdPpCKXh9XHlbUfpf74327/1+nLHx+Pf12tXuT9dSLv/2L4XR3lf/9Mm6tV0po/WXt1/dKYX/aXr+vPLd/s1M+//Xe97V/U7794+ce1/ev3X79evq4Xf5n10H4un7/efzx85ZvDtfkru2alu/7e+6/3m5P6/tfLV/5x/IOVpz/Zrm/55vTnH5tDw9Lur8+/7eXv6UF97o9NX/o//9j0Lf9VX/2x6Vu++aPhv7i/9q9H9d/t188XF9uLi+WShMTNyZirkEqwkPzfE176b79xAg==\"]" + }, + "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/\"8e1fd-BN7CSUW04almJ8vAi37vI+0RdZM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:46:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7ade15ef-4440-4124-80b8-1bb6663a3c13" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 460, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:31.977Z", + "time": 722, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 722 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ae6539d0-309f-4d17-8842-bf30e3a5197e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:33.294Z", + "time": 160, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 160 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:34 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "54eab9e8-3d9d-4180-b845-a6a2a8ab54d6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:34.052Z", + "time": 149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 149 + } + }, + { + "_id": "cdaa200196a9b8b2f25fa73c574a0d64", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhBasicEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhBasicEntitlementGrant%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": "Tue, 05 May 2026 18:46:34 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "eb4c73a0-c270-42ec-b737-dc7eb93b5631" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:34.801Z", + "time": 152, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 152 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:35 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5d10ee4f-86ca-41ff-bc58-1fd19a4cd237" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:35.569Z", + "time": 147, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 147 + } + }, + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:46:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2fd4e85b-26bf-4153-8c53-3ea6d4992da7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:36.309Z", + "time": 147, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 147 + } + }, + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:46:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6bdfe1c4-56a9-46b0-ab60-7fe8077cf9fd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:37.061Z", + "time": 149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 149 + } + }, + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:46:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a07cc463-9037-4287-8c19-dea8f41d4885" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:37.818Z", + "time": 149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 149 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "66a37dd0-ca8e-44b1-8a60-7c118e24c50e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:38.667Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7968f9f1-06b4-4ced-b8d5-ea88569a4eda" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:39.415Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1554aaee-e9b2-45a8-b2c9-87330d875d0a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:40.164Z", + "time": 151, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 151 + } + }, + { + "_id": "5bcf0aea348fe61a6ad2d97b09e845e5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "_queryFilter", + "value": "(objectId sw \"workflow/jhNeCreateTest2\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FjhNeCreateTest2%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": "Tue, 05 May 2026 18:46:42 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ea8e35ce-1236-49e5-832d-455cd08bae52" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:42.138Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_id": "ab2ae2bd635ea6507f20573336dc967e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/pghGenerateRap\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FpghGenerateRap%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": "Tue, 05 May 2026 18:46:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5eef67b0-6958-4a83-a1f3-2de1407a454f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:43.224Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:45 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9ede4e3a-a67e-4b99-9346-47cf306166e4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:45.720Z", + "time": 148, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 148 + } + }, + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:46:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "66f5589c-c899-499c-9f0a-28b9fd8ed98b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:46.819Z", + "time": 149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 149 + } + }, + { + "_id": "618a9ca800e614aea18cfbc958f0d686", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1951, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhFlow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhFlow%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": "Tue, 05 May 2026 18:46:48 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bf11d9bc-f9cc-44e5-9f7d-76c83ad70294" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:47.926Z", + "time": 182, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 182 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "54d506f2-379f-42bf-8a69-7b915fab9273" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:49.101Z", + "time": 169, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 169 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:54 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b0f59d0d-8783-4597-87f8-c37a6065da41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:53.958Z", + "time": 148, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 148 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:46:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4c426dfd-09a6-4824-8054-324f59eab1d5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:55.091Z", + "time": 146, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 146 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/oauth2_393036114/recording.har new file mode 100644 index 000000000..de419a5e3 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_dp_all/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "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": "Tue, 05 May 2026 18:46:31 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:31.516Z", + "time": 135, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 135 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/openidm_3290118515/recording.har new file mode 100644 index 000000000..6c7403639 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_dp_all_3154051416/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_dp_all/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:46: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:31.697Z", + "time": 182, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 182 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:46: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-afd050c2-fd0f-4550-868a-9c77b965ec62" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:46:31.875Z", + "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-delete_3752417468/0_draft-only_a_3257702152/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/am_1076162899/recording.har new file mode 100644 index 000000000..d7c3e3ac6 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_draft-only_a/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:49.133Z", + "time": 159, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 159 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:41:49.449Z", + "time": 108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 108 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/environment_1072573434/recording.har new file mode 100644 index 000000000..fe7741981 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_draft-only_a/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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9ce3fcb8-d7f8-4911-b70f-c2a6831fc0da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:49.562Z", + "time": 101, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 101 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/iga_2664973160/recording.har new file mode 100644 index 000000000..b94508eb3 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/iga_2664973160/recording.har @@ -0,0 +1,1171 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_draft-only_a/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-39" + }, + { + "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": 41453, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 41453, + "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/\"7834b-6Emo7XVFJq2vw8SST/GhDHcjJns\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:50 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "091759ec-0ec2-419f-8eb7-a9cb1cb38316" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:49.772Z", + "time": 727, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 727 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:51 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e5e3990b-cbaa-493b-9fee-4418d4c5e046" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:51.173Z", + "time": 176, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 176 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:52 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "910a7025-5545-45ac-a1c9-47cbf1425f77" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:51.970Z", + "time": 159, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 159 + } + }, + { + "_id": "cdaa200196a9b8b2f25fa73c574a0d64", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhBasicEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhBasicEntitlementGrant%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": "Tue, 05 May 2026 18:41:52 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "26867bc4-b293-4a1d-aff6-0b90defc6a98" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:52.740Z", + "time": 162, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 162 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:53 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9386e912-5538-4aff-a473-dbfaeab654b5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:53.507Z", + "time": 147, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 147 + } + }, + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:41:54 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "520a26f6-afb9-4d53-a487-92ffe8c9af24" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:54.255Z", + "time": 146, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 146 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f061c3c3-3013-4959-bd0b-109d7ae98303" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:55.074Z", + "time": 173, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 173 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ae981214-134b-4755-840a-d184f49dbea9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:55.876Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e9b17f54-20b9-4f50-bbe9-9bc5cbec206d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:56.659Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/oauth2_393036114/recording.har new file mode 100644 index 000000000..99c0e8d16 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_draft-only_a/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "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": "Tue, 05 May 2026 18:41:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:49.313Z", + "time": 130, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 130 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/openidm_3290118515/recording.har new file mode 100644 index 000000000..66892bbde --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_draft-only_a_3257702152/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_draft-only_a/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:49 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:49.488Z", + "time": 174, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 174 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:49 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-80057b89-4678-4e69-8496-2dc88ae8252a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:49.670Z", + "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-delete_3752417468/0_pi_3573404075/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/am_1076162899/recording.har new file mode 100644 index 000000000..f5e97815b --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_pi/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:37.938Z", + "time": 152, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 152 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:38.258Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/environment_1072573434/recording.har new file mode 100644 index 000000000..30bf7ba28 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_pi/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-39" + }, + { + "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": "Tue, 05 May 2026 18:40:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c60cf10c-4fae-4138-a5b2-b832f7f32531" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:38.366Z", + "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-delete_3752417468/0_pi_3573404075/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/iga_2664973160/recording.har new file mode 100644 index 000000000..d75367d4e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/iga_2664973160/recording.har @@ -0,0 +1,142 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_pi/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:40:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "48a0a618-9a78-4353-999c-0d57c160edb0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:39.752Z", + "time": 253, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 253 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/oauth2_393036114/recording.har new file mode 100644 index 000000000..d1b930822 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_pi/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "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": "Tue, 05 May 2026 18:40:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:38.106Z", + "time": 139, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 139 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/openidm_3290118515/recording.har new file mode 100644 index 000000000..919d3e771 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_pi_3573404075/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_pi/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:38 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:40:38.300Z", + "time": 193, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 193 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:40:38 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-dd4df0d3-5337-4ef8-bae3-55c748a20c38" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:40:38.475Z", + "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-delete_3752417468/0_published-only_a_3171627627/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/am_1076162899/recording.har new file mode 100644 index 000000000..16678eaec --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_published-only_a/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:42:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:21.727Z", + "time": 160, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 160 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:42:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:42:22.081Z", + "time": 119, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 119 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/environment_1072573434/recording.har new file mode 100644 index 000000000..7228e5014 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_published-only_a/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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b42c130f-dee5-4332-a3dc-a1e0abbe0c2c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:22.206Z", + "time": 100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 100 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/iga_2664973160/recording.har new file mode 100644 index 000000000..d77a5b428 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/iga_2664973160/recording.har @@ -0,0 +1,1683 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_published-only_a/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-39" + }, + { + "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": 39645, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 39645, + "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/\"58a38-C/EcOCKaGgLmmLB4M8nPydLJ0mE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:42:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "81f089f9-076f-49b5-874b-58d0d60ac68b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:22.423Z", + "time": 769, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 769 + } + }, + { + "_id": "5bcf0aea348fe61a6ad2d97b09e845e5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "_queryFilter", + "value": "(objectId sw \"workflow/jhNeCreateTest2\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FjhNeCreateTest2%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": "Tue, 05 May 2026 18:42:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "700c1bc8-ed00-47e9-b8ea-95d928c05133" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:24.954Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_id": "ab2ae2bd635ea6507f20573336dc967e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/pghGenerateRap\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FpghGenerateRap%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": "Tue, 05 May 2026 18:42:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ac3405ef-95e1-4582-80f1-9bbe519b6cd1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:26.040Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2e939698-861f-4aca-b4c9-9b13ff45b9f1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:27.176Z", + "time": 162, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 162 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "88d1bc95-5c4e-4511-b25b-68e415d9c1a9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:28.382Z", + "time": 163, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 163 + } + }, + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:42:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0e70912e-35c6-4649-a8ac-a3419ca4c18d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:29.591Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_id": "618a9ca800e614aea18cfbc958f0d686", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1951, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhFlow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhFlow%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": "Tue, 05 May 2026 18:42:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c646f844-1957-4137-a54a-bbde269cc6f2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:30.823Z", + "time": 175, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 175 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "529fcf6b-727b-47ea-8f62-d5f2c43211ea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:32.066Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:42:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ff2ceab2-1cca-47a0-bfaa-156f40d1a1a3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:33.381Z", + "time": 178, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 178 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:34 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "47a506fd-7503-45cd-be93-ced0fcf76436" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:34.557Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:35 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "606d9207-7e54-46cb-ae17-a40d2f76dc6c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:35.734Z", + "time": 205, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 205 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f9908cd6-5a5e-4482-ab91-9af95382cde7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:36.943Z", + "time": 158, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 158 + } + }, + { + "_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-39" + }, + { + "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": "Tue, 05 May 2026 18:42:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "adabbdf1-4ab4-4444-b7ac-eeac5c687f8c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:38.125Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/oauth2_393036114/recording.har new file mode 100644 index 000000000..f74e1f3e7 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_published-only_a/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "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\":898}" + }, + "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": "Tue, 05 May 2026 18:42:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:21.900Z", + "time": 169, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 169 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/openidm_3290118515/recording.har new file mode 100644 index 000000000..68b93613f --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_published-only_a_3171627627/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_published-only_a/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:42: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:42:22.120Z", + "time": 196, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 196 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:42: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-543605dc-e07c-453c-86dc-b4cc9cf752c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:42:22.313Z", + "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-delete_3752417468/0_workflow-id_2661049213/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/am_1076162899/recording.har new file mode 100644 index 000000000..b0f592f7e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:13.492Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:41:13.827Z", + "time": 106, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 106 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/environment_1072573434/recording.har new file mode 100644 index 000000000..3b9ef5aed --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/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-39" + }, + { + "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": "Tue, 05 May 2026 18:41:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4709bb8f-b101-4ffe-952f-8fedace1a04f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:13.940Z", + "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-delete_3752417468/0_workflow-id_2661049213/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/iga_2664973160/recording.har new file mode 100644 index 000000000..bec48399e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/iga_2664973160/recording.har @@ -0,0 +1,142 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/0_workflow-id/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_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-39" + }, + { + "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": 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": "Tue, 05 May 2026 18:41:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "85fd4a4d-4fe8-4479-b2cc-43b89e2d8eef" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:14.956Z", + "time": 222, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 222 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/oauth2_393036114/recording.har new file mode 100644 index 000000000..3b300de54 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "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": "Tue, 05 May 2026 18:41:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:13.687Z", + "time": 133, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 133 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/openidm_3290118515/recording.har new file mode 100644 index 000000000..011410033 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-delete_3752417468/0_workflow-id_2661049213/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-delete/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:13 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:41:13.868Z", + "time": 177, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 177 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:41:14 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-4733d61c-9731-438f-ad4c-92fcd667c230" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:41:14.044Z", + "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_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..0066ae19f --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:58.575Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:58.891Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + } + ], + "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..ddb73b2f0 --- /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-39" + }, + { + "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": "Mon, 04 May 2026 22:39:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ea7cc80a-4c15-43b7-9ec4-2a43ef18ab54" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:59.007Z", + "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_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..9a4d77bbd --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "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": "Mon, 04 May 2026 22:39:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:58.750Z", + "time": 133, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 133 + } + } + ], + "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..bce6dcc49 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:39: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:58.932Z", + "time": 178, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 178 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:39: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-06c086ae-7589-4c7d-a2d7-5ddd9294e5d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:59.116Z", + "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-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..4721259c6 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 14:58:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T14:58:40.129Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 14:58:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:58:40.454Z", + "time": 108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 108 + } + } + ], + "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..392d56e9f --- /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-39" + }, + { + "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": "Tue, 05 May 2026 14:58:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3cbf0657-23ea-415e-a47b-c67b1156e512" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T14:58:40.568Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + } + ], + "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..667f9262c --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "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": "Tue, 05 May 2026 14:58:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T14:58:40.300Z", + "time": 147, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 147 + } + } + ], + "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..b6c74186a --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 14:58:40 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:58:40.495Z", + "time": 182, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 182 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 14:58:40 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-0dfce023-17d5-4dd5-8730-65b0225e7be2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:58:40.680Z", + "time": 95, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 95 + } + } + ], + "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..77a9dc4f4 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:04.148Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:04.479Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + } + ], + "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..d56bbce70 --- /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-39" + }, + { + "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": "Mon, 04 May 2026 22:39:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e1edd0ed-7157-4b42-9a3b-1dfdba71b706" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:04.588Z", + "time": 106, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 106 + } + } + ], + "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..b9c9a8a84 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-describe_422583090/0_workflow-id_2661049213/iga_2664973160/recording.har @@ -0,0 +1,1373 @@ +{ + "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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-ZwyhTetdwpBlYDy0abdq/iZR/3Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "242ea205-9e7f-43f4-86df-d6c6121be3c7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:04.801Z", + "time": 442, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 442 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"579c-uyJkhv7mnbIRTZcJHDfkHz1pVtI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dd3adc0f-11bc-4623-b1bb-ed4496f9723b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:05.275Z", + "time": 403, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 403 + } + }, + { + "_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-39" + }, + { + "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": 496, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 496, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.030898146Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.978420392Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}}]}" + }, + "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": "496" + }, + { + "name": "etag", + "value": "W/\"1f0-4wNxS/UKr74kM5jyy7ppS9f4fzY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4bd66569-66db-434b-8c04-c14654619ab2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:05.714Z", + "time": 172, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 172 + } + }, + { + "_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-39" + }, + { + "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": 1263, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1263, + "text": "[\"GygPAORvzfBP1513DWyoKpxSf6spfYfyWJ3YAmiK4/T7uf5vaTXNr69Vl7Qq5m+iDlQ6Tbx9QhUP2SWSaKRKQkfp6pjfLgz0Et1Qiw4ok9UI9v0Bv0gOC+wB9fuKYGHJocdSsxv3cQRmNyFYqFjq6yV/TuPylQOBmOwS7AG7yxws7G7kQGB3WQxBCIQclXCeRiW3r4eL3HDHud44EPieAsm2FHPphQG7AAJpGCtmsAcs2QPrsMzVDTMOan67i9xKzcN8B3tAXaTrjWDBwUlgmMc7wVYwX9MBvBXXMNTvcJ7kgHmpN6vYfcg65ofutfhlc6M5akq5cGBQmH7EVDFFbwZjBIKg/hD9k5Tb16H2YA9YM6bhW3wgpBU6G11smnCOdoiXLWFOQDAAd7IZPecSR6PwKLFGpG6OTaeLe8WopuNHSjh2TvnXOeI3jL/OFe+YeYSruFdLmcWSieaa1YiHcBKXkTAq4OP58TwJxMwZ7JWFVvACS70QNOUy0pcAznWo31/oxjJbwQwEpq2eKGOouQxGEAis2SaJtAuGCBYKkj2V+HArmB+yJIUOxtDGNJqqpDT1HBVNJnqenIohNUDgPuw4/yUf2n8ylopEPrlh1JO1H1Us9RqWCQgU+CIgyxIwL+xff378Akt9WTDD+ZFAqa5uBaweynYEgvRcm1byFJyh2ohElQ6e+qg6mhhTjeeYvBFA4JZxB8sJTFhddNWBPUCt9+qZqwgWBBMNZZoy9UJwq41l6ipZK2XLmu4dkHDFNotey0a+a8407aaItNfa90+GXPsm+cX/W0Ys/+GXbcjDfH+8rnnZ3SjdvnkZ8S83YbHhRPMyIq1DdwloHspnOMk9Q4iSK9a+p7ktlJiph0A2luRuOlzYQ5Scykmg+EYl14BmGK1EU2CJ4IxX9ObJahX3a5uPJ7mTisQgEpSkS3SgC+olVi4R39YYTgmDyzjXphtOsB/ReMGD6CSNynCqUjS0k0LQznSBtzy0jHdUeoK1X8aIecZSHqxLuSCLPap52IfMLUBlIYCDdu17uiLR0iXf6dxR0+tAQtc=\",\"etYwTZlMDVWyFdR411BkSUlkXvqQOny7Z5eU6ReCWd5azq+t5tU31pQLys0LIa2Ulpmr7oyWRrVNF6fHQ39Sdf9GyO5XJomgvIlIfeM5VUJw2gnfUZOCblrXYTS8u836qqTRnWC87SizIFnDOu9pSIp3FzxOFfPv+B3se8xNHwn8tRz+T5dtrmAleW5MHcY8AQ==\"]" + }, + "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/\"f29-Ti/GQPiuNO5HFboYc/ykzyfrMM4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f3458803-7b3b-40a9-8526-390c10e4fe6e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:05.715Z", + "time": 204, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 204 + } + }, + { + "_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-39" + }, + { + "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": 365, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 365, + "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\":{},\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:55.352333038Z\",\"createdDate\":\"2026-05-04T21:58:55.352331941Z\"}}" + }, + "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": "365" + }, + { + "name": "etag", + "value": "W/\"16d-HOu1EOS1w7ri0hoKEtVGJfXSzvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c6ca6914-9703-4361-89b3-b3bd03281f1b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:39:05.893Z", + "time": 136, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 136 + } + }, + { + "_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-39" + }, + { + "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": 339, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 339, + "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\":{},\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:00.455685295Z\",\"createdDate\":\"2026-05-04T21:59:00.455683732Z\"}}" + }, + "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": "339" + }, + { + "name": "etag", + "value": "W/\"153-jYzVpwWxAYcpXoINVle9wseBP3A\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b75c90b2-742b-4f8c-882c-66c5c228847a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:05.894Z", + "time": 134, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 134 + } + }, + { + "_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-39" + }, + { + "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": 719, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 719, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.060158915Z\",\"createdDate\":\"2026-05-04T21:59:01.060154113Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.978420392Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:02.997659345Z\",\"createdDate\":\"2026-05-04T21:59:02.997658111Z\"}}]}" + }, + "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": "719" + }, + { + "name": "etag", + "value": "W/\"2cf-HT2DSmeNqE8wzGyy+wWWMQtWTJU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bb247708-e908-4646-b3ff-468b5d6a31b4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:39:06.063Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "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": 942, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 942, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.030898146Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.942847422Z\",\"createdDate\":\"2026-05-04T21:58:56.942846391Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:57.945624619Z\",\"createdDate\":\"2026-05-04T21:58:57.945623532Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:58.955545728Z\",\"createdDate\":\"2026-05-04T21:58:58.95554458Z\"}}]}" + }, + "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": "942" + }, + { + "name": "etag", + "value": "W/\"3ae-UBpV0bQK3+wSCSrCRMJlJHeRQFc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c7992e99-97fc-443c-b273-d118034bf4e3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:06.064Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "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": 924, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 924, + "text": "[\"GwAJAMT/X0t/teXcNWZUoyzb+c/zMzxbfhFSwMz8/LVyn1H8895WWtlSWvSvraAKWtrVqKv0SD08wRM+stMhzrsCDdKZ/fETjIYC9SXVfVMWfUttUfaNLpoFcVGXbb1sNXfUrSExnsKnvqGBoZA4pr87H55663d/Aw9u/Ia/6bDhvxUk/v0ZqFOW+Bt4CzWXiOtHHihCnbD2w+Ad1M8T/g6cCOqEdNgwFIYYz09W4zJ/SK4fEmNQdBmWiYP7/+7erCkZ76BOMPEDP48msIbqyUaWMPHeJQ6OLFQKIysWgjrBpVT5QtZNEiZ+MdF0ltlwmPoxUEsJPW4B8ybRdnyaScWNFL0TvQ9zEAmmiSBnCdODDp251zjTTLx8JPdAOIBSgN1ynYZF7EcV91caqJYIc7i4v1IDvp+Ye/0ucG/2N4GhKZxusZEnCVex0hBwUXrE/dV5NUy8CtQngP4sUUST4RJEifXdRdLEqjUmVi4mkfeRwM88xoQskXiPGvtsuuwL2ZGhYP3O+L8x7zcmHK4oMexOBJKcsqjQlDhQFFeRz5GD6EPLpCXMCu/Ewjxg3IFjlWBmv5LoQC06gqbs/ZItYeLr0SZjCrmwt1yKltSi5twXgIi+6KIcC2r/K4dGLt69fiMKmQU8VFfR+yvxxNHDSiRWxhFNlDJIlvqYKKS4UGwoTkQYeAjkinvddDpwJ3vtNCrkE9zm0VnfncbLOZdloJRF4lCqKM+js4b/qcIoj4ouhsG/O3XeWyaH4hVQUAiY4gSPgM6EIDjou/+8/h9L5GLMbGzxtrSHeTe0NSiB6cXk/DtLjBoVQ0v7JfyFrNG2vdKN1koMnEhTpQFW8mgpfgmL2aIuZlUxKz8t5qpqVFVOqnL+AxJjTeERv6UslrNPi4WaL9S8nlRNs1rO2rL5gZwB\"]" + }, + "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/\"901-CyaqKOxKxOpSeSCqa+VTipfIVoA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6029e070-5999-4b52-a6b5-e77c3c209ef7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:06.223Z", + "time": 168, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 168 + } + }, + { + "_id": "5191df4e92cb2ffde8b3ed9d6c1b9c01", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow1\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"e9dcd66e-1388-4872-9790-66df2f44deef\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-vHI8zD9xXTlbXAhbTpad9L3LBSU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0eb7866c-5976-414f-ac84-cc8f8389a23e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:06.421Z", + "time": 161, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 161 + } + }, + { + "_id": "ec59c6b27014cab69d297b222e19c551", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/e9dcd66e-1388-4872-9790-66df2f44deef" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"GxQJAMT/puq0cm9GOZVmxpTWsflKSBA4gNL5+WPmvlL5/71VU9EsLfrXKqiCRtNdp0fq4Qme8JGdjdp66WUAQxi58cf/oBUEaKYWqm0pK6q+z+q+K7NZN8uztlVDOdS1IhrAkU7hUw/lSBCIFOLTl/Pvg3FfT552N37DU/xZ0lMBjl/9EILikUK8IvmRAonjydMnRMERFq80ygDxh4UbR2ch7v7wNFKUEH+IP0uCwF7kxVDow3YKYRwcqSp6NfHEJADyBr2QUTsL5xvCKX1M2pOCGKQJxKHDjo3krTQQ0U+kbAziD1bhxl1eN3HocKmDnhsiw/3sp0BUHCq9AdtSaD/OC664pwzOssH5UkWCuRJIicMdoMNgdhTOPB3WXqV9kTjgnxLs9g0ZdtbMynbWNdBaI8zpbGddDfD+qdpRx54G/W1oBqePLfkpwtXYUARClAG2s37aGTqseznEKAgnjr6cStxIrO04JlLE3bI1MQqrZ9nmfcTTB00hInFE+kaNWztddinNRBAw7kuvX4q+l9r/rMtIwY12JwxJl7IpUzKSJhq7xEUgz7basioOq8xZVsEHnDswpQmuSJbEL0x1Ehjku5hDh4PJRG0KtbC3r7FWjJ+WhS8AEXs2Rjn26P5XF5pYPT44ZBIquGvtkjvr7J2ih+dIwGPiE7UMkq2cRekjiwuNPUOJCCMvXlqTLpOswrXYDatapJNc1zE3bh6I86WUhjIwyCLh3U7qy4v+5/C/0x6Z7F9sPwwGiQeZO2dIWqT+lYhW0J8Q/YHtCGE4G3XzN1oIxciUY+ZjSyiV8bDoV7Q1EKG8lJQeEkdyqdix0m/il9JoZdsr7WQMx0hRKjlqgKNBVMEvoczLNsubLK/Py0I0M5G3K1XR34IjJRXRn99SZ1V+XpaiKEXZr8yqsuyLqitukRI=\"]" + }, + "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/\"915-OogZu/XeTsl03kPDveC4AHiogh4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9ec07136-9f7b-4825-ae2e-13653010aec1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:06.588Z", + "time": 174, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 174 + } + } + ], + "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..6900ac663 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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": "Mon, 04 May 2026 22:39:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:04.342Z", + "time": 132, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 132 + } + } + ], + "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..cc0fb91ee --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:04 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:04.530Z", + "time": 171, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 171 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:04 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:04.700Z", + "time": 96, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 96 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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": "Mon, 04 May 2026 22:39:05 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-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:39:05.716Z", + "time": 170, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 170 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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": "Mon, 04 May 2026 22:39:05 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-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:39:05.718Z", + "time": 169, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 169 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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": "Mon, 04 May 2026 22:39:05 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-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:05.719Z", + "time": 165, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 165 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "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\",\"displayName\":\"Frodo Test Email Template Four\",\"from\":\"\\\"From\\\" \",\"templateId\":\"frodoTestEmailTemplateFour\",\"defaultLocale\":\"en\",\"enabled\":true,\"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\",\"subject\":{\"en\":\"Subject\"},\"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\",\"description\":\"Frodo email template four\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:39:05 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-b52768cb-fdeb-4683-a7a6-091f0c758b16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 654, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:39:05.721Z", + "time": 164, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 164 + } + } + ], + "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..5bbcd044e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_Nxi_D_3064606086/iga_2664973160/recording.har @@ -0,0 +1,762 @@ +{ + "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-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1561, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/draft" + }, + "response": { + "bodySize": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-ZwyhTetdwpBlYDy0abdq/iZR/3Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 21:52:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "602bbe15-aa0f-446b-955a-a7716709a033" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T21:52:18.446Z", + "time": 623, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 623 + } + }, + { + "_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-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1565, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1/published" + }, + "response": { + "bodySize": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"579c-uyJkhv7mnbIRTZcJHDfkHz1pVtI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 21:52:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fe58bfb7-19fd-48cb-8f86-323b1c4dab81" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T21:52:19.079Z", + "time": 459, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 459 + } + }, + { + "_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-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1659, + "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": 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": "Mon, 04 May 2026 21:52:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a35eef20-5beb-4c51-841c-5365f0f45d53" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T21:52:19.551Z", + "time": 164, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 164 + } + }, + { + "_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-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1615, + "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": 953, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 953, + "text": "{\"result\":[{\"action\":{\"name\":\"phhBirthrightRolesRequiringApproval\",\"parameters\":{\"roleNames\":\"phh-role-other-risk\"},\"type\":\"orchestration\"},\"name\":\"phh-teacher-birthright-role-approval\",\"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\",\"mutationType\":\"update\",\"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\",\"id\":\"c87b0605-03f6-4372-9ba6-e0f43e0b3bcf\",\"_rev\":8,\"metadata\":{\"modifiedDate\":\"2026-03-05T20:17:11.75Z\",\"createdDate\":\"2025-12-19T23:33:09.589539476Z\"}}],\"searchAfterKey\":[\"c87b0605-03f6-4372-9ba6-e0f43e0b3bcf\"],\"totalCount\":1,\"resultCount\":1}" + }, + "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": "953" + }, + { + "name": "etag", + "value": "W/\"3b9-cVz7Ztkz436TwyApLHuKbzJhTVY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 21:52:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "67034ca5-7438-4afa-8016-43e5a18782e6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T21:52:19.553Z", + "time": 201, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 201 + } + }, + { + "_id": "5191df4e92cb2ffde8b3ed9d6c1b9c01", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1648, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"testworkflow1\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"e9dcd66e-1388-4872-9790-66df2f44deef\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-vHI8zD9xXTlbXAhbTpad9L3LBSU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 21:52:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7b3a0351-1042-4ca0-8f93-c729203e2b13" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T21:52:19.722Z", + "time": 163, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 163 + } + }, + { + "_id": "ec59c6b27014cab69d297b222e19c551", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1582, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/e9dcd66e-1388-4872-9790-66df2f44deef" + }, + "response": { + "bodySize": 936, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 936, + "text": "[\"GxUJAMT/puq0cm9GLrIqo1NaxeYrIUHgAErn54+Z+0rl//dWTUWztOhfq6AKGk13nR6phyd4wkd2NmrrpZcBDGHkxh//g1YQoFYtVVVRNp01TVY0dZ61dTvJqkp1eVcUiqgDRzqFTz2UPUEgUohPX86/d8Z9PXna3fgNT/FnRU9TcPzqhxAUjxTiFcmPTJE4njx9QuQcYflKvQwQf1i6vncW4u4PTz1FCfGH+LMiCOxFXgyFPmynEMbBkaqiVxNPTAIgr9NLGbWzcL4hnNLHoD0piE6aQBw67NhI3koDEf1AysYg/mAVbtzldROHDpc66IUhMtzPfgrEjEOlN2BbCe3HecEV95TBWdY5X6pIMFcCKXG4A3QYzI7CmafD2qu0LxIH/FOC3b4hw86aWdnOugZaC4Q5ne2sqwHeP1U76thTp78NzeD0sRU/RbgaS4pAiDLAdtZPO0OHdS+7GAXhxNGXU4kbibUdx0SKuFtWJkZh9SzbvI94+qAhRCSOSN+ocWunyy6lGQgCxn3p9UvR90r7n3UZKbjR7oQh6VI2ZUpG0kRjnbgI5NlWW1bFYZU5yyr4gHMHpjTBFcmS+IWpTgKDfBdz6HAwmKhNoRb29jXWivHTcuoLQMSejVGOPbr/1YUm5scHh0xCBXetdXJnnb1T9PAcCXhMfKKWQbKVsyh9ZHGhsWEoEWHkxUtr0mWSVbgWu2FVi3SS6zoWxi0Ccb6U0lAGBlkkvNtJfXnR/xz+d9ojk/2L7YfBIPEgC+cMSYvUvxLRCvoToj+wHSEMZ6Nu8UZLoRiZcsx8bAmlMh4W/Yq2BiKUl5LSQ+JILtXYvdCv4pfSaGXcK+1gDEdPUSo5boDjQVTDLyGf5FU2KbPJ9Hxai0khJu2obdpbcCSlIvrzW4psNjnPczHNRd6M2lmeN9NZPb1FSg==\"]" + }, + "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/\"916-KL8xYYIJ4R8zl2DCmnzo/fUgfp4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 21:52:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f443299c-34e2-4661-a6de-c2affa64cd00" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T21:52:19.891Z", + "time": 170, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 170 + } + } + ], + "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": "[\"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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: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": "[\"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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: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": "[\"GyooAOTe11lfv3NzRThRbFOaeGxLuD22kfQr2iJbg6PESJwkE3is//+1b6Eg1iiBUKGJtkBoV97azCr6+Yuo3Xtn5sssMjuISBK1BiFRunvre0iQSYUQKjqG+l+LqAgY7N2+gSMajQLfqWDKhY0m1uch8GJf08btCDlatSEafeTCwi+khfBYAI+8E/4O22ic7edpD+VPAevavcDaebiQBCc1tgJlgTi58y69r4ImkEeO8bAlFLib+OsE46yxFXLcsXn57eyHX6s6EMfvnnYoJhxDpG1A8d+xSvJyEH7TO1XfqvB8Nh6U68mw7A8H/fGr95Z6H7hV4Tl/xSQF+aQriSNa2sebSNt8xcYWV0Zhm7rm6JpYOtHOfL34sDi/xVImUOztHkr2oSsqR2V/VPTVYIgtZ3Xkby8vr1f3i8c3oclk0NM0Gq2LAtuv5c18dro2V7EH5KjK6LyY5jAaxRHPdnYfFCjxjFHvobMmkM8kwil0Oo130KXVtE8b6+yvXix5+OMPIGKXcgxeQZ7Aa/rT+C//mhoNglJtzdLxlRPkaMJiv/UUgswPFn1DLUdbGRVQHFusgkhOwtHTE5VxyiQVgqkY9OO4r33/QMFb0uCkq7TtV460IxtZQ1okaXREQ8yiwIqWv6XbjjS2uYVK4V2Xhz/78MZYTZ6oMhzXk9+XLQ8o+hy1ioTiKKFK3trOHzfY8Q+P9bTTP+kNTkb5ySg/6eZ5niRJGt3yZnUTvbFVJ8G25Uj7rfH17n/EIxxAGUHMS8PreqjFfms8aV38Db4WvAfHK29bu+jfco8hLfOZ5/3hVE31eEzU+0i7ILdE74JHI+QTwjqLQ2D0DeHzGO0s3S5mm7puv3J04+uiwG0JXUbvDAXWrqrIp8auXUcW8kkkJjNppd0pf+TI9WAOhwe5a1pRvFfeqKKm0ElmxKRto5ca5gkXTyuKHWY0o/uya2XqxtM1qeAszME2dT3LK3UfGdAsx+UMamNpGWmTlZgLCR5J2ugPcJQWACDL4JqU7lpmcsUTlXG+LP9BVsUTzOEqXRisN6meHqTDTKWyc+SdpGxJGf2UkDE49VIPqzmw94tbxuHYcji2yUzaVtoDjoyGDiWFMYVgSh+IZiQtYOF9zzdFaWOrsi/wYuIjGA0O1+WP+V1L2iyDc08qUh0fCNFBs9UqEqw=\",\"jVU1K8YD2MpuS8j7whyOwEJUsQlMAEMHoxkHRjeKCWCOcoRm0Mp6f7OGzi+Vc1WWzeCaYvuN21E3Xl951Zlv0wTySWTr9IP5f6NWxVM6I2ZGfqqtOtROaZhne1AAAIl9zZillthvnDIt3WbjbEoTyznwcVp2dqEipXbz7ZSbQlY/0Vz7YybVaBPPlf6wJQo4tmQgr8ztYcvalx4+IZE2rpXM8/y/IX+4VF5tgnQqvms6szzsjduRxKzFuTefNBpb3QXy1ZItsi/51OiyJKStALbmboamjjYGiELaF7fTkzaB/FLDKbAMOlwvMA7scnVzy7gSFPF6e4miVLQFso2SvcAdyXuYA6VPaqcW+5IgaWIGhEg05cPN6kt6hs6TO+R9eizfuETsvDFwLcwT3viPP4C8TwunD/D6Xz8F7pNAAKVfklcunUWM9iQSW4EjWD+Q9xu2XGslIm2VNjCNthVI6qWFoFpUiKxoipC/3zoL5+rXnQPbyHqMcZb5yf2zDJbr4kAAIH1YvQlwBKQppGFnjrTlePnc7W0fHwkCJoN2IphIG6fayNOlrYE56AIr0sJbLgx9kqMvv3nYAMzBsY98DRI9+ewSQYBEX6osFXtXQI3BTA59Z1VRE5yqBDjNlPjoOJ8+NGVJIaybuj7wWmAv4qUFUFGXOP/tvmT5Fmi/G5Yl9wSxaRVAqYO8ii0l9ILWDNu7kUTqJQrhCOYxbe7c2+fCs2E32MB10YIzieKhtN5WZif5DWBAIBDhkw5UOH3gJY58GwAUhEooBVcmBFmhXoPxCkSEFg7KnoiPaMC1Cak9KsSY+GiC4bOU2IYPlmVwQxGGXYrhNAW2MxTguuNgM2WYQSAEkYLWdVdtxhdeGgHPAHNg1rFBbLQj0mxGHsZ+TFIimBnmEH1DWGmXqQ6UvZU1134Z78CU1d32BdbBjmQCmCgQNkVRM/K7ASCTujouuP1uwHrvujWUL2eNYMM+CzqVmMywDWv0YIM5BFJ+Hbx5kNOvJqzBQkoE3fQiG9APNy5KKUaCChDcppBmtZtW0x4GhdMCM8wwIbzHdPmlZgKYJmtIMw7rucBbhrUzdW6iD6F08rmVajrMB4qmuZ7cQH4eYOh/LJw/UvmsmpU4mvpzf68ivajDmSqKIp9Mx8NJOUGtbVpBtl9CLBVejwnPZjtiySPJOFt2FUZEfrhqs1WmsvOs/dRu+6BMZPZny3B7dgAAs4YRSBmZcJRHwtF9LfVpzgv4MKjvOkRh1cRDvAhpR8t4uzQetvjexMLGGXftx+DnT5iju/hiBhI2CAANS30cIxkJanKBvPmH1oqI1RNKFDPjpd8j3ookKnakgYMpb7UGhZnVtdSiZYToZ4Qm67y+ar2U5UUl0e4Afu/smsJWE5c+w33rMTitYPYUGBQkTC+D0hmOINFoEFzwn7BSvnLIe9QlLi/ART2xoidH7ReVcxE3odkIBkHDE4VJ82vjlgqF+M+GqkZ3e51z19QarIuwrMy1ALVxPw7nzOHDmGoBHKrWh2WMfM4diEogXxPTkHMncRDvbZKZtL14ZyHbkZj9ZkvkKYQyJyQC91Ve6lyE4NaVyMUYOp1yyOtL5A46JBzTy2tCdX/oEmDEvIn2fHxM4k7+uyeTvD8YTqivxuMb\",\"TUVK4EitvlDTq6ZwvC1Qj1YRHGHWSrQVOWhgwjPhiPpJnIdceEzVjb05Oy7uKIi02KBYSID+yaqJ7oxxFnQzlKBt0rAkMVYTNQombgEANVKIEsKbBC4ayEr8M3gDCa9jbCXOfs5mHGL4yRxQq98pHzgDmGVPHSOixywHNq2WiQ7Vh8HUfIoE87c/itvAKwKcNMMv8oYeWGEega5hGAgmNPAd+baJDmxITyAysBYlLwN/B9hovBOOEV6GF7vF3y6Gz3UkKI9l7wB7HVSSs4PfCM7NbIcZ/1IBFlYvZcxjpKF636AmGPmowmJpgpBS5kUZ3s/+rBjRaDgY9SZFdyJ/4z3gI926W9m0eplmvoTvRKtv+3KcgqtmiAbQzRKirmZzQC2pn6OIjxMnkP+bu2jvPDhffb78tLhdiOfYegrNhi4Wp7OTgLUa2JcZyKwW2zUIxPUCNKH84jStRgDLmsq/LIimlXPE1Ptz3KPo9jgeUHS7Ocfdn/KaDUBtVEOH07CIvrHVOfA0/MhMJv3ntOn4AcZnnoBjY86dXZtqPYpAE8Zl/7xGCQXn5mogfxnI1zUx1gjhNTbA/BKivwrHV7g1G7rZKosCtTp0QoKrTmCS2PFkMqI63VDqZBGZMgiegAKxbe/MuDd82LXhtOWKXyuOqtF+OBydzmSY5t3hqDdMpscQ+bbtqLsKvfxRj/PQbUU/p413u903vS4T3vad5ve9DfoRxmwwv7pBX9kTk2naCJ0DlTOT96fi6G04aPjFhVGidr1xi6mhJuxUqInJXex36d0Wfc6pvjSbgjyKriMKbHrhpgqu2W1DPh4yCPJFzdp9moACz0JqZo0cN03UnOnWqg7UAg==\"]" + }, + "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..83c233d36 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:24.979Z", + "time": 152, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 152 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:25.295Z", + "time": 113, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 113 + } + } + ], + "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..e9186cfa1 --- /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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dc04489c-0ac0-4683-be3d-b00d25488844" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:25.413Z", + "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-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..cc8eaa888 --- /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,10297 @@ +{ + "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-39" + }, + { + "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": 44931, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 44931, + "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/\"a02b8-tvXTnFGTBHXo/comdlDpPstybx8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5c752de0-e35c-4489-a98f-63ca2c48a8ea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 460, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:25.617Z", + "time": 2064, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2064 + } + }, + { + "_id": "64964acb2055c48e7b60c4d7d4ca1e60", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/basicEntitlementGrantCopy/draft" + }, + "response": { + "bodySize": 5233, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5233, + "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/\"481c-CJF49oOutk1mHVIwCcDUGzy3Pl4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4d5add65-d153-4d69-aba9-b0966a982e3d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:27.729Z", + "time": 537, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 537 + } + }, + { + "_id": "8fd718f10dbaf3f8e6a985f581ffb0b5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh/draft" + }, + "response": { + "bodySize": 944, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 944, + "text": "[\"G8YFAMSvvWpfvzvvR/IEt0au1MIVYq0VXBYdIF88Gub/Zq5xognOjXVj0aL+2V7Wt/Cw7B+vRbeRetHZZvsUQUQvZ57OtZ/aAju4Chqpxt/gz5HDi2soiD0yNB62rKU+vXgGhUKFk73hYVLtEzfJeQHTuWFoZHjfE50XJzUUcpKLn5pf39pDZIU/gU/QS4WYuInQPzu9KIz4P9m472/sej6aWV6PqpV+kd5xOLoYnRd6eM2bvQINUpagCJt0B+Gb9DFxA9oQJHEJGim0DAXfpo1XpVh5Yai4B1rawyH/UuhVLzRCe1igCjSGw0T7Dc5jSvJJxKVQKn6K2lyzeDAtepFJ4x7Oga5tpJIRj1AT3MkduOZIyRsZDsmLT5ClNnIYED3fUvSKnGB03LuGrJxpCYi+kz1QFvnGpTE2fIBs3eFMR39imjhJHWzh/+dtI0YOvq45DJxsfWl8LNM+6p1hKIPepZGTDXXpILpNxQfuDGpOX2xw9urAsWSm7S08r+j2g7WDmlNZuKrgK8e9a+4bwrwxUY0YSeFMnREiInkBb692dJt+4ECyOg5y7geUhavt8ItYS1Y2POznlTgs6EKR+BUVTx9/KhR1WVGXe5cAfg50G0wdNC0Y4Weib1x0mzoqCH8oNL34+PbNIKbgpHbbcykJ6lEWse1fy+H8zgZ7jLf0x5CdhaaibSqbuMja9cXS6ndvP34qFAVLDSlcsHdpJBspqpCjknvd3GIsSB96oc3QZks51GoyoAviQfwULXbByIjARKg0cDNsoNyO6F0i518Kf1Rgz+aNrzhCd6iy4HrjK4ae1hqo9xVuoMcThTP0eDxSCBzzOC/Pdzq9hOeswFIhMDTqshfr2YE3n5HTwwaF1j30snU1ZCdQpu7kWdPFtnU8GYzG88VknnM2+Zc2QqMKdpugcGyTvTowdAotZw==\"]" + }, + "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/\"5c7-MimSaNxupWzm516YF8D/mGWnVuM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e06dafe0-8b55-410f-841e-847ca5df5305" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.730Z", + "time": 619, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 619 + } + }, + { + "_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-39" + }, + { + "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": 5357, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5357, + "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/\"57d0-q0EiV9t07Zhb2VQ+jxISAABSGG0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b5737947-cb07-4c64-a21e-455f4f76b9fe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.731Z", + "time": 951, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 951 + } + }, + { + "_id": "b0d509e0f28bc13a174042b72a0d145b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow/draft" + }, + "response": { + "bodySize": 1955, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1955, + "text": "[\"G04SAOQyXfX6dvVH9ozsTBIbEncbIsNlbxBWw4ogeyWZg3LpaK31RxKRGEwiIRMJbQUVm1n2ELck2v8j4qFRukvWFJ9GiKTIY7jqcpRIyJX7f29G1AoF9j9/vhyc785/dfa4O3X/I0cjz7QZr1fY0I9Q/DL37dJ73ZkQf+sJbGG7i3a6M9rskePFk7tsbo6+kydHHL9buqCYcXSeeofiv1E6+NcMvumLPG2kOyazut3NJ201qauZlG7PoWfARrojf0SkDeRN6sSIhq7+wVPPF5xlQjMKM5xOHLvBtx2H3J8/rz/9uUIxW6C40Hoi2kPPabKdFvMZyWmJgdNa8nr1dvVyc3eTdjKv8sV23tazHMNXeUM+dKo3GswNOcrWd1ZNZGTBzp5+M5UNjmw23ZZFW86rRNWLIql3apHMq7JM5ot5W8yKdpYXc+RoV3EOxaiXmxAKbwfiaOlArW/JJ53TewPBL5de/8bPdULvNITwlSNdyHjSBJeCtBrRaNNRoKULrnd5Tn8UKQzcpDDc1lD83Z7P2iiy7DqE447Mfk17Q1FxVNITihG1W117S+rg3XLYB9wIFBi76o186Vjvo+qurO+m+d00vyvyPI/jOPXdm4dPD95qs49iDIEjXXttJQsYcTUAIiNRc0O47Autrr22pEb8F3z9MOes/RCsLyBwv5SyW+Gby7qnvrAeQOCWgEYr5A2yLrkAejsQOlOC6gy9lDPD6RS+cgx5PVHg+e4cGG2KAk/dfk821WbXRY2QcdrsQfknaTBeNqYxF2kXWuwFj2E1jQ3TPfk/pdVyeyIXxUtghh//RsFjxNLpnnzEtGIkI7IMEi7jFgvSgbO1QYrUfEbRFR7DvyMhVJ1Tu5knYnovs/27TZOmpQxjhssY3EuxFQf2+2rDOIyBwxikdDiHXBo8hpHFoyMzAUyR0aQYB+a89INjAlgmiWccGG48E8AE9mOB8AF+DWRvn6WVZwePYQT23cTVMAFs6JX0BF4tfSnw+dPDhnHxa3GeE4iXGGzy3GpaFGWxo/kkl1dEVe6wwMk/e/Xw8ie1Rw==\",\"08QZR5DBlFus9piig12rrnFmOJ02iC6xKP0vqT1MTtDG/lZGPSe4o+6zLng5grc3GBsDAJBlsCapZMsN3fZArX+FMv+VT9uDxa8DAKB3EDFwS/HLpG13PncmVYN7LGpPAFCNMtx5Un/rafkcp3cQbZ4DHj8Gts8ltRmHPgFAZb28HQi5BuEbHfrAl5qZ+Up6itnUomGEDJRTHQAZ9QBGX/AZHhqz/k4ERNRZYXCt55e3ecCiv/kbhHug9Iy2PvGSqIAG81JXAc+HrceyMX5gxIVFDYINukGOAVTWs0HuAwrxmFrAJ2uUlg+Nf+8GuT1IRjM8sZS6pqTJbOGH51dtjVgYim1yCGwi/8LwyPccIqEoe1Hb9mswh+VqUECDjz4NWjyMbMKUCvzGv8FUS6mwmfXYqkHukNgMULzg2dotnVz3gMfgUely8F1CejaogWAHKCgAU5jAbQShQAvTcQcaExVCLtJ6fc7B0pqkm4GENvhbqwvoOEKbPeVw6EwaK5PCytrOQpRg3XKIGjWWPAglV5qCMK21wQTnMA6szYeJWDb8EJYqofzFbz4BSyHwz8BIaT92iuohErldPtZyrCIHrVtzvKKY5RxvKIo653iZB7xEI/iyUx1Sa7Q2igNvI2+hi8nk3qZZTebOJ+A46Jed2el9QVjptIUWMbwAZTHHZ3AlVjtalVSsvuflSRUXq3WEmpLXfC6vaqEaVRH4Cht9podeGhSo5C1yMRZfFKXOWbPrJmb6quEaoykkyoPaCBSI1WtPUs9rtgxyrTxhxaAowogY1vW8V1mHMC04DKCUGPGKYjqHt6XMZ3iuS68NiukZFHWe5sVkWk7Q8CEVnIVbJY77/NY3BPvdcHAoUFm588jxPPgOJ3s7UAA=\"]" + }, + "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/\"124f-yvz8Sm38rrNXGI7Cn7zNDsEcqOI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "52640c79-ffd9-46c9-8b8e-bb04239df023" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:27.733Z", + "time": 737, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 737 + } + }, + { + "_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-39" + }, + { + "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": 5993, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5993, + "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/\"47dd-NNhF1Dijvxufeo1VnwX4cJBO9+M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2c6a9489-43f1-4e7a-a22e-6b3f374db106" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.734Z", + "time": 922, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 922 + } + }, + { + "_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-39" + }, + { + "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/\"3aac-F6JuvpDYMzE/P1r8FkgXH9srqwY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f76e75fc-20df-4c0d-95c9-0fc15d7e9644" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.735Z", + "time": 941, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 941 + } + }, + { + "_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-39" + }, + { + "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-vdJGEpGjD1rRtYNEWm8SXPFuRPM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "55b723e6-0ddb-435e-9455-44ec1e21590c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.737Z", + "time": 942, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 942 + } + }, + { + "_id": "65e8e1d008224b991ad916110c8d9d43", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1850, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test/draft" + }, + "response": { + "bodySize": 800, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 800, + "text": "[\"G1wFAMTKdPX6bvULszpKmKzv4kvJXArCGkAEyaUZscHl+b8mmJ54BSWm3Tu7XkSCRPJsfPg3q7CJ5/NAmupcTDB6SDwcOLpu+IH6gQ7ewUCIBQrBXuhMfythhfcF2GT6kFZ8DNik4tduHluC2dkzk8K/RFcYrcBCLcP86hr47XvrZWP59GzqVmU52W0Xq2bWYvg36+VmY/kEBVGO39wCdRlmOgR6kFqobSdlYAMIBpIyQSFmaaIVsXcf3n18W20qIDsdJuTzuf+jkIjzhdZWCKaD5+qhTcSsyiMpk8LHv8owCNqqAxJvfTsYDyd6WE6Hcz2c6+FYa10UxUjiq/pDLcmH/aBAr0BXCsIgevo/Cv+HD2zeR0cM04GCex8dIvafDW6G+fVHYcxLko+BYbqeOsuaxPqzAs43FKT8+v3MxaYTTLDWuWmIWRqfvA0CA95S9CHO3BW1D/szvQptFigcLFcpxeRlOHYwsPcpeF7TmYTs9hwJ83lep9i28kGV85K8L+OVErmKaLy8uAoOCiE6wmXj5kAXS6WkMAIGkwEeYGZaKzzCzHTPc9ck1Fbqoh2uzMJKRFC5px8tzCmmc/bOA+3ZPv6zKcX7FW045Rjiwy7u5qsmhg9hgbKfg3dSLP7HjIFOzVnw5eslONHl8i7Z38Ww83uYjlrJdP2ntOu6i97ny5YSzLg/f3XjL1S3NsDgEoMcBlygDgJcdznZpwbdg1peLmejyWq1Wk2Wq/l0OZ1iXGc8HpXldLXSy+l0Uc5n874Pq5WSGQYu2Z1A4ZIZNCRl6gE=\"]" + }, + "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/\"55d-Q2sL5hgLw8jLHQIydY1NlKt3mkM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fff88a4e-4d72-4160-bc4d-c590caf06c93" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.738Z", + "time": 1017, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1017 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "text": "[\"G5dXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dvECbWhzZDuUVlIQKPDr/1djntjOXCCho3uOkyNPlMutTBBT2VJi+T/PAtvbLfvLKaNj8+OHuryeEquWdQwpPFs9QhRScx5OD6ucrBPjRCt7VZ97tuXte5MgY5kxmecZgGeh2cN705Gah/smeu2eg4NOS4/IAGrS26hU0vvidx1PyaM2ItUOlh66jYAYvTEID3NzfP2y/rAHabUAF7dC1qut61B7M67wVyFLO4jJKYaQRLuRh/W59uz/3f1am414Zfb2cNIyzSJaNyKMYxke4zY9G5mqv9RUocOGNdVC9gnLrl5NF59LrzdsBKRyv7DahgmA+r/UKW6WRiLJi1RRLnoEBedcRLkcePn+Pll+JaUnsseTgYWFHeWes9IG0xvbc17phrqzWhBBy5nb/c6OQv8hOBi5reUD/hVvFmw7ddPZmgcYWN0/ffiPJXwuv6fKAfjpRcjLvwrTEF/IXeSoG2sp+yWGYaaIOPDi21W5cCwyWmMkFE/JHMjuiZPJ2vZ9Q8jpS8jqCwrIfIT+zcRqEEKJkRWo4StaVy2BwaIMaoptFS3xZrkxzWtuLRvszfFwqSWNCnXNkV5EU2hJCSHWaWJGqIqYvFYv/o/DnJebOqYO+wQ4Bkl9HWPeHXVCKoTHx2zE+vqn1OJvOaj2fB7We1rp6GfBQUMbcW6n1bDqDkQKeUfv2x0Br06P2Haqd8aotn8OECu6skWaPzq97rro99qeOe4xgpJApR5esoXqlJVqTQtuOLigtrlAlFCT32HEEcUo6RZan+o9pMmfhPE7mWTjPwnkUhuFsNlt6s9ltd94qfZjOYBwpoBO8A9IpoKP+mbH0jrBI+CcpkNv+CQlbFqeiLBdZmaWLpE3SRRNhsmhL2UQtT6RoMwSFi3jwdKSALydl8836qguqOs8kWhZRhtFNoT8aMLEuCJXOeh0KgXbJPlnfgjl4d2JBoxtHCtj/9a3pMGgwK9qCRQtetGyRxJIvSibbRZE0jciyJM4HG2QhGkju0wYj8Kw+Xk0W4NTp9LYYqL3y3ZGfGGU99eT338k=\",\"TMCNL4O/STgj/8zPKm6YSVW9L/nsQvMVHc7ckh0HrcEOvVf64FiAg69BHXggTN8b7QJhdKsOgTrwpx0vhZ+yfzZqoKSGt+t9DXxA8zO3RLk/S/4ieug6NmU0qiW1NWdrOtxWk5ja7Gf4CH0ciddeu5UiMZdKskliT76TUy2ZFoPX778XTNpyVejwTVYs4bCxFEu1Sa3pfQyfGB5pvp6YNBMeKR5wiYyLrbsmM5HVQG6mPI7jyCs3GalQoc60q3zH3C1HfVMxegMNdUrAqNTd5w93mw8fhBT3QHrLPV74dVEmjWCSpS1rkssfsVbrT9+vuT/O/XGA2Afx4NN48Ec8ZEF2d4hP1nT0YTxwAqDEJI2FRC1MEDTSGaJoq5oymDcj9zjSRxs0R+W9yxfeKdkMw4RUIRLJiAGnjjhAVevWAoJAET0SJ+cEGrqBpYvUWiNnkr/+wjtxQPjQMqHdGRFU2MViDmebZ6ItszAVmKrr1CCpfMtVN1g0FJkq76G7ZRBdt0OMQSk7MlSwZSBRgN1BBZ05CDi96NZMa4BT1F4jcmAXZqlh9gbq10YRqIxpmwX1eoMijIvqdNS/SFSUvG7dW12GKLnze5GUrE2RF3nGskqE9wBx0LjM7y8mAAvORj5azJ2GrUPUvTxGKIQwVTxqIXK7USpvlRZTZ9cSKC4ZNw9n2grdtVOkaQZ1EJvfFLh7XsRhVrSpzKNIFAXVLpjXGtYNaCPREW6R7JAXP0749Z7NM5Kb+40jxjKajZFYSa6QdOagxLLW381AxOH8GMsgFlEsbm5WH/9/CJa13iGSo/cnVwVBw8Wz8/yAy9bYA1ojnp91mAOSRrhASdGZQQYd9+h8YA2KWSSRILDYRIKLZSW0EHxHM1g8dLQNkNZY0huL5Ag0JueWtc452h0wyHv9Eaf0oUMibeEHys5nQs/wSxd/xFrnfxSC+nGxbUgSpQkn3l4Xe9rtjjSdEc9JwXbAeqhq7e1V94058h9n2/zPZ2Nu2TAkoKQkRppJ1U3HWgMcmaKczhH62XhA7owmf5HJF2S/Y5QVWVtrLLHIpdKHrKyaXJQ/EiWJJMDSSZ0H/Ui1Z6sg3rQv4hrVm2Qc4QU0zClD1koe1h/Xq83N/jYteug6g9V8u/nwYft1odNYf7vfPNzsN9tPvRdEzcR7i94zRkau3M9yPwvAfMCGjDD5wXkR1B9ssCnhRF3O09TA5Uc2tO86cylR4SoCRZxi8fEmxnq1PqGspYxcOkijGS90GsR38p7TU5FWjHZGsZ8iFjfQ/50ilgvbfb69Xe92NKzphSvx44Jq8lZEWSl4go2rRw1zd7P5sF4NkzcFjkWOnvwRiTf0rvta1+DNv9m9eC6F6Wt4AyMFISLNW4j8C5G5zSW+uSRrLo1MY4c98lc4YtcZqOBgjGyuCBSOCio4mo7DSGEbp5xvSt52r0nvzGClGYXKU5F8R/uVK0kG4nAB/dc5KWaht9uP9x/WbBfBD62VZQxZzEVbFtGwYlt0Q4+r7g==\",\"l8sponcGO4htJoqgqugNmB2KO2EZgjbnYaVMa+uG9Z8mLnkeyYQ3BcpBGzz+TanTyUkBGSUJMxQ4L4hWYocbtm+XsdaHqDoyyGRPRZ9PniTy7OP2U3DzF1RRRG1c5inGSXjyx8qH4TFk5HOkUYHqiPZ8GUvuUW6SSztDdJTag66f/9ryWKYlY2EUxdEgC0AhEH5kGSYM8gshhcSCBBJlIUPOp61RKnuIRRcxA6K9eC4aljAhctnmohQxCErAqFVoSc/Sloe1w9oiQpKkEKEAiL3S8S8biBZ10WyLMMvSqGiSjBeRrNhFiw71ZFYsqhCodFfCLiB1WblvPFlZBnRB73rpzgSSrzMyEejpH+sqPhmJiN/U8lOutvkKL1AVcUbhClUaUnoFs4hVscy1lsrFiESzbZ2d2W6mjT4NHslbTz8N5VbWnE686da6Wi3lVtihxwmTW0vl5+39P3NGi/JuHrmzi4lAnnxoZW809E11hFIUPfFkZs9t09wIt4prDxU45wxgm8Bdo91I4am1zOSg+vmIj6Hx9eLEEXseAvv+4fS54TiWs9v6om0Yh+dsSYzmEau4zWbnufWl23UjjN62Wj4/UcIW8zySpXyGp45fn7i15nKZROnW3I1sUh+xr6VCYx42JTPHWuCLqpv6uhspDOrWZI0kXsvuzypxL6IkW7KyLEtWlFlSJKzoKpcXpcssitOQhWmUp3kRYQUbCrNnGmyFyChmsOgpVWonu4N71ePuxDVUIPl16mYwB2MFSfVHHNicWMRxuRkKj22PZrAX8GRly8QkgRiMbr3R/niTE+HAhM9GbXoeaMWjhwrkEvDGR0rBHw3lDb1+l9RJR+o9jms/EWtXAUsXPPVIssszNSPivvAszrzkTIG5NOI998cxkkEj5sEnrZk3PXTohgea+ior6linOHGeuEbqB2+9lgQgsaD56JMwjZL5vCTeO9BDZEGL4qd5qKr9ZoAVmxRhnSQ6j4h9PFsjJ/9SLojPiDU4w9hdTuRxgVd1Ul4b2FXB/5LjwQKmYfYsKZbFSuIii8KYjRYbwvMOsKk1Ehw1z8uYpMaDTCwWVA1N7+7T0Ddo6TVeyKoRSNsLSLz3cOPotYB5kahE+bQjGOm2x1XAgGYdpqZ1RxvtXA0OLUhkKmk5pNlA49/Bmg5BqlfAgThjdKfWT53AS5FPiFY6j6/NuPC2Qqb7xg+keI4HBLyJwD3JWWIZXfkg4SMt9Y6o6DR8IqrH5spxS52C7NsLKDpYmZ2xZJn8k8VxURRRwbKLBlXjvB7+p+IeqwvxDLKXF1SUJR31TPJRYhpkTxqo72BZsVkUxyXcJv3CcdEc7605wXfORLxlSqxGzEN0E6H11wSsHGRkdkhyx1HPXeEqE2yxid4X1gegCYbpVtVxhVVSifOiCMieUPrjtHvunq/M0XN/nOd+cFCBtLz1QKEfPDA6ezvgCA==\"]" + }, + "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/\"5798-ZwyhTetdwpBlYDy0abdq/iZR/3Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1fb12361-3c83-42dd-82d2-e8add2823ffd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.741Z", + "time": 1015, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1015 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-KwKIcv4TyO6uxp0gSMRgw6Avd7Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3529225c-f0c4-4b0e-a1c5-0794ceb31aac" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.743Z", + "time": 1012, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1012 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-yrlY7MRMub2tsy7vym0mJJ6gf4M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dd0cd448-7028-427a-bd63-f790a64aeef1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:27.745Z", + "time": 1013, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1013 + } + }, + { + "_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-39" + }, + { + "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": 4165, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4165, + "text": "[\"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\",\"+QovUBVxRuEKVRpSegWziFWxzLWWyg==\",\"xYhEs22dndlupo0+DR7JW08/DeVW1pxOvOnWulot5VbYoccJk1tL5eft/T9zRovybh65s4uJQJ58aGVvNPRNdYRSFD3xZGbPbdPcCLeKaw8VOOcMYJvAXaPdSOGptczkoPr5iI+h8fXixBF7HgL7/uH0ueE4lrPb+qJtGIfnbEmM5hGruM1m57n1pdt1I4zetlo+P1HCFvM8kqV8hqeOX5+4teZymUTp1tyNbFIfsa+lQmMeNiUzx1rgi6qb+robKQzq1mSNJF7L7s8qcS+iJFuysixLVpRZUiSs6CqXF6XLLIrTkIVplKd5EWEFGwqzZxpshcgoZrDoKVVqJ7uDe9Xj7sQ1VCD5depmMAdjBUn1RxzYnFjEcbkZCo9tj2awF/BkZcvEJIEYjG690f54kxPhwITPRm16HmjFo4cK5BLwxkdKwR8N5Q29fpfUSUfqPY5rPxFrVwFLFzz1SLLLMzUj4r7wLM685EyBuTTiPffHMZJBI+bBJ62ZNz106IYHmvoqK+pYpzhxnrhG6gdvvZYEILGg+eiTMI2S+bwk3jvQQ2RBi+Kneaiq/WaAFZsUYZ0kOo+IfTxbIyf/Ui6Iz4g1OMPYXU7kcYFXdVJeG9hVwf+S48ECpmH2LCmWxUriIovCmI0WG8LzDrCpNRIcNc/LmKTGg0wsFlQNTe/u09A3aOk1XsiqEUjbC0i893Dj6LWAeZGoRPm0IxjptsdVwIBmHaamdUcb7VwNDi1IZCppOaTZQOPfwZoOQapXwIE4Y3Sn1k+dwEuRT4hWOo+vzbjwtkKm+8YPpHiOBwS8icA9yVliGV35IOEjLfWOqOg0fCKqx+bKcUudguzbCyg6WJmdsWSZ/JPFcVEUUcGyiwZV47we/qfiHqsL8QyylxdUlCUd9UzyUWIaZE8aqO9gWbFZFMcl3Cb9wnHRHO+tOcF3zkS8ZUqsRsxDdBOh9dcErBxkZHZIcsdRz13hKhNssYneF9YHoAmG6VbVcYVVUonzogjInlD647R77p6vzNFzf5znfnBQgbS89UChHzwwOns74Ag=\"]" + }, + "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/\"5798-nITxp1jaTXAqrAVcmzTgFLoFGcU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6f0d5485-c57c-4c23-bff4-49b43e7663b4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:27.747Z", + "time": 1011, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1011 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-RqcUh0TNnksWEDlUL8iY/TIys04\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ac8b7c96-afca-422b-a987-89e0612e912f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.748Z", + "time": 930, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 930 + } + }, + { + "_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-39" + }, + { + "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": 4457, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4457, + "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-66X6ldMjC5jvDXElOVL44xPuim0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c24ceb80-aba7-465b-97f5-e0e7fa9340df" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.749Z", + "time": 1025, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1025 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6c76f8ae-4ad4-4ee8-8ab0-ba0e77cbcf5c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.750Z", + "time": 1100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1100 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "97bab1df-66cb-494e-80e2-6799cc981bbb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.751Z", + "time": 1001, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1001 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5057b182-d105-4439-a712-bffe8960a323" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.752Z", + "time": 914, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 914 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "51cee497-36e4-4f37-97bb-42a8afe379dd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.753Z", + "time": 804, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 804 + } + }, + { + "_id": "5a201622acb89e2d9efb424dfffbb173", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRoleCreate/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: BasicRoleCreate 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-UZ9zOGiTjz5q0XsUAByHfav5meg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "70043671-3d50-45ab-96c1-c869524fdf84" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.754Z", + "time": 1301, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1301 + } + }, + { + "_id": "490f68dc6b34dab1b2bf585fb44163cd", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRoleDelete/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: BasicRoleDelete 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-BEE3opJ6mO5pueU1ZRNF4VyH8fU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "140a6583-f6a8-4a9b-8596-71514934e163" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.755Z", + "time": 916, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 916 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e7724fc-4146-46d3-9d00-a72398d423d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.756Z", + "time": 1709, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1709 + } + }, + { + "_id": "56dcb95ae8f3511e6769113921e4a049", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRoleModify/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: BasicRoleModify 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-aOPDaiutdCOvpRnnctTRwAT082c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0f33b9fc-26de-4d37-b94d-7683471fd7ba" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.757Z", + "time": 913, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 913 + } + }, + { + "_id": "863173c2a6a9a6846f44428a05126db2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRolePublish/draft" + }, + "response": { + "bodySize": 62, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 62, + "text": "{\"message\":\"Workflow with id: BasicRolePublish 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": "62" + }, + { + "name": "etag", + "value": "W/\"3e-XH64tzTHhXYRTAtBNGR42c8ABLA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "001ac2b8-796e-4d8d-9810-bab052ef7c63" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.759Z", + "time": 1599, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1599 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c7188848-261f-4692-acb9-6eb2f6baaf15" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.765Z", + "time": 1746, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1746 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5fd795b5-8599-422f-b3c0-67e91b698119" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.766Z", + "time": 897, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 897 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b29513e3-69e1-4ed9-83ef-d61b5b5a86da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.768Z", + "time": 1966, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1966 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3533fa43-84b5-4cfb-9713-efdfa5adaa5f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.770Z", + "time": 994, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 994 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "718a5bdc-479b-4b9f-82cd-8bc165632880" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.771Z", + "time": 1844, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1844 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dfe6a7ea-5234-44aa-970d-e5727ad69707" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.773Z", + "time": 1086, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1086 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "47cc9457-8336-46ef-87b8-e40d11815058" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.774Z", + "time": 1837, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1837 + } + }, + { + "_id": "86564ca1eb9f7704f4fb15aa9bdb2f49", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/basicApplicationGrantCopy/draft" + }, + "response": { + "bodySize": 71, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 71, + "text": "{\"message\":\"Workflow with id: basicApplicationGrantCopy 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": "71" + }, + { + "name": "etag", + "value": "W/\"47-JSEeyxVGbvBlbz8eSu2TrKQQsa0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ed2edf2c-be84-4faa-88ec-d31eddec9245" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.775Z", + "time": 2229, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2229 + } + }, + { + "_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-39" + }, + { + "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": 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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "06993b37-bf79-410e-8464-b1c0fd126051" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.776Z", + "time": 1762, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1762 + } + }, + { + "_id": "ed5256f1229d0148eaf24ca6f114c1d9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/custom1BasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 74, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 74, + "text": "{\"message\":\"Workflow with id: custom1BasicEntitlementGrant 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": "74" + }, + { + "name": "etag", + "value": "W/\"4a-mLxUM/DFu+ls66sKtoyUUHdrFvE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d1cc0f10-d81a-4533-bf04-163dad501128" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.777Z", + "time": 1963, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1963 + } + }, + { + "_id": "ed0ea38803379310a6d4584db7bfa75d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1873, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/customBasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 73, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 73, + "text": "{\"message\":\"Workflow with id: customBasicEntitlementGrant 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": "73" + }, + { + "name": "etag", + "value": "W/\"49-dK/5fsZX1TCxj+/JJ3RvJPU98hA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6d7413fb-eeaf-4b90-87df-0a5b59266c12" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.778Z", + "time": 1586, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1586 + } + }, + { + "_id": "4c49d5c4a09188c9005425a23c8c8d80", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/extendGrantEndDate/draft" + }, + "response": { + "bodySize": 64, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 64, + "text": "{\"message\":\"Workflow with id: extendGrantEndDate 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": "64" + }, + { + "name": "etag", + "value": "W/\"40-HDAxvKVihlCgAYObahaymLlg0+w\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b0c4ddb4-db96-4c03-8c98-fcf429e6890b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.779Z", + "time": 1758, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1758 + } + }, + { + "_id": "9250807cd829b1a0069ac3c032862aa2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/jhNeCreateTest2/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: jhNeCreateTest2 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-SO0k6wjcjBrc5oWYP2/MlK/Rh7c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "afbe0516-8834-49cb-95c2-54753e033e84" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.780Z", + "time": 2023, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2023 + } + }, + { + "_id": "5f969ec2e28ef93a4c9455be8b49eeba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/pghGenerateRap/draft" + }, + "response": { + "bodySize": 60, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 60, + "text": "{\"message\":\"Workflow with id: pghGenerateRap 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-Ntl8D+lq8Gk9EUagplLEjCeFPiA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "041949bf-62e9-4f95-83c3-fa25cad6629f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.781Z", + "time": 1576, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1576 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8f2a42f6-d4e4-4ba3-9900-fd6f9f62e61a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.782Z", + "time": 1734, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1734 + } + }, + { + "_id": "5c8ff177efcd97230aff3d52070a9f26", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1853, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhFlow/draft" + }, + "response": { + "bodySize": 53, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 53, + "text": "{\"message\":\"Workflow with id: phhFlow 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": "53" + }, + { + "name": "etag", + "value": "W/\"35-laAqnxbsjMBzn7zuR6Ez62JGULE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "356ad4f0-a4e0-40d6-81b7-051377f07047" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.783Z", + "time": 1821, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1821 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dc6965b8-2d0c-4133-a845-e3427dcc2d99" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.784Z", + "time": 1270, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1270 + } + }, + { + "_id": "073d1a68bf7de54cbdd2cc1a52e6d9d3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1851, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test1/draft" + }, + "response": { + "bodySize": 51, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 51, + "text": "{\"message\":\"Workflow with id: test1 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": "51" + }, + { + "name": "etag", + "value": "W/\"33-AYf9yLWXwmbnj5ATraDdir6Go1Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "09d38db1-797c-4bdd-bf09-65ae3bb328d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.786Z", + "time": 1572, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1572 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fecf6c42-fea5-4a43-ba44-4c19a995b1b2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:27.787Z", + "time": 1725, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1725 + } + }, + { + "_id": "20a44b0494a4c23b0160b22c926dda7b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow9 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-a+i1JE0J6eWNoAhjr9T//SMn4mY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a9861c3e-b3d1-467f-83f8-ed51290e2060" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:27.789Z", + "time": 2146, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2146 + } + }, + { + "_id": "7b5422ae58eaec212f46b30a1011eb5a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1875, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/basicEntitlementGrantCopy/published" + }, + "response": { + "bodySize": 5233, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5233, + "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/\"4820-VnHTneOQ3jEoTW73jEObxgcjAtY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e3b3d75b-c074-40e2-835a-eeef41487ca2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.271Z", + "time": 1670, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1670 + } + }, + { + "_id": "fce414742059014929931a3b34bb0e17", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh/published" + }, + "response": { + "bodySize": 58, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 58, + "text": "{\"message\":\"Workflow with id: createUserJh 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-yACICTRV7BPCnXqo9rYflcfNwec\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7a06dfdc-2122-4316-8f45-3661c0d4e271" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.354Z", + "time": 1004, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1004 + } + }, + { + "_id": "23f6975c8f4679c70a59621660fb76ef", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow/published" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: phhCustomWorkflow 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-O81VUN99r87flpqNE/m/+84eo4Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fbd5f338-cb7a-4df1-9db8-84e97474c781" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:34:28.475Z", + "time": 496, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 496 + } + }, + { + "_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-39" + }, + { + "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": 3702, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3702, + "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/\"2839-JwVRzAaF+xge0kSrB829i85RW9s\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bb81815d-11a7-446c-8627-64e47a236024" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.562Z", + "time": 1484, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1484 + } + }, + { + "_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-39" + }, + { + "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": 5989, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5989, + "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-AihYLUzhAfnztkhlPlbJShUBrrQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0cc5b175-22d4-408a-a8dc-6d336b812b94" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.663Z", + "time": 1093, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1093 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "91162934-853d-4409-b2a8-9309c7296fab" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.669Z", + "time": 697, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 697 + } + }, + { + "_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-39" + }, + { + "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": 4485, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4485, + "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/\"3aba-jT59eZ3Q+eePol7Om3lYoCdMGPs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "14f2d43b-420e-4619-900d-069b8d7cae76" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.671Z", + "time": 1052, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1052 + } + }, + { + "_id": "df3abff197685069f72a6541bfe6b131", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRoleModify/published" + }, + "response": { + "bodySize": 2879, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2879, + "text": "[\"G5wiAOTydfZfv5v9EU6EcQfMcJ0rjVBed+ZGWGtOiZF4kkwZxvutfSpxJ/QZXRSmr0ZWuEkyYndKiElm9vMBkSuBZBKuusICSrB1Zu9U6fkuw+m820WLRAhJgLaTn/uGSmKJ74RT9dq09MNI1VyRoxYHCpT3VVjazzi0tf2Ko1dG3w/Oxr40rTlDYywcYp9G6T0IeFSiryJ0TWBNS8jRX4+EJW4D/hZOGa30HjlutTzaBr96I1pHHH9ZOmGZcXSejg7L/25o8yc5+EOfRLsV7mU4zupmktdpnqVjAtzb4wjYCvcCX2RSB/JZ1ytvqOniN56OcNmaFNfHUndty9F0vja43Gjx9+OX9dvtl+VPxBSiNbznKQ99+/i4Xv65uLIt4BuCPp0ozadiKsdjogTzOuf14uvi/fb0NYLqok6LXSqyHPsnKpf9MJKJz62vyFHU3liH5Q2VW1yOlpwDdoi3HXF8NLStsUQRvVylAQBOwt4TXSuYw90NPDDck/9TWCV2LblBMEsg77jS/Zf+VgAAFSpZYZnPdwj35AfMmpaWZ02WBTw6qwYjXYUlfEN2QN42qrAE5NU459XSM9X+dN6Ec2qvJxDosA9a84bObB/3/z5H/zSrdB8MAuw50om05zoAXncg7YVuf+NVo2pR2CvR0nb9o7fI7SKJPUc1MIVbx6LPGXxQWpLF/TKOTTafnK6vWKYcpfAkGNeq6QwfhKeBqnnND4P0Pr5Psvsiui+i+ziKoiAIQm++bJYbb5XeDwLse47katHiFoRrvIj3H5BE9KY2Z/XD/adC2aOqfUNy1Dmyo91kuovjZDLME5EOs1rUQxFlcpgXtZBRE2dJlGL/1HOky1FZIu39QZhiOE/PVHvkZK+7HJW9ZB2VFLAu8YXLUv9x3/eqZ1HPVTnXfe89JbGLp9mkian+uM7atAR/ilZJXvGn+vm2Gy985+D9b6p1O9OmtZDPCNXrZ0BvO0Id3UMaTZrV2trn+iQ8ncV1mE1onE3qLJlOM/1KlrYllri6p8XhebHE1uz3ZEOlGzNg605rpfcGEY2lg1q5CE50XjwsmFW60sp25UnYnEZ/kTAH7bpSSRbvpRqh2s7SmoQzGuagu7YN3uRe1NFkkp8Ce4OvTbC90t5edTEHfZrl7hnm8DI6LJeHUNpPM2BqL0ZegBvFH+FGDB5wfhAH9mmxZRxuPYdbbzx6qAYG2Vvz\",\"MxMQYqBdiMW20JqW0tu1JCmZSnkuEyh7XzTXLWFhrbFgScgSgmyvDGflf4OSgPMIeAAG+OWVMZYvd89o7Kx0X+k7qlkBAyIhdbgY3OG4kMLVV6MZAr0qPRpVnXhYY2aCQwxFu1xoWcbiCcnMhDsTuqKrtGpgcMc7pMOWP02DdV3rP5ablkp+mWmptICXbH7karVfHmCK7+BVYVC2Oe9fcoeV0ChaJTsVhOZzQCSnjAAzERNVtlBSGQXvBndzYKL26kQsiFsQqtgIbzua5eXJvTYAv8UP5nRN4IQTFXOuUgNvn1DJy3+sGFaxpzBqHcEs+3k9iKw5FQHIiStSy58G5GmZI98kKGpZr3L9LKUVjWdoMQbgv+ZP867Vr8xPWZGJHfAALFQbWO8gnqiGDhQBVCiphxBvaRx88tsGgwfK4qB2hwiBBFMP48lDrkI8azMurT2DGfZWO4FBVBtg3GyjAc2itZZsnA9zoyTNNzOiH+vH1pw3XV2Tc/b8ve7iosnyLE8aIZpcGsipu4s/lpa/UfZZjnZ5EU/jyWQsyXGoWeFduVkq5sOeq3VVWExBgP2OFTTrhX/FCEmnW2WayYnZkG4PSMaVlZT7YHYDEztgDjcmbr1YCeyJJ+/fkmQcmAkwQceaw7ElT4z/fxYH0p6V0BdyABizhuNKDgzSelYCa7VuIMl63F/g/47s9VFYcXAwhxuwX5b2OqwE1h2l8BQ9Kw7YIY/LzZZxYvM4zFAJE90V6h6FK3/d6zNWxUm64dCZtUvpPXxyTw26vOTT63knkT3AwXQtqBljkJVqEp2NMIebxCBWwmlvgGocOs3N4HUpVS59XQAmb5aFhR6Xhc0S4Xy/x5878wl8V9/EC3yWbYBh+7uqoSmgYAF/BTJbm2A6+CiurRGyBMn/wyDjnTIGGGf1/IRm90y1T0CuqJYONBQH0lo1g4zJWywUeJyUP8VRvyiMf+b0/4JqzmgbQRDM3HNPOBB2Egf2+MeWcb4xibPI+OQji9Osgw4x3m0o5lqjwkNCJpxJdILpX1HzKUoHAMAUyU9harDztJCMxszcSGBN174MK9o7M26olCzjURqY9+s/BZGR5JLsUgKz0TwSYkTGl4cyuiTWSBNKeYgtSeS0gwsydk157UrbwXgttEI2obLNBCemgzJk7qUcZND77EyvuwMw44wPADjmqK6eX43Zfo3nMxeexEzYwBqoBUzNcBBGXUj0gCVp5W6Ohz6k3qMqW2GqMO1623kDHSfZb0fKns75MO+MkUK28W3nDdwqxXE6BYabd6Uqe6SJNU3FiKQypJlZ+U7YWmzxxPGlqtlW/zSShqPo7qujn730ONLA5j6a4wXLccTximWcRRy3yNdCGZ1eYZHszjcDPbW1hEDzzMe6eBIV07SScQrDqcdip94b3aj9IEoYt2CE5Z+MGdJkg3l5W32fh8N80YeRqLx89jfYqgNtjkJjiVJcBy7A0UtIkpPO9H6wMTaAkBfP9iSKerlbPi3S08CirOfiO6+8yWg8jX+dOCvCKM6LJB/ZCx4XgsTleRxPmHB4slcI9y5KNx15MhVLCOB+RZpMYE0+ktYa92XxNC89JUyqZ8DyYeM8DYuiKPIim2ZxVn3rSOOAeUk+AAgtjxZY4uPeOaNEjofuwYodhWUjWkc9\"]" + }, + "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/\"229d-PeT9D2fjuDVCOsCnmnM4zLFhC1s\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dddefc2c-6e68-4c6f-adfd-836d6ce786aa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.673Z", + "time": 604, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 604 + } + }, + { + "_id": "77b92d1c968b6d88cf12b75285172065", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRoleDelete/published" + }, + "response": { + "bodySize": 2794, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2794, + "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/\"2172-TzfFfwK5AEIlQxI6IjHkOVCAnw8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e16f8d3-85aa-44ea-b558-e0e0f5b50779" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.674Z", + "time": 1332, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1332 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c9fdba06-32a8-4e91-8baf-d1ae9ec6650c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.681Z", + "time": 581, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 581 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"579c-6mjrxVbQxjuyp2G82zg4b02MZgg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "338f7b80-d045-4509-801e-cffda04b56ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.686Z", + "time": 593, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 593 + } + }, + { + "_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-39" + }, + { + "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": "[\"G4AdAORvr1pfv+/eFeQEq7nj83bvXk2ypZNJsHh2yMpIC8hlNFytlf7f2FTKxyguHxkf47p7JrC7T0g9s3uPOBck9cA2ACijBBCoKHmJUHEyj6Ha3W8Q4as9prvHHo1Gge3DwxUdP3pyLx2pQMjRqj1tPdHQ0nHYeXLD6kVdsLD7V3DiYvfXrw2msQnh3CK5gGsOxpvGGrtDjpdRvvnD5hvfqtoTxztHBxQ5Rx+o9Si+9zRiO6/+g/I/htNyOl8sNlNaLBSdhR89OWCwInxStdGKOEkGwzUAecHRRI+WTuF9oLZpdtaJs6HA4DpCjk0XqqahQt1YQkJPgMJ2dR1vOcraRIFn+JE314gC62a3I5cau20Sid/bh4dbai9i7A4+enISB0tpdckuAf5q6aMnZ9Wekp05kL1Se+Lgu+LDBtBLe20RoqCDnO/G0dacYAVVir/nt3BZbffv+e3AfqIHSzTjaRUUrOC/IPAgep/+7MidE4n7kjpAZ9eNIeKuI7aAQ8/ugH6B16YO5JiA+86Tu1J7An8Eib/1VJ0gSryPHL5LhDUk3rYvWEjwsKKlXbpbt0dN96pNOk8OVk/gnLSlFxospa0pgIEVFEtp98b25In5s8jzPM/hjz8Ar5P6npO8kaTu7hLeB2fsLjGDtFX6fVAuJBMOLGeDgYAXNpeXS2mjtEtvthYSrCtVio5V/NGTS5YMhDayD8rB0gFHeKUCwRLOWa9UILiQdHvVQRqav99fNxk5WFbfFrL6kbZ6eH+4Vp3rRmlYQS+tVqIEoBAKLeHSSjQ+DsQMclxpJXq7OcLb8l33ytRPGXtl6ie21iGvJYoBpsHW/W01nYiHnIlEIQcXkKyxRMFtjrRxqSphxyj4IRJ204xxsF1dc3loVcZWX0hOHC2vkHK9eXxAVg1YwXY7/dNKxRAlrTikX3SxcmmSGPdsKUPwDY14imAF7EZUJb+UozFzH/SWoWBlZUwoUT2EMEOAjMWVSEuEyL0R3DmiEEuH/a1hBSuJvGC6o/BJOaM2NfnkumsWJhKNjl1qZfN68xhN5BIY4yT3ZqeyHdQtUraiTG5ZPvutF+HR/tbxnoPEN+sPcaY4cuijt8sz+V0IVtCDDyp0XoDEvFdNIgeJgONKFCDxinCGHDjVPZPo3LR94aW015tHqkKqvDc7m7Rv86o=\",\"YDEOLEFSERJyrnEW4qmiqoETdfaHbY5WIodz7M0n4H7tXOMg5QthdgD5VBPwW0/p2ROvJ95z2CpTd44EBNcRRDtuC9EvwG6u339gHEi37vDAzSJarQJJjPwD75TeQBh2ws++O1L6OSLe07xXjJGn+kdeTeajfLGZV+NZfmj0jh6pCvAO698mxSORXJmY4CmITGtjA9ngXxSrpdSiYVURPC+TGc1QpmQZdORJuQWgPDgSBiGNai9W08k1V4sZDC6pmIgDe7P+wN7XPihnMzGegwlgmqwhzTgwb13KBLBsxoE5VTYTwAiOYjFFQeeiwo1yau8d3mamuIQJYADeJrzobZ23OazB0iYf25gWRVlsaT7J1QGacGDhpP/sKcDLB6p+mGYIdv+/7m9UoKM6D6dlUS0Wi+l0NlVotYFjjtK2g05ZtqtrheouDa34szIBBj7Kxq2trX4p8D9M+zyA91f1KwXxEwEAZBm8I6Vpi4Am/OJ27j7uyahtrH58AACzhXTBkn+VZr9vbCoGZ0CqCQCi8a3uOGk4t7R8yTFbSFBsYQVsf246sha2CAAi8wuuQ2RF4nsceZD9rfaDZlQ18gZ8x0pdNJd3pn3Nl3+UNsHsEQAgwHbx0+MgIbYgDRLhEjIlpUUNDvJUS8ALtRlLaf1gOZ+USNQQpm3fajCRmRK5AH2sR2JhX1To+UtxF3+J3H10Ec2HuKHNs0LCVKENI5rGqdGS1MSb/bwLDRCLdKy5t2KY02QzLeYzUtMSI28C4onmrdMWv61KYWLh2T2bVNtxOZ5tVKEx5/Nl9qSYI2H3MEyJaUVly9MNEv/vks4oDK1miuWPziUqFG2SoLpEoWJUjELi1vUtMOpESexh4LBBdHXby3GRyCtKh4fFaY8DjxAe10TwVR1UieQCvZ0OCwxYQawrVl1ohqgPB90R7PYK2ggJTBPQNEE6ADtLw5A2XicflBucZLwj5UWWKPF16WYYSqQYu+M6GRqbGxNSWA+FaJTTmYjn7ZZt4IAEO4gktUGYaDmJAytz2Bip75ciwcGQ/l0zmPEYYLS+Lq2YRi7k6AqSQZAXeXV2mNdQQt+M3ty8u/609vbuc1xTfrf+Z/3yw706WOsXb+lN+L/R3BzDnpGjqkLjpnVhOlrMyvxWnSeXTTdlUZXz0VCPF8VwvNWL4XxUlsP5Yl4Vs6Ka5cUcOU6GZ3kUvVyaEorgOuLoPaJIrJ7pnO8jHQ3M2UfSI1Xwx4jxliMdyAbU8InoBvQ4056EAg1k8/OP45HGyJF8pWqYHvS83o+FpkW5KadDWhQ0HI83s6Gq5sVwpqiopkpvFyoDnU2rQCh6NH59ah3xLciX11AhBQUes9JlMtP/KV0mk4tyfDHNL6b5RZHn+WAwjViAkeOWp+mx1RnFhPNrrXmkt3VOrXECHETKVR0IjKzpzAvpmafWuEdmAJ50ar8zEVFnmb2xmlybM9KLI22s1sh5R9vWY4yutku85fg/aCmorhpNFp1BVl/5Irh4hKU04PhgAccMCbCr4nhCUYzGc45nFMVslk4izqFdQGP12zWBRR0q27EVhgc+Bs7yx5adednYrdmhX7vGThf/0ioGBpHMvFo5yoTEbtYROk8OQwNz9c2vbLvDxPs/4gezp/etsihQq3PiBwiBfTflwrkmuD5acuhSiLjTWTFVj9Tdjb6amJP1R4HbXYkScdAk/dxThcEjEe1GHuDClxU1GDGbGUlCWU6Dgue5iMaixxOKSTFWut9kFHutmn49wosWBpnnr+oUDN5El4UtBS88dWQReUaRjxeU7LaYpdNvncyqq3OPuptxy9E4nY/uNo+9ESekDRS4cyeVNXLcd0E5+cF1FA==\",\"AQ==\"]" + }, + "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-fYeqpSthZkHBvv2qYWmwz8fZ2gQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2478eebd-ed63-41ea-8858-831e8795f976" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.688Z", + "time": 1052, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1052 + } + }, + { + "_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-39" + }, + { + "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": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d4-42PI2+aZ8dfOb3RilPr4LK45Zz4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "22ebb4d2-1557-495d-8139-2e2f0a49107e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.689Z", + "time": 1127, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1127 + } + }, + { + "_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-39" + }, + { + "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/\"26dd-fCcDpDCwiYAdgDOY7BtS76BOp2M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c99e294a-7cc4-4bc5-b3c3-3f17ccf1592f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.759Z", + "time": 518, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 518 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"579c-Bbe7Nh5ROr6FcEc1WzV0SaV2HFU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f52fa887-2ea4-4213-8da1-5e28cf5be15f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.761Z", + "time": 518, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 518 + } + }, + { + "_id": "64e7b956f2df9660f52f83214bdccb38", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/test/published" + }, + "response": { + "bodySize": 800, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 800, + "text": "[\"G2AFAMTKdPX6bvULszpKmKzv4kvJXArCGkAEyaUZscHl+b8mmJ54BSWm3Tu7XkSCROLebHz4hxU28XweSFOdiwlGD4mHA6Hrhh8gH+jgHQyEWKAQ7IXu9FkJK7xPwAbTh7TiY8AGFb9289gSzM6emRT+JbrCaAUWahnmV1fBb99bLxvLp2dTtyrLyW67WDWzGsO/WS83G8snKEjh+MstUI9hpkOgB6mF2npSOjaAYCApExRiliZqEXv34d3Ht9WmArLTYUI+n/s/Cok4X2hthWA6eK4e2kTMRXkkZVL4+VcZBk5bdUDirW8H4+FED8vpcK6Hcz0ca62LohhJfFV/qCX5sB8U6BXoSkEYRE//R2F9+MDmfXTEMB0ouPfRIWL/6eBmmF9/FPq8JPkYGKbrqbOsSaw/F8D5hoKUpd/PXGw6QQVrnZuGmKXxydsgMOAjpTzEmLui9mF/plehzQKFg+UqpZisDPsOBvY+Bc9rOpOQ3Z49YTHP6xTbVj6ocl6C92W8UiKXEfWXF1fBQSFER7hs3BzoYqmUFHrAYDLAA8xMa4VHmJnuee6ahNpKnbfDmVloiQgq9/SjiTn5dM7WeaA928d/NqV4v6MVp1xDfNjF03zVxPDBLVD2c7BOisb/GDHQqTELvnytBAe63N4l+7sYdn4P01Erma79lHZNd9n7fNlSghm3569u/IXq1gYYXGKQw4AL5EGA6y4n+9Wge1Cry+VsNFmtVqvJcjWfLqdTjOuMx6OynK5WejmdLsr5bN73bjVHMsNg8kaHg8Ils2hIytQD\"]" + }, + "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/\"561-M58LmJu4UZphyDpKzmnspQ0muEo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d846b90f-4c2a-4afb-ac84-9a4f6df5b05a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.763Z", + "time": 878, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 878 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"579c-uyJkhv7mnbIRTZcJHDfkHz1pVtI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "45e3740f-c53d-4cdd-b3f5-9d693274c90b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.767Z", + "time": 955, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 955 + } + }, + { + "_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-39" + }, + { + "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": 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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3593044e-d0a8-495f-b2be-8b4bd902c15a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.768Z", + "time": 774, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 774 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7a73b17e-b75c-48eb-a4c6-8ce7a05f94a4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.771Z", + "time": 973, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 973 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5tXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dHGlTi6OH8gpKQgUenf9q7HPbmUsOFDTvcVTk6XKb9SkHClsqTN+naWBd+2U/eWU0rH78cPfXE0LV8s4hhSeLZ6hCCs7jyUH18xUCfLSCd/WZd3vunhc5MoY5k1meMVgGuh2cNz25mal/sufuGSj4uOSwPIAOWlv1Chpf/M7jKXq0ZMTaodJD11EwgxcmogFu7u8ftl/WAO02oIJ26FrVdT1qD+Z13gpkKWdxGaUw0gAX8rB+t77dX/s/K9Nxr4y+X04axlkky0bkUQzjI9zmRyNTtdf6ChS48MY6qF5BufXLyaJz8fXm7YAU9ld2m1BBMJ/XeoWt0khEXrFiiiVnYEDedITLkcPn79HyKzEtCT2W7DwsbCjvjJU+kNbYnvtaV8yV1ZoQQs7cbn9uFPIX2cjAZS0P6L9wq3jToZvO3szQ2OLq6dtvJPlr5jVdHtBPJ0pOpl2YlvhC/iKnYqCt7Jcchpkm6sCDfVvtxrXAYI6ZXDAhf0SzI0omb9f7CSWvIyWvIygs+RHyMxmnQQghSlakhr1kXbkMBoc2qCG4WbTEl+XCNKe1vWi0P8PHpZI0JNQ4R3YViaEtIYQUp4kVKSpi/FKx+D8Kf11i7pw66AdsECD5tYdlf9gNxRgaI78d4+ObWo+z6azW83lQ62mti5cBDxllTL2VWs+mMxgp4Bm1r38MtDY9at+g2hmv2vw5TKjgzhpp9uj8uueq22N/6rjHCEYKiXJ0zhqqV1qiNSm09eiC0uIKVUJBco8NRxCnpFNkear/mCZzFs7jZJ6F8yycR2EYzmazpTeb3XbnrdKH6QzGkQI6wTsgnQI66p8ZS58Ii4R/kgK57p+QsGVxKspykZVZukjaJF00ESaLtpRN1PJEijZDUDiLB09HCvhyUjbdrK26oCrzTKJ5EWUY3RTaowETa4JQ6KzVoSFQL9kna1swBW9ObNDoxpEC9n99azoMGsyKtmDRghctWySx5IuSyXZRJE0jsiyJ884GWYgGkvu0wQg8K49XkwU4dTp9LAZqr3y35ydGXk89+f13MhFw48vgbxLOyD/Ts4IbZlIV70s+u9F8RYcz\",\"t2TDQWuwQ++VPjgW4OBrUAceCNP3RrtAGN2qQ6AO/GnDS+Gn5J+NGiip4e16XwMf0PzMLVHuz5K/iB66jk0ZjWpJac3Zmg63xSTGNvsZPkIfR8K1V2+lQMylkmyS2JLv5FRLptng9fvvGZO2XBQ6fJMUSzhszMVibVJreh/DR4ZHmq8nJs2ER4oHXCLjYuuuyUxkNZCbKY/jOPLKTUYqVKgz7SrfMXfzUd9UiN5AhzolYFTq7vOHu82HD0KKeyC95R4v/Look0YwydKWNcntj1ir9afv99wf5/44QOyDuPNp3Pkj7rIgezrEJ2va+zDuOAFQYpLGQqIWJgga6QxRtFVMGcyrkXsc6aMNmqPy3uUL75SshmFCqhCJZMSAU0c8QFXr1gKCQBE9EifnCBq6gaWL1FojZ5K//sI7cUD40Dyh3RURVNjEYg5nm2eiLbMwFZiq69QgqXzLVTdYNBSZKu+hu3kQXbdDjEEpOzJUsGYgkYHdQQWdOQg4vejWTGuAU5ReI3JgF2apYfYGytdGFqj0aZsZ9XqDLIyLynTUv0iUlbxs3Vudhyi683uRlKxNkRd5xrJChPcAcdC4zO8vJgALzkY+WkydhrVDlL3cRygMYap4VEPkeqOU3yo1ps6uJlBcMq4eztQVummnSFMN6iA2vylw97yIw6xoU5lHkSgyql0wrzWsG9BGoiPcItkgLz5O+PWezTOSm/uNI8Yymo2RWEmukHTmoMSy1t/NQMTu/BjzIBZRzG5uVh//fwiWtd4hkqP3J1cFQcPFs/P8gMvW2ANaI57POswBSSNcoKTozCCDjnt0PrAGxSyiSBBYbCLBxbISWgi+oxks7jraBkhrLOmNRbIHGpNzy1qnHG0OGOS9/ohT+tAhkbbwgbLzidAZfunij1jr9I9CUB8X24YkUZpw4u11saXd7kjTGfEcFawHrIeq1t5edd+YI/9xts3/fDbmlg1DAopKYqSZVN10rDXAkSnK6Ryhn40H5M5o8heZfEH2O0ZZkbW1xhKLXCp9SMqqyUX5I1GSSAIsntR50I5UW7YK4k37Iq5RrUnGEV5AhzllyFrJw/rjerW52T+mRQ9dZ7CabzcfPmy/znQa62/3m4eb/Wb7qfWCqJl4b9F7xsjIlftZ7mcBmA9YlxEmPzgvgvqDdTYlnKjLeZoauPzIuvZdZy45KlxFIItTLB5vYqxX6xPKWsrIpYM0mvFCp0F8J+85PRVpxahnFPspQnED/d8pYrmw3efb2/VuR8OaXrgSPy6oJm9FlJWCJ9i4etQwdzebD+vVMHmT4Vjk6MkfkXhD77qvdQ3e/Jvci+dSmL6GNzBSECLQvIXIvxCZ29zim1uy5tbINHbYI3+FI3adgQoOxsjmikDhqKCCo+k4jBTWccr5puRt85r0zgxWmlEoPBXJd7RfuZJkIAwX0H+dk2IWerv9eP9hzXYR/NBaWcaQxVy0ZRF1K7ZFN/S4an65nCI=\",\"emewg9hmogiqit6A2aG4E5YhaHMeVkq0tm5Y/2nikueRTHhToOy0wePflDqdnBSQUZIwQ4Hzgqgldrhh+3YZa32IqiODTPZU9PnkRSLPPm4/BTd/QRVF1MZlnmKchBd/rHwYHkNGPkcqFaiOaM+XseQe5SY5tzNEe6k+6Pr5ry2PZVoyFkZRHHWyABQC4UeWYcIgvxBSSCxIIFEWMuR02uqlvIdQdBEzINiL56JhCRMil20uShGDoASMWoWW9CxtuVs7rC4iJEkKEQqA2Msd/7KOqFEXzbYIsyyNiibJeBbJil0061BPZtmiCoFKcyXsAlKTldvGk5VlQBf0rpfuTCD5OiMTgU7/WFfxyUhE/KaWn1K1zVd4gaqIMwpXqNKQ0iuYRCyKZa61VC5GJJpt6+zMdjNt9GnwSN56/Gkot7LmdOJNt9TVaim3wg49jpjcWio/be//mTNalE/zyJ1dTAzk0YdW9kZD31RHKEXRiScze26r5ka4VVx7qMA5ZwDbBO4a7UYKT7VlJgfVz0d8DJWvFyeO2PMhsO0fTp8bjmM+u63P2oZxeM2WxGgasYjbbHaeW5+7XTfC6G2t5dMTOWwxzSOZy2d46vj1iVtrLrdJlG7N00gm9RH7mis05mFjMnMsBT6ruqmvu5HCoG5N1kjitWz+rBD3IkqyJSvLsmRFmSVFwoqmcnlRusyiOA1ZmEZ5mhcRVrChMHumwVaIjGIGi55SpXayO7hXPe5OXEMFkl+nbgZTMFaQVH/Egc2JBRyXm6Fw3/ZoBnsDT1Y2T0wyEIPRrTfaHx9yJByY8NmoTU8DtXj0UIFcAt74SCn4o6G8odfvkjrpSL3HceknYukqYOmCpx5JdnumpkfcF57EmZecKTCXRrzn/jhGMmjENPiiNfOmhw7d8EBTX2RFHesUJ84T10j94K2XkgAkFjQffRKmQTKfl8R7B3oILGhR/DQPVbXfDLBikyKskwTnEbGPZ2vk5F/KBfEZsQZnGLvLkTwu8KpOymsDuyr4X3I8WMA0zJ4lxbJYSVxkURiz0WJDeN4BNrVGgqPmeRmSVHmQicWCqqHx3X0a+gYtvcYzWVUCaX0Bifcebhy9FjAvEpUon3YEI932uAoY0KzD1LTuaKOdq8GhBYlMJS6HNBuo/ztY0yFI9Qo4ECeMbtT6qRN4LvIR0Yrn8bUaF15XyHjf+IEUz/GAgDcRuCc5SyyjKx8kfKSl3hEVnYZPRPXYXDluqVOQfXsBRQcrszOWLJN/sjguiiIqWHbToGic18P/VNxjcSGeQfbygoKypKOeSd5LTIPsSQPlHSwrNoviuITbpF84LprjvTUn+M6ZiNdMidWIeQhuIrT+GoGVg4zMDknuOOqpK1xlgi020fvC+gA0wjDdqjqusEIqcV4UAdkTSnucds/d8505eq7Mee4HBxUc90NPEij0gxdGZ28HHAE=\"]" + }, + "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/\"579c-IDGf6KUcFknB+02M/ZC8M4KdgmU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b7c42722-63d2-4c6f-b95a-2ef10bd7db94" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.773Z", + "time": 934, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 934 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9a4cd06b-49ae-449b-ab97-fe954c523f5a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:28.779Z", + "time": 756, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 756 + } + }, + { + "_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-39" + }, + { + "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": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"34fd-C8QmmPSzGDvcVGIBfZ31+p9lixo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3ad31730-4031-4d21-a2b4-672bc2333a2c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.856Z", + "time": 1123, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1123 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a63c9bc5-aa8f-45ea-817e-149e12e9faee" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:28.869Z", + "time": 773, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 773 + } + }, + { + "_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-39" + }, + { + "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": 1658, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1658, + "text": "[\"G6AMAOT0bfZfv6P5IbRuoMflKvuuPY7DCLnxJPhtGLMzNlCh/P2cStaiSg6MfDRm12QIateX9g8YVW5q0wSKSGkCq2bbwP83/hwNtdNCgOYjDhgDWtysVm/pcVR/PxAaZL+mmKoTppPw7JynsFtvk/BA+9FuckzMQ48/9/PDhtB2flAyuBTaop0b1EwbRfvrwB6J/f1nr79Pbm+70J2fXrcXt/dyXPx18gEe00C9zwSfUpGWFA1mVprUADQBu9kDMu3zp0wbzqpDxGloMUshNJhKbpM85SExoZwHoOUyDOPCIILj0WI3HmH0zmhxduQYjuALYl/+oZBEUihKoruNlCn8ikBo5PbXkEDrGXyboV69yDEczRw73nqZ8m0CNDCu/5l1T/mrl+jvB9JqepeY6FovAjQZH1r3lKvJMobJ9M6x4ywPcHAMMJvBM8pi0ec2kBN0kYN48x0D0HZ5d/8/NHBOAi8L61rIh2oSez9bdmqF55ZmqSt1NoHj+2IvwvSOWjqJnIp2ch05ZR1DjnnveHjIZZO8CFW+n8MFr54VZkVJZg4NOHTI+GKOAdrEmgaqh9RXDpumUVpR5P7ViomhH5UFTdPk95M36aOUbvDisQWHheQPLCoBXPGhkDzoXq0pl5/XFyWBBfCi9AL23n8KycN7L36t0OiqDMDhMm6/p3HIJA4tTLK+R72MAegPOJxI5APHMHE4MYQe0EUagjq04LAoyVu/JtPHLfF/N1A2ax8Hs4zBoWOAsUiovfVahqxGAIJpDTi2T7HDsiiJQ1McNIEAmAJRgRNYOGFs+G+JQ4CknEov4h/A4gi7gV+LbN7YQUUroaZ5wH+pcIZHMJ8C6ifNjnWX5IlvV51w7KIkGZKAV5N6U3RVxdgADpcKnO/QVu8N9TIGk0Lv1TJIgC6HY3BoPxCZoRzarnpk7UDyhKk2KgEARiTlH+T5gyH1PUkduUuVw/MlQCYsvnOKWuDeLtg8JWF7l25lTsIv2HnhyuHbBKsXToYpR/opLE64f5cqNVccI9z00zqHDk2c4GXGjZGgp/ajnUT4lJPQjxVefnr3FjRL5N4xtJoeOq5yiAZV/nyHJn947Y3dQ0U5YVo4I2pLrrw+fvVjbcoae+9ONMhrQhJlsxyPMB1KIVRk6qTC80gkSeXwiUgSGNo9j0DQUYuWRXXfx9YUExvdrF8LK2hVsMBXaE2+Ag1gusno2A==\",\"cWWYsmmaFr7R6+QDhYbeBcdxYfDcFq7Y\",\"vk2BFO0BicPbFAjtAZc+QmNF+2thsC+qT0ysaA+ju1TnMWUfBwLpsXUx1JEs1Ft7+Y3G9HdBi59K25JqaHOJnjNa1GdFD92nC+CnyP1AL3hTMhpcedWj+FXg07Gw+QajFaZn8sMk3Zb0saTNJnyxJyHm76bP05aEwhN5aO/8hAMa5BRIrnrarmjt/aVsgz1TOey0Pdqr+anBB7Rnl5cj0ENKxrazg9MJiROxmBjQ+Yg/pTR0I40V9IrN4B+WXiTtHom1+lgicpdeyl+0id+VgBRgoCBV5v/4yULrzwDytUxRmZfzh13no8ES/0vcxR5kE3Cvaw+4R3t2Pa/Pb29vb89vbq8ubi4uKJ1ZX52eXc7P55en15fXN+OofZdcFC1OftwgoMF1KWpplkIj\"]" + }, + "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-cK6609i/1VMgmFPECTQ8mZbAAh8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "83740113-91a8-4d7e-96d0-30c301bb22e1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.059Z", + "time": 849, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 849 + } + }, + { + "_id": "6ef1b58e86fe116dcb709f36dca001ae", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRoleCreate/published" + }, + "response": { + "bodySize": 1643, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1643, + "text": "[\"Gw8QAOQyVXt91/tZaQxTpUPJ9SL7OjMZkFgyUKCFDgDdODh+P5fCQqdkjXird/emklBPZu/9iUhCLIpnt5bHIolOK3+t8VDnTK8oGkjr298e0VnU+IVJrj0Fz19GNplRoZgLJ4rbKgztlzxsbfsV1+yCPAFPIX7sfHiCLkTYrNkO6cHATol+xUjLEINnVJhfrowaVwF/RXJBnPSocKXl2ofv1zvjEyt8H/kR9VphynxNqP8bsUYMfv7BpI93KzbN4rDedwtusUek4+EEm6sgDlXEeXpE4ed8n/kKj1uA4j7UmOPAqDAMuQ1YjNogjNh1oEZxfP1bk/nJvNzNN82SF6ZbN7sDlncKhZGLGpcIUn7eixp96HuOlZMuTOg0iDjpmYb87GeIvKr3Imh6rKWWRxM3BZcHb2F9/w9WPec/TXSm8Zwm02NmKt7/vYW3BZdXPecJOUv5Lgme4S3I4H1saTrj/BD5xCYFSe6JwXONFF9sLTm+wFgLAMxdfm3O8Bb+V4EOe6lWhb/LhFxvZnqhn+G3I80IbpH9PQX07dcPpGAsCsYyPdYC4DqYVK+bwmwHAPy5dH1F9UgVg+fyysVmWDFJAhPQt6pKWmwNkvsethq+jjFEiGysdJCtZ8OTyx/AWaCgH26BYlb92px1jtZfmzNS47WUWrZj0AYTJkjmmAEleHZwtayT9oiOtRYeO4L/ItOvvYnBcxWaM7c50QtcDHDCMJi+TvhgEkig9yInXajoCAAAuUCpRZTyRgNJj6uIS/43giLhKZsA3s+7mhcfjIW3MMpuooaxQDmSQhlAP3PhLfCYMlldJwpD5Z59p5xnFbB0VgmLo6+ulGIlHh2u1mT+3l7gLeQ4cE5sr5tNg89t9YngeUYK6Ldf7x9IIaOfAlVaBawTCGyrnNX2RAAXL91JbwNrNUYdYZJyehHNrHsgCxDcIqqbagJnbyul+AlpRhJSxV15IPPspLh4wOkRS1HOruTzZrNdHBb7/c7yYewUPIPHG/3TeGfp0X2DmGz93+Zl8N7JyctrBeoMpphXQiSc31Qu\",\"LDoGb2EkslaRBvoRqed7tqSAUjZ5SEnzw+XqOTOp8D4uLJk0dIcC+VtJN7B2BQTpEdJAkc/cZrZU6Dvv/4Hjy28mmksyEjZ67x57SQM1VsjuFd9JbZQR66dguqphpV5tDuZgdzvm5UH7hwlhNrz8NUrsMoHyr3TSgx35r6fgmfpLTjJRa2aV8dqGJsi5akEiU8yVpIF+vmvbI9svp6Y7gbrB/yUS9OaUUks2wP79V70NsCYdtRTNL1+1S1BL/xb11Zn3ZZwpZCtSVjf62JI9f94IUhkvHkWnb4O3vWHRKoIDOYXvh7bllAYNOIASbSzlooDU7oYz6c6OgovwbDOKrXFTYUp226C/Wmu0HDnvFP7BFVe0vwTLCfWIG72a9EuwjHook4t9WuEz6t1c4QvqxXqucDn+HBekvAQR4sDc3qUoZLEQWBx87IvFvaXlagl25ByFg/sySOd6kK6Amq9HfEa9XGyr+85ifajmi812uSkmzf+OvVhMsdsv67LcCyKXODZZ7DZuKDcWfnS931Tb7Xa72a4P68V6jnCgVUrvspQipx1DQo2bGt/TosLLsH8Yc1B3xicu\"]" + }, + "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/\"1010-ecF6mafZJd+cnb+8F713hQ2wRkE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d4a53131-a1e6-4af0-8745-dbf159a3146e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.062Z", + "time": 753, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 753 + } + }, + { + "_id": "7736cff9c86c4f3fd4d30ad36da33417", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/pghGenerateRap/published" + }, + "response": { + "bodySize": 2367, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2367, + "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/\"1e18-zku6yXQo/za/jY8EprVWNc9dY7k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6b37e4c1-f5f0-46e6-8481-7835e405ad4f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.364Z", + "time": 481, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 481 + } + }, + { + "_id": "ad4e157edf8a3b18458393d28b1ada73", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1855, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test1/published" + }, + "response": { + "bodySize": 796, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 796, + "text": "[\"G2IFAMT/lmqna+adbC/xINy5xtrWpG2FiG8HF9DAxyka5v9yYHzCf9Ht52tmY23NhhWlpZdd2FHDEv/ZpNBSmW6mF2IJ5ZMtzgBnocGUuIKAN2ea1q8rCHRMOPC9EW5Rn9GzCx63LX5r+9gT9M6cEgn8i3SBlgKJqU/Qv4ZgfvveOG5NOl5btaBuWVVmYdehhn8zjq9ak44QYM+J4xkIZZge4OmBG6Y+nJr6DVHQ4JgJAiFzF1JSevPh3ce3dVsjZudD+3w6lT8CkVI+09YwQQ9wqX7oI6XkVRbHTALfAKtAI+8OHWF512ej1UTNJ0s5WcpJJaUcj8dTDq+aDw1H5/ejMYoAXchzisFC+SPwj/iR3ftgKUEPIG/fBxudIw/QCykFHqEXUrCGrZD3QO0tBHywxAIVGuf3J3rl+8zYDm3NKVzaxtD35vbE3l4ubelETAaraut4y34ZLhTJWqy6M6mOMUSXKPikLbFxp/TJrqOn5u/0M88mHiHQ1D6dZ2ik3HWUEiBnG12rCPzjMjtB//ojUOsFQlkhkLo7OhsdXEGo2AWfoIdScJ6L/B5asPBqrLFE3g0Nm8h74lUX/IdMhew3gLiJnb+E+cH+ZB7/mRjD/brk/C4cIJmNnt4BlcbCCU0mWWhAHtYIcoMS4FtKEcjuJvid20MPNqFQnDCTq6lSSqmNlLONXKoFm0+p9XQ2X6lqtpovqmqlhK13EHLElWFzNEVFXQGw630+31KErgxite5MTW88NKx5HKUxSslUWzgnaHTfmGYhcM4k+hwzFQ==\"]" + }, + "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/\"563-t74YYZgD/2x4r/4twwuRjvb4HKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2a29c68f-a1e1-4d64-9f14-270c2ab5643c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.367Z", + "time": 793, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 793 + } + }, + { + "_id": "d4876c73cf5a0af3c8022872762653a9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/BasicRolePublish/published" + }, + "response": { + "bodySize": 3230, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3230, + "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/\"299f-YqM3A29mfgWybNRJVxS8lRBuLH4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "56ab699d-7228-419d-9aad-9bc91a66438f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.369Z", + "time": 549, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 549 + } + }, + { + "_id": "f4a350acd9dad1088504ab6898a7202b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/customBasicEntitlementGrant/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/\"4b4a-pmnrp2yeD8H3YfsRhzQPozWFHYs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "00546538-20e6-49b8-9021-97a263f0f4c4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.371Z", + "time": 790, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 790 + } + }, + { + "_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-39" + }, + { + "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": 4074, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4074, + "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/\"3388-kQfmc7Pdz3bMeNiPUR6EQH+90Qc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bc63e20d-ad69-4568-9975-620499c931a9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.470Z", + "time": 471, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 471 + } + }, + { + "_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-39" + }, + { + "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": 3806, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3806, + "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/\"2971-oGVDr32uIECllpYWV/WyDN/4QOk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bbc92bd4-a722-4554-b745-9544dcf45c81" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.518Z", + "time": 443, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 443 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"579c-HeNz5eDbvKUjM5jFNp3Oe8sP+dI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5de1a829-a3ac-46bd-a6cf-a33f679f8ea1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.520Z", + "time": 527, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 527 + } + }, + { + "_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-39" + }, + { + "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": 3186, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3186, + "text": "[\"G8YiAOQyU319t/uhmEDUccVQktaH2ttyKTkfw5OBiKWMGFqwAGhL5fC+/f7XCZXSCJHkodAIhVJ2Zjbcve+Fb2az++774pYwTaKailsplHjBS+RQIo/hwI5vSkiILL9TdWgNSmxeXm5sSC97O7+x0juKJf3X2mD5eN00wb9phwJZn6hCyPDwWG0YvKM4DM/thvpRP65h697XpT32b7gmWc+0c/Nb3V8aQllrF0ng90BvKMcCY6ImonzqOAEsr36v4+twTMt5XY+ryfJqQflx7ujQHmGv4ysKTPB5/Q4oJuxPdsh0TrtEDTq2ncXxUGIKLaFA36bKN0mm8UxIXDRK5EQQdep6TqvZdL5czA8L7J8Fyqs/StxoSOL/ElCi88cjhcJy7QcKy5bZ8hHaSAHaxuhEQG/ESWG+Vvymw7HiBsAXOCDAKYojpW86WH1wFAeFgwPtRj75DwNfKlYvjpQGmTUZwI9Sa+vaQCXp6Bm+ALfO4erknGYkx1fb6JYHtB7AbU4bKWwPP+oktJECEQin8GgEJWnDF3DKVdoLp+mKtJ8A/OEHVUlxChfoQCJbgIpd24EYcyp2x7+RQWaPenSyrFmaKxo1wbw4yuBje1yMgOy3zT4T0PUCuj5fK5bCTikEHwYK8XwAhR//3G3vi5iC5aOtLwMidprna8W2hsl2gbZKUfnTyXPRilk5dIr/PTL4AnWyinRpCIGsOsgXyM78wcogmkRRIYWW1or7X+zdIXXzDs4fimspoNaVhJxQiqoQHAClYzJEwIAYMWpMUYXftLNGfpekrSMjYROCDxBIG8tHOh4G3m16AWtAoUQADwoBzUDdsq1kcWyEcflascqvEKMGCouNWKGooWnxQIVCq0vka+x74WwcWrfxk50Tbr8A114UnY4GpxMUk5w6ngncOve0seuHh3L7bfPK/NcbP1xdTWk6H69Wnw4T7AWsLS43f25u9w/71Wa80PNlNaXV3H0R+RH/eMPNefMFBeoq+RBRdmjj5twEihFZiRRaEniqxQNRYv/HXYorXBeV+1vY0NkbJL7pAJyjVXSSZYYukDo0qMDipAuD5NDBqkUQmy6sgV7xoYFP8NQpVmiNQgkKixU0ozZSGFkJQzZPKFYYXmREhRIAID0RCqW7EGUDAnlYw+RN6hjtkZ/pkCUNL/e0VSLVF3Y=\",\"vP/+ea24zwc59gJ7LaEoADThRJw0voBPtraVzwhG6W2t63IBZGonxUq7Mt5O4eyngEdvgPtyZehqepguh3Q1oeF8flgNdfVpMlxpmlRLbeorbbrhmRmdSGn3lOkd7nSiQYx1PR8Hiw/T+Yfl+MNy/GEyHo/zPC+S/2O33fUOwLlV87R1uLqgXAh+1YZHfF/v3Nhg2+Ljf1CV7O1PeGJkbVdOSE88NzZIiRTFoUztUpWozjIny4ZCnTPSijNprNHMU9I2dN/3/o53Bo4crjHqrPC396/w2EAszv/rsqpsQ9cGof9wbp2LNlnU4jx6/AZFkN/YkKvIaDT6jZKiinbLLr0jiJOwvfahd3SvTxRjSTaw9hY1aYv+oTKRRdnW49gGzQOiQ1kZQz85TeUDB2FdAW1T9oARLEOlk3b+qETyRLk/BBv4Ak/Pa8W1DzB40wEuvUZ/sAxS6sM87wi+zLSeyrd7XpfIunWkuVhGkYI9RSmIrmDRtPFl0CE/ZfJBgsLNv4/Xf+8UCpLOQ0IHSYcjpXt9IgkKwRVlfSKFYvZGv2nXkkQa0fd5YHyYNx3g4M0FvoDa5a/WJQoSUHfclmjxH0F9b1/YVj4Cpc4Uaj2W9oyOML9/hQIUPmx3e4WCmEZyqNVLiq1LEb6gqVectjvIrMQd1ZZpBICULIzwShfa1A2XJtG1N2cxIzIWTMIshhypiXiyRoY4J+nGm4ukYtKlEUFxhQKskfWjCmva3Afhm270xXlt/AfSHN0pzqUdVoJC598VCsUHDSz4jze2tiShCG3MXDqeIYUEyRIUWoBp/44bT2TAM/hjq6harY0UooQnjxjyLHj0Rj5ybry5iFGmCPuI607u/RkkBSgca6nennJuA+kkH290kyZL/czuyr9vy831/o/736Dc/Pu420Ptw7hYKAjah3Mtk1h1/eKtmyig++6TMyQorGgNUigkf0ajD/DI+uAIkofj7DEuBe0i4RWs0A22h8cEixR7JR2htqyd/ch9kIhkh4bzVD8r7rKYdGpjJiHL0yVlArJhm5h1SM0VOUcmE5DBS8wkZOE3zMN4upNMpmOiBGQ9gMoC7ZH3IBH3r1t3hUWWi2OSYJN5h/3911K4POigT9HP2FnzJ2YSsuyTKF4nfWWJh+1un4l2bCBw8swL5b7Q7gx9VjH4CAqB28lMoXCUzkfC+hDWGJxV+9WydvZ/iskywDOUgyDXRmc6ic9squpPs9nV1dxMMTlo5MKSmd8lJfbm+rnSpDCRyUS4Jm8oZxrTh4vukk40XNfme7JkWYOfaoncADqf2rXIOrMFaYDYz36LTaFxlaBrDiW9NFmB92Xu0lPbBuJj4JvX25qmzOZb0Iv/Gvhds3EUhj4mKnsqwZb+fHiU/Zlue3oBUc1Pi5loaxjUlYm4WrQjF3ViwPA32uQ2gn3/LPB6wGRU995QjiuB2NynSKM6/J6xxaQN7eOshvUcUXa9tRS4o6StAxBgq46EXeqXeScdXjEnFbBrw0kxtQ==\",\"arCaE0qMzwweLDS7XNxZPjr6g5s2ocAXHTch+LA0TSwrJGJfQKCNd+QokT44KrdZ8S74ppk+2cbY9F3yd/9GgUxldBKPecMGBbI3RFehWL3QSecrQgTu8YymHfeMcjIbzwReUE5ny76luwypcRvrnI4obCOfMKHxXgBYUu+T9aWHjiX0EI3Tl+86BP/+iKjZxxSWa/+S+UfleZvIRwk4kBDj2Y2fRDT/9EGff5IKWI2fjjNZTHqBrb31XNtjsrZes6TDsLSEZ3L9SWD+EF5swBYDWHca2GCxZOAj7u2Jdo1mlGj0ZRBzLAE+UdtlYsT2nUMRlm4HwI2uJqM7DTTtrbka9fIDUSJIn0RRw/Qnc53Fp2Q4cFZvlh33AcbqLS5oPn/catNlseiFB6smOzyjnE4MtJFZeX0RIdwuXU2m65hOl/pAynDb2afxgzaogduUyXg2pUP1rnwjqY0o8RR5ihgUeGr9VnoKLfU=\"]" + }, + "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-Rd+Vt3U7QPty3dLaISh+dlgbyB4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9634713a-bc0f-4bf9-82ca-d4e26ce2961c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.523Z", + "time": 493, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 493 + } + }, + { + "_id": "58ca29e6258911e5971343d8bd21104a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/extendGrantEndDate/published" + }, + "response": { + "bodySize": 4078, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4078, + "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/\"324c-RTTFMj4fF0YLWiTF9UAKJC9o+c4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "97b82fb7-ea76-43e0-ae64-b2f1b6da74d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.543Z", + "time": 500, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 500 + } + }, + { + "_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-39" + }, + { + "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": 2714, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2714, + "text": "[\"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\",\"QclFwXUUAQ==\"]" + }, + "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/\"1a95-PO02/vwRB7j7uNYFVsQF10sN6jQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dd5f497a-0943-47aa-9d9e-b2140d72259d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.544Z", + "time": 502, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 502 + } + }, + { + "_id": "e1ea565cc7d655477fe08fcf4cf7e122", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1857, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhFlow/published" + }, + "response": { + "bodySize": 2151, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2151, + "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/\"1b9c-iTu+Vbfi2yRdHzvxiseDNj2KTak\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a6ba1817-3d8f-4342-832f-2c2cca9fb59a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.610Z", + "time": 550, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 550 + } + }, + { + "_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-39" + }, + { + "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": 2961, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2961, + "text": "[\"G5IdAOQym/X69vZHdiJsjlMUjzkvwtyiEmG1HQ1G8koywUX5//b71vdsaAuUSMgmlVIJ7crKE2zNZOa++av+UEumzTUkShfx1kQjIRIi/v7o49//Y1FSuXFm2H1jr2g0CvzktCm774E8crTqROn6DoUdPj/swke+v/55m2icRYHPVTAFbOnm40eBsnZPEB2cSiUqaOusHruGUOCt3o8TjLPGVsjx5uTW7v31l6oOxPHe0xnFgmOI1AQUf68sqs9l8I0+q3qnwnGwmBblclZMZtPJgmPnWe4tYKfCkb5WySDIk44krmjpEu8iNXSVCyaOjMK2dc3RtbFwvFTevnr/6sUOueyH4o71wNmzrqiYF5P5YaKmM+x5Vbv+7OvX7Zcfrz4+ynAyW6mVXiyIxtjv+U345HRrrth2yFEV0fmA4oomvLo0nkJgukb0LXE8vqwfBerUCaQFADgrD3fov5U7itHYKsAGXvKATH3KVIEbZqZSeeFOJ2dDXjhbmio3lbrf4CDy3nf5VTAO7M2rHeNw7Tlc+3RNRd+eUvjqZtfwYBddAfm1tH2apNhzpDPZ2JwjqBBMZU9kY79UdtGUplC94SBl61m+RqSx5+iplGEJZ5uLfy7gk7GaPL1N4Fg29b6zRYdiwlGrSBI/VEtP8FJFSozupt4mk5vx9GY+vJkPb0bD4TBN0yy6d3df7qI3tkpS7HuOdGmMb0nkFTsF2rRb/lERkfO+/VeXxnjSyvEX/N3/msnF0H2vqDE9N2EjFRfdzWTfG60ikfkqdjYAeYKp6e4Ao28JrS5HO0tvm9m2rvs9R8c4HgVenRdKaDso8Kz8Pos+2MBmGteYVRR/KG/UoaaQpGtpz8qDaWS/07Ap+BmyimLCjGbpWtraVRX5zNjSJdKzcun9gtEgEW5rq3ILEmHgVBOMrT5WkpiupSV8RaUydetpSyo4CxuwbV1nSI6+M/uaeQ5bUprUdtzhHxXRJZBNr8iXwz93oBwnt0jZgnL794Wc8erlDZJ7affmSIGE/I/IcKgkgtrQrUAuJOCV986DJ6WNrRhfz5OJj0JCYjuU1pTJfxR0nwdjUrEh/SxuFVMcKcBG0FlfDv+yhlXK2kA+k1C7dQ0ZbSDfsUalMBO9VWXPLveIjepqpzRs4O++fxz4gzFAzpE62MFFYrVDWt0kANg=\",\"qaxpw2PyeA==\",\"DQAAiQBguxIFSDwR8HIl8gKFpaFaZ7Zy4S7/SN1b8BjLkyjEuY2/R+r25fr1aT0d+kajxq0Z2jpq2/YaFYvHhB1WeIDOn3xJwX0byOsZCngpcO12uRB4vLF7hmVtaxWNi4GBksn6BQbIKlncNlpFI0RFJO6KbkFiprh8zagtNDWKsrR2a8bIEWzjSXmbKK3SKhDbfvMcnrem1s9MlrUoMjpmLHqEuUetRSu5gfhIUBqraghRxTZwuCpWORQ0eUV0IPxwIWzgyspkMwEMQ2YzDixbJhPAgNO9QJr1a2lNCYnVcTEno9cCNsCsiwAB10WarbPzRauDwMapiVkpQ2XYQPQteZoNpjoQeYk0C5iGG+pxlMlV/N+S774qr04BNnAFdg+KMpkAJntofpu4ya2+frnbsU5RaXoMEgysvRTThV46DDqTmK6xH251VCoie2sLKhi+f/0jbvfqQTJyABhIHRS0gfDLGKaFnP+K1XQZFWWrI3u8f5kApska0oyDKaI46O3XrbpGCnjHC7WaDaeKVkO9fFPwlfzJ4Oj/LLx4pOII+BZiiPx+f6MiPaluoA6Hw3C5WsyWxRKxYEye75mmxOG8u7oN2V3YVQ1T9eNnqB56x+ThUQXY/e8M0HhzNjVVFCA6X0TxclJ8JCQ03nl4tTxCzz8eo3xtZzG2ygDelRAcB0MY3FnzcDQNKNtBZNsONg0Dr6+cN30/dQcndyaI0Jnqn5VZkrEtd/pViqaDMIPr4nA0zbPm8bSJCc5Vpf8VYF2JwNDk4WUk+fERR8kUUyaPZWdGZ7vGrRl+mgiFEAT1T1NQs2Wew7tSt4pMAAVlAJt0yvUQAAuoYKjotwgQHdTbyiBXbrRWnNp0F5raxITlLF1Ti97SXoY9pHgDxSDIvYCR1d/B1wAm2LiVv+M9BxYK15CaZTIBTOMbfg/kGQd2779ew2tTR/JMwIPRt/T/LXuAdL4H9gBifaZMWLezb2v+He4zwbbLSHWWQnNJgwm8OPAHgVj6Zw7Vgaq4A3kOO7LKRji/E1o0zqywIrghvyEhxJRSOCZYKaMN2cO1Dk4WIC+FgP2kHZGnCL5Eolj8ErmYDEeVO07L5XSsaT4vD4c3xc/a6Ab1frm/uhPmM74Fkwo78cpGE+vzZQXSdTuCAZyUPwbaVVUA1UY3mBDE5OkGCWpUkRZAItzAgBPjk6USkbYaDIvxBmt5NoBEVIQhKxPXv0dJDBEwrGVwXKza6AaFEkC3Axx5veyzsdVgp4y7iZlEAyPL+yLBvOf8h+eETaLE16lKiBkKEkfibBe2QtwJPh7DnawNXJkwB2Ei1kriwPhbyoSXcvoq2jLcQaXwkJFu5gFgNHFFgjelTbpEKNCG5i74Z/SduvlnPmuj8ywGXkD3S9LEv0wBwIvwnXIogNVRqZ3vFjsCn7QU4Bfg1hQTQMqRUH2kyHHcnuNr1VJQfHaaFhQAjVif53FpwUhJPT/HC4rRmGOHYjQacg==\",\"vCXXOONseUFEeiAAM9wDrabAafQjcjz5PK/ZHGZtCzi25sWKBEyPm0kL586/M5ZIeAnDejm1326ypvEaduZEd42yKFCrLgkpriVgkU4Xybj6loi6fasXC7BSjq8LUCD2PZg4X40++ObL3giFWf+G4ooXFKvpPP/BLJbZcDSbj2el9MkLehs8Wf54Ov6oh5xIyBm9m/9oNNLtF3mbMF9NplgF4KKwTSHTyXThsmxk39vXFm1Agac9qayR46mNsitXqjpQDw==\"]" + }, + "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": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2b1ad9d7-ba11-4efa-88fd-e2c25494bf97" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.619Z", + "time": 448, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 448 + } + }, + { + "_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-39" + }, + { + "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": 2775, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2775, + "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": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "df4bdb0b-c0df-4fad-a241-d9a00e6f6f47" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:29.633Z", + "time": 529, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 529 + } + }, + { + "_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-39" + }, + { + "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": 2931, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2931, + "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": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0b5d8cc4-aa35-4bf3-b416-149cf374fddf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.738Z", + "time": 441, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 441 + } + }, + { + "_id": "276d4a56e99cf40bc5df44468494f715", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/custom1BasicEntitlementGrant/published" + }, + "response": { + "bodySize": 5757, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5757, + "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/\"4cef-EYto5Y8AiaYxnfaN3gCrI+E2bRQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e1224081-665b-496b-a4b0-6e26882b46de" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.745Z", + "time": 420, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 420 + } + }, + { + "_id": "d227c1518fae6f641df7c93090756923", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/jhNeCreateTest2/published" + }, + "response": { + "bodySize": 3534, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3534, + "text": "[\"GzogAOTPV9f/1++55xUnQXaPE4stLbsdGAKvmmEV6zgIbMkryYFMxv//frVOJ2VKwpOESuIQ2pUfZCZo0BWRtMN99/9Zk7+IydDmUMWldPVG3BQXEo+h2t2vKAiISNaY9v5OqCRyfHy4oI+WhKcbcj5Dhlr0lFkfagqbp9cMPTkfZshwvcLhX8DxXveXbvDKaN4Z+aPeHAdC3orOEcN7SwfkCUPnaXDI/3+iBmv88jfCPYVZmqe7HeVlmUuKru+KbK+cU0Y7+PhAzRMy9GhkNROQJRyPn1DTi996GrCKs0ecDzl6OxIyNKNvDC0N0mhCGrPIkdm3/kV4ehbHsKzaKpcyr5JlgdMdQ1avjRzP72PRcGHk2Jn9nmykdGtmNUqiCNw6shBCg3jtvmI1zs9rfRB2rbd14DXs0P8S0Z78v4RVYteRmwHHLe0GvuqbhNcFc6M9+VmgZFDhqd2TGt4PgzUH0YEW/uJa19rbI5xqDQAQx3BNQl4sSqq3I5jdIzUeRuIrcLl7hNdwpQlkZR/t577ALFB7ER+FaqPQDcW07eXiAM4I/fIMgi+bm4DBaWJwmubnCKrIwusy1Ze7xygLofE2q9pZXlWkZLQT/kLu38o/zIJDYD2JjEdHNg7m8zZSO8d/a5E1KQcC1gF0oegMcJhEBsLC0kn/QBl7wYNw0C0TDgagCAgggSt5EDYVBKMQmzN0ys+COGi9USRPxu5ndGQDPtYHpOUtvljAEb/K/7M7BoFrzEA9piLgEPR197aiP3D/ZyR7/Kw6Tzbg8FvJM/pzFvyGs5cicAa/g9/TnI9FVDsbHdno8Ht5+FjnDSTMXi8AKN7W3o7UbmeSDP1aTZ0jWb2BOIYb0kJ7OIqJ/u7SXVpLTBJDQw7eJ6IuU62nWi8WUQEzmqu60h+da+lIwZLsrSUqcjnUCGdA0fnCIvPzaifUeomNcZHrlevMaiRo3RpZ1+s2P8dpYhYvD9ui2r2G96M3UFuMoFQfmj6Fd/hgmsLK96M3WIVFFNi+i7BJV4XMsjQpyxVODAMMAMobsUZ8uoJZ8PFBL8uiolKWbSZySysXP7FMeBT2vA6qURg+UeuCIGgXuE0Dj1FJALIkv4PPtnrsOqYUuLq6vvzX5l7y+023mcjkioiq4qTW1e16833z8Ya1BfTYddMdaclfRhJ+An0=\",\"RIai8cYOxOApmNZzqpYikwklVSgq0YRF2ohQtFkRrkWbLLOmWCdthgyNYhr5CdenEHJvR2Jo6ZEan9JFOKf2+onXOQkdIfhcjPh6gmm6Y0gH0r5qKIsgE07oBKWRo5G138NtQxInbL5KuNf08Mdy7pWWZAkqybBNvl7dHJHnDKXwhPyEym1eBkvs4GZZxxSdRY6+8JAz3+ylns3yRVYsymRRJos0SZL5fB558217ufVW6f1sjtPEkFwjupb4+nI2cDa5Tn1N3Owt89Gk51JJqrJdVoZUpRQWxW4VimadhitBaVMK2VZCdnLJ2BWXE0N6GZRtMLoZ0FTQqWExFpS/DMo+WoT9B3dSms3V5NPU1aTh92VCVTe36pewTyb/P5YubqoXyup+lFd5ul4W7S4v5M63XbsX9rL0kmx6gnAgRm/ARERl5OxOtyfway5wJazoHbyGE9R4r0FfrEYONY6DFJ5qhMkFrj4IC+cmj8PrHPA6Q/iB1XA71qmRAZIJw1f2LprE6E3Y8H1BjgTHLeH+cXbF4mTkSYKjefrBqoPqaE8uqtGb2TIA4HN3u7rc3gSsgQMYm8CtGQwcJWTI8VqhutHSNQnHlVSNn1Nt4GNW6X21GTDa0+0RwcZaY8FtUt0o6fJDTZ0IXsMpYF9AwBGnGQRpkYA7KWt+OucGYvd4N5000ceUIVjtr6z9kRqf/pk9Nqn0nu7p2R8Ha9VoO3rsuu4sMmSHlBPCaTXbVObjAhHpqkgkf1/rHWqj2tV4Zc2hH2SV3k8d8HUbS0LawaM/K/8ASmKLf5Pzim1VO/sLBaGVZoor85wiAxfFG/8eieMJZqFBHDsjpG2LxLHdOtXoyF6InmrkpIaiZe1DUfZAVuhg9upA+sHKV94mcxpDgNN176gXqgPdTi9UR4RYL/9ENXIIPlFvrt4lJtIANjwxpDJeLGBwSml6NrLZxSKuFUMPW7ux85qGFlnEEoyLBuXez77B5Wae6ubUIrdIvFjAlrREDf1XJ2B7OyOPkhGrDp6IQ43/pq4xPdlRkqNg9X7gDGrMjzidEf5reAIWZ73hUCpXX2ln5JFDjf81o+WTOMb6GOnRabyEw8zHifglorrWda1vHVktejvPdLDyADWVda2vpKaBsjD55tJ1rX+avdLgDRzNaGEHLVMJHsgShwfvB8fj2AykRR/uzSGUdAiLqDV2T7vONE/uSj65gOjj/9x+i99aEl3/WoABf4uZ4houJ04T73l4CYxjixOvMaJqx3I8fo0ManSkZY2Mh2heYKTWR1PVDErzC6qhmA15CPp2A9ZgNJhWgYxb7nImr/MeesHUeDg77QPnhR9diOhUph868hQwCPyeqoBD4MQEBMzXafd9e3kROS84o9pjVM6Z83OHqoWZUQuDN+JGnmkuvIZAGw+DPd0eyeAcnNyEBcBrFZRYboScwIPaaeockaCjlwyTLhN4lW5wXxFwCNwJJ9CgPhmq8nLS1KGLHUxlMAFdCIEY2ctWHJthkMuvRzuo+4U+6uJem16objJiVTUe2d+9FfCYdXv78eNmu4VIRR6xjWX+/P7bz82niDcbIB5JeG/0O2/VQdmoMT0ybBrkiAx3f2BAuwL5CQetifefti20+y6aJ/haWQxZOOQUFjl6ch5ZOd5SRA+/xlJvPCHDRiPHqlpWebEuUeWUp09xk50Y7s2J8PdwXrTtBaXM53sbIyHiumWpby6MpHBIOWl5Eci5gRO+IE+LMmd4RJ6VGXtgIGs7T3Kj5aw5KmlzzCvhVul9R9/0MHr5e+e/gnKfrBkGses24xyTcp+oI08Z29tI5WG7fzUHsiQ3ACUfhDNVViKhb/eJvFBdsCeimjk9bA==\",\"EOnaC/uEDBfpfTXtkaMbm4acwxiGu02tnBjez3Np4s9cRgXLYeiaB+pFCu9ajCJXkWni9FrWXzA3ukweZy4TAWRtQNvP1gvr2dvwrTH6UnEJXmGxB8xfyebXHDpxvBfWmueHbZRuzTM0U3vvf+KKPinCnNGcxEBFzbmXuSnwuNPEcFQfjW7VvowfWOoaF1+WUV5VVZWvq7JYF/laoufLojLNlkmeLNPVcrWONvmOxmOVi+ZVMbziHodLz5Ay1rakMikXU+SpHllTQ3mkFxzC6uXobXgKLe1ndGQx5CrCjfYnGQ5YRiB/443qaTsIjRylOM7cHCEwXmXsjy55+aznxiKshxUPWCV73nBgFunol0dqvd9NDNTjonK80WF4ToujA8emMyTfxzPtO7sg9NGM2aFiLHSdBhS5NAdJ6zLjCXSzsCxdf1atFczPEI56uqM0Tau79abJiigyeQX86JDjYcl0ksiwH614nbcjTQ==\"]" + }, + "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/\"203b-8StCIcqDtnV/0wjIeSAtpsEoABQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7bca9c91-d9a6-406c-8c1e-e97f4e2949cc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.809Z", + "time": 441, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 441 + } + }, + { + "_id": "94cb7ac27139c37d3db5c25433d5c5c4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9/published" + }, + "response": { + "bodySize": 912, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 912, + "text": "[\"G7oGAMT/lmqna+adcSL1FbeUWjB8OaxRGYpjj4b//94Bwhe8b1Btm9vWGDasqBOmY1se8cuWpZs0HUtrb40fBlyRn+uZJmgFDk/OPw922ZrhrwFDLzoKip2nsJgrBBlnn2v0eujJwOOnPmxGAm+FccTwbWkFnjA4T6MDf5/ijt6n4EOvhHkQbjlrkoRkRU0p6zQdvF104NaDcEsw+EhijdQBE83jE3pa+3tPY7xRnSEWg/fBGIYheDnE4Hxzc3f9dIhkIkzzkalNcXd4drj/cMv6TIXsclBpXNBvwCCkH2zmoSaiFmf6Y2onOLI7SZtnpWyaWdVU5axoi3I2T6mYtY2ap60olGwrMPDA4MCnuC4hcG8DMVj6T9JL3IRzetE/yTjy/A2C9BJBn7vH+MlAK+q9A59izEVf/GTY2b5NXg2K0qCjXl2BDk5Yg5dJwrABLxOWS/KjLFtw2Csw9IMiejDhXvcLQ6f9GHyFJw5n0O7ADuMo5oZWM2l3QIY8BQw7VNpjPU+GFVlS2hG/wh1aO1gh5rvDAXmhTf4kWpI7ak/97p2wSzBMEDC39+BwQUpyTi4xIcX4Z4gM3xzxdODvnwx9dRCpwhic/KVOSEi3JlyrkhjLucf6q6KFmyA7o0D0P+beC+uf9lM59NeJwfhcVcQJMH9ZzGeORmy+hbXD331A9+3wgmzG+2VPpRLfY6CQcsZqwKpxPEsc18QUI0PQ+0Pf6kVTTIhGtXhEVpfbWZZlWZMkeZNUWdlWbp/+q7fzos7SvC7KNK0zPxE4QbvD9Wip2dPiJcWSZi8iiH5zNDiyaPprQU4KI7we+gffKjNaSudf//VkwUDrUdtDeSA83aQqfONj9E/CakpVAU5JSWo3q4rPGGk/wQcHjmkxXRQYukAzq7eBIg==\"]" + }, + "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/\"6bb-saaRVIIJV70L3GG4kJghSs6szwM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e930b781-0709-4613-b3c2-373884208dce" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:29.940Z", + "time": 384, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 384 + } + }, + { + "_id": "3aa861dda0ffdf055470594105213338", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1875, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/basicApplicationGrantCopy/published" + }, + "response": { + "bodySize": 1595, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1595, + "text": "[\"G4UNAMR/92r91+/V+Yk9S1ojW1q2V49WxFz7kQIW4HmxLP7/Yy/YB/koS/CBzAZ2YxFF2fb/ue/uvUWFVdD3okWDjWStG1CZTGW0dKN1LDO4/V/aw2hIHFQw5ZOmOZtSRePsS69sfOaaDgJWXRgST9kKhuW1uYHhmD+w82r8iWqicbZ37BqGxHrwEYJx1tgaAiuYp38jP7xS58AC/zzfQa4FQuQmQP7tHZf/8OCXvlPnbyqchutFWW2W5Xy5mK+vMp9wb6NvKpzsG0qmgSgKJntYvsavkRu74q8qQkPa9nwWcG0snYXunz59+fhjDzeRZ/ZJiJ3iy/7N/tm3q0G3XpS/d9rHELaDgCqj88FDlYqjPP1metwG9uNJNZ8ty+12uNqulsNFtVgOD1NeDKutPkwrtdBltYJAg6oJkH20H2HI6FsW8HzkMpb0UiGY2nLwgvSejv/cBMVDpHQrwHdso2p4QZYpPVprKyQ8r1if/oRvC2ska1YSmV+4+DmJL8Zq9nReLlAV39aWHeRcQKvIkD1M2F8bz+ngFCQf/G01JAatEbNO9Kj3svnNbHGzmtysJjfTyWSS5/koutdfP36N3tg6y5GSAF8b4z0r7rENAPgIaR6NiPWk/bUxnnWN/4Nbx+O5njml1lecRG/Djg1PT77g7XQ2rXiznKizjC8RZdFOEsdfIz37j8s+J1RNgSiw7W8nIPqW0X3qtLN8k43x8OEvVeT/VTdczabldrtdrdYrhXQrMBouhsSf5CX7AFYCdNQX9k75PRaX0APaSOPMUc3xh/JGHc4csnzHTFVX+1rTA0H/Uc0xGxg94AOa7zXSA7Lt+XynrRLT+lOZSBOC8bjS3ur7unAyzTAmHgoL634kIqLxmL6w0t51J3c4chnp0utjPh6O9IBO8oQKfRk10WOyganV+BhyW5Qtedwwt4XxgO6Fe7agwcv9t4GgPgnqU74zkMBUlGWORHxGpbtcnB0lIit3dTERJcdN9phR7Bre3deZijIVyzygwZFuDB1YWJaIkrYk+lZRRsoMfegQA2/wsf25ipybMStSGnDXugq2+kbUv/JalQq760k1ZRzsyzi7umY/MrZyWdH1smmr1d4F6B7x6M8b8/OdUkUHyWZIfq62RbvC9oQooTIrULNrLiAkRLtfXEAk0FGO0iJeqdDaotFhlhYQHQgyMCrK6DHsvfNZurYXNiGNhA7jjQ==\",\"Oh5yhdDgNIAjoTIKYMMzR8baJ210TGKENECOgpI0jKIbgeFJeSR97hacx16lHcodi5IH9QKqk9dUIN8BbIjT2aGp/OA0Iw7onukf5iwCu6L0YoEr5Hoi0EFOFxOBPydmEARd23Zyg9l8qtUWuAyeyreL2fV0m9k5AsBAaM0zZytTI64+c4UowUB46oQP04SAKf2M/7LTDLxLG9gDtDGoSn8ONgbNUdYnfDMX/tooCwmtuizkQDcoMuy6GKF7BXR7boo5KuVuvAkSAKKLWT8BRds5lOrsRv40VYh3tZnvb7pcJFGv/rLHFXK62rSMrqPJdLmaLYGbNZJAYe9iuSjabK4KUmqX29oAiR2eu2sIXNoYTWP0LSc=\"]" + }, + "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/\"d86-JG0W9rJQtetP7oHPCS4/Msu0nMo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "96217522-bf02-4bc8-b21c-0b226f081eed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:30.009Z", + "time": 428, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 428 + } + } + ], + "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..7cea8eeeb --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "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": "Mon, 04 May 2026 22:34:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:25.151Z", + "time": 137, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 137 + } + } + ], + "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..da7e59e37 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:25 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:34:25.334Z", + "time": 187, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 187 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:34:25 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c1c115da-d9d8-4415-bb9d-995cd6cd1e31" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:34:25.519Z", + "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-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..104619907 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:22.776Z", + "time": 162, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 162 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:23.162Z", + "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_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..eb8df10ea --- /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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9434ee2f-2dfb-4bbc-9bfe-9b2aa40bee5d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:23.296Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + } + ], + "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..312d5018e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/iga_2664973160/recording.har @@ -0,0 +1,16599 @@ +{ + "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-39" + }, + { + "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": 44921, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 44921, + "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/\"a02b8-tvXTnFGTBHXo/comdlDpPstybx8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "877ab15a-839d-4dd2-ba31-8228d9c08791" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:23.523Z", + "time": 1563, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1563 + } + }, + { + "_id": "64964acb2055c48e7b60c4d7d4ca1e60", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/basicEntitlementGrantCopy/draft" + }, + "response": { + "bodySize": 5237, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5237, + "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/\"481c-CJF49oOutk1mHVIwCcDUGzy3Pl4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1cafb2fd-fa84-4807-b739-2333991ad769" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.125Z", + "time": 734, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 734 + } + }, + { + "_id": "8fd718f10dbaf3f8e6a985f581ffb0b5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh/draft" + }, + "response": { + "bodySize": 944, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 944, + "text": "[\"G8YFAMSvvWpfvzvvR/IEt0au1MIVYq0VXBYdIF88Gub/Zq5xognOjXVj0aL+2V7Wt/Cw7B+vRbeRetHZZvsUQUQvZ57OtZ/aAju4Chqpxt/gz5HDi2soiD0yNB62rKU+vXgGhUKFk73hYVLtEzfJeQHTuWFoZHjfE50XJzUUcpKLn5pf39pDZIU/gU/QS4WYuInQPzu9KIz4P9m472/sej6aWV6PqpV+kd5xOLoYnRd6eM2bvQINUpagCJt0B+Gb9DFxA9oQJHEJGim0DAXfpo1XpVh5Yai4B1rawyH/UuhVLzRCe1igCjSGw0T7Dc5jSvJJxKVQKn6K2lyzeDAtepFJ4x7Oga5tpJIRj1AT3MkduOZIyRsZDsmLT5ClNnIYED3fUvSKnGB03LuGrJxpCYi+kz1QFvnGpTE2fIBs3eFMR39imjhJHWzh/+dtI0YOvq45DJxsfWl8LNM+6p1hKIPepZGTDXXpILpNxQfuDGpOX2xw9urAsWSm7S08r+j2g7WDmlNZuKrgK8e9a+4bwrwxUY0YSeFMnREiInkBb692dJt+4ECyOg5y7geUhavt8ItYS1Y2POznlTgs6EKR+BUVTx9/KhR1WVGXe5cAfg50G0wdNC0Y4Weib1x0mzoqCH8oNL34+PbNIKbgpHbbcykJ6lEWse1fy+H8zgZ7jLf0x5CdhaaibSqbuMja9cXS6ndvP34qFAVLDSlcsHdpJBspqpCjknvd3GIsSB96oc3QZks51GoyoAviQfwULXbByIjARKg0cDNsoNyO6F0i518Kf1Rgz+aNrzhCd6iy4HrjK4ae1hqo9xVuoMcThTP0eDxSCBzzOC/Pdzq9hOeswFIhMDTqshfr2YE3n5HTwwaF1j30snU1ZCdQpu7kWdPFtnU8GYzG88VknnM2+Zc2QqMKdpugcGyTvTowdAotZw==\"]" + }, + "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/\"5c7-MimSaNxupWzm516YF8D/mGWnVuM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ac2004fa-89f8-49cd-ba4e-abdac1719f4e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.127Z", + "time": 457, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 457 + } + }, + { + "_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-39" + }, + { + "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": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d0-q0EiV9t07Zhb2VQ+jxISAABSGG0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "afd51539-f184-44fe-be91-9af60b038946" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.129Z", + "time": 1136, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1136 + } + }, + { + "_id": "b0d509e0f28bc13a174042b72a0d145b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow/draft" + }, + "response": { + "bodySize": 1955, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1955, + "text": "[\"G04SAOQyXfX6dvVH9ozsTBIbEncbIsNlbxBWw4ogeyWZg3LpaK31RxKRGEwiIRMJbQUVm1n2ELck2v8j4qFRukvWFJ9GiKTIY7jqcpRIyJX7f29G1AoF9j9/vhyc785/dfa4O3X/I0cjz7QZr1fY0I9Q/DL37dJ73ZkQf+sJbGG7i3a6M9rskePFk7tsbo6+kydHHL9buqCYcXSeeofiv1E6+NcMvumLPG2kOyazut3NJ201qauZlG7PoWfARrojf0SkDeRN6sSIhq7+wVPPF5xlQjMKM5xOHLvBtx2H3J8/rz/9uUIxW6C40Hoi2kPPabKdFvMZyWmJgdNa8nr1dvVyc3eTdjKv8sV23tazHMNXeUM+dKo3GswNOcrWd1ZNZGTBzp5+M5UNjmw23ZZFW86rRNWLIql3apHMq7JM5ot5W8yKdpYXc+RoV3EOxaiXmxAKbwfiaOlArW/JJ53TewPBL5de/8bPdULvNITwlSNdyHjSBJeCtBrRaNNRoKULrnd5Tn8UKQzcpDDc1lD83Z7P2iiy7DqE447Mfk17Q1FxVNITihG1W117S+rg3XLYB9wIFBi76o186Vjvo+qurO+m+d00vyvyPI/jOPXdm4dPD95qs49iDIEjXXttJQsYcTUAIiNRc0O47Autrr22pEb8F3z9MOes/RCsLyBwv5SyW+Gby7qnvrAeQOCWgEYr5A2yLrkAejsQOlOC6gy9lDPD6RS+cgx5PVHg+e4cGG2KAk/dfk821WbXRY2QcdrsQfknaTBeNqYxF2kXWuwFj2E1jQ3TPfk/pdVyeyIXxUtghh//RsFjxNLpnnzEtGIkI7IMEi7jFgvSgbO1QYrUfEbRFR7DvyMhVJ1Tu5knYnovs/27TZOmpQxjhssY3EuxFQf2+2rDOIyBwxikdDiHXBo8hpHFoyMzAUyR0aQYB+a89INjAlgmiWccGG48E8AE9mOB8AF+DWRvn6WVZwePYQT23cTVMAFs6JX0BF4tfSnw+dPDhnHxa3GeE4iXGGzy3GpaFGWxo/kkl1dEVe6wwMk/e/Xw8ie1Rw==\",\"08QZR5DBlFus9piig12rrnFmOJ02iC6xKP0vqT1MTtDG/lZGPSe4o+6zLng5grc3GBsDAJBlsCapZMsN3fZArX+FMv+VT9uDxa8DAKB3EDFwS/HLpG13PncmVYN7LGpPAFCNMtx5Un/rafkcp3cQbZ4DHj8Gts8ltRmHPgFAZb28HQi5BuEbHfrAl5qZ+Up6itnUomGEDJRTHQAZ9QBGX/AZHhqz/k4ERNRZYXCt55e3ecCiv/kbhHug9Iy2PvGSqIAG81JXAc+HrceyMX5gxIVFDYINukGOAVTWs0HuAwrxmFrAJ2uUlg+Nf+8GuT1IRjM8sZS6pqTJbOGH51dtjVgYim1yCGwi/8LwyPccIqEoe1Hb9mswh+VqUECDjz4NWjyMbMKUCvzGv8FUS6mwmfXYqkHukNgMULzg2dotnVz3gMfgUely8F1CejaogWAHKCgAU5jAbQShQAvTcQcaExVCLtJ6fc7B0pqkm4GENvhbqwvoOEKbPeVw6EwaK5PCytrOQpRg3XKIGjWWPAglV5qCMK21wQTnMA6szYeJWDb8EJYqofzFbz4BSyHwz8BIaT92iuohErldPtZyrCIHrVtzvKKY5RxvKIo653iZB7xEI/iyUx1Sa7Q2igNvI2+hi8nk3qZZTebOJ+A46Jed2el9QVjptIUWMbwAZTHHZ3AlVjtalVSsvuflSRUXq3WEmpLXfC6vaqEaVRH4Cht9podeGhSo5C1yMRZfFKXOWbPrJmb6quEaoykkyoPaCBSI1WtPUs9rtgxyrTxhxaAowogY1vW8V1mHMC04DKCUGPGKYjqHt6XMZ3iuS68NiukZFHWe5sVkWk7Q8CEVnIVbJY77/NY3BPvdcHAoUFm588jxPPgOJ3s7UAA=\"]" + }, + "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/\"124f-yvz8Sm38rrNXGI7Cn7zNDsEcqOI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "907ee322-cb23-42f2-9516-c4e4a0ded42e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.131Z", + "time": 1136, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1136 + } + }, + { + "_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-39" + }, + { + "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": 5993, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5993, + "text": "[\"G9xHRFSTegAUIcPcl5lmr2+n96DkoUhRog7Sy6S8tjzrzEzsOxdcKpBoShhDAIPDNktm1b7e+37u/7+W7/G/cHwdCVNbYVhVEVp2tReemNkZERKbfEC87747s5RsgD7gpgSbFFABgxLIus5sWuEqpOsynO4uBWJEyOo2hkp7fN4aREE8oOuLPaIUWGK331+Qoh33JB4d2QvpeK3oV2NfWmXeMEbND1S4cyIeNpoER3ayuMGAyduLvz3D+v1Sj9fSf+V0XhrNKzP/qA99R1i2XDmKcWvpFctpjM5T57D884g9Qvj5H7h7mczFepFTsS7mU8J4xVfDBTBkD2n0ISTMwxg9JNnSIIz/8XjlETW9+3tPHWCxhMXzYYneBsIYTfCNQWe5MJoQzVlYorze+mfu6Y33k9mSpryYLWf5co3Dc4zS2h1LXGTI4fANYonpCdNwAui32cPfUEas338WOegAZbDvsSlsMEBoZqellcf/CLJMw0nKNNOv3G5gbg+oYCsCL5jsyD9xK3mtyI3Gp4WpiYVXAqqKf/9kR34UbaWIxqdMM90Y7YyiRJndiGFVVST8jHDvufVQVRXD8elbfAfqweDqogSG8Ak2fv4Ub3s4Mg2QpvCZPHVfFkz9nRrPNADSTa7r71DB6R6YJQ7JGvqbjCK54+n+s67guqG0/B4ujaD+fDFEnzcPUQzHIYbjMD5tvo0sRwSwNJm4z0SKGodda9XXWkT2SpiyAQx35PWJRRoc2ZRhDAy5dI8BmAbg1dBknxiWqP1j0hRuA9kegiPrYJ933cYl4f/lsIO+iEViufjEfwWy/Q23/OCg4vwyAIbbaU92KZUny7CEqOo3kWylAPoLGEYY7QKfIGIYxQ29j1aSEo5hCQyDI/sLP1C8k6+k/3p6p+OtFAyZBhioQdne0gXl3TPgJJnoHdnFQ2yDI8swpsRnyyb/DlIJ2GTI43DvSYCSzqsMmRDmBSpVfHfP25qIKvnUPi1UPDfhNp1ifpJsYRQnFGC5hT/CdMxavxkH5yv9bgI0XANvPDhi6Pq8tctuqXey3bBkTDOmURsCAOpDJq2xG97sF0BaFBxZFIJP232qgOH///s/XVwZHNlEWM3gEzCE0UQnPHwT921Ol68YY0fapMFFvlSrcAduUZUfocxuRzaRujUjhifXAKGF2gIkFQ==\",\"a8gK5ZapC+FR8ZX50pM3BK572yr3w9htCCVOBEAya6SNh/XzDABhAEkrOh3EH4qxThMeEa2P5I1bPWL4i7Hqs4IWFMluvdG9N5YgxEHz7x2xadPgiGmw86dy3SOGbkMyojHDGCag6LK3A4LQ32BKhrfd9tz5jEfjLPi9sdL3rYESlZ/yYLLHTnBP4BcWeAOdn4Rp6+5JdWTBApExkIfNGoXqaAoXtsYe7EACLhRMChlHrDDZDe+V4eKDIO/GsFSuh2TYmMPB6AnXC4BhrUz9sAEYtsYenhYBMPTyFRd8nYBhCSKU1cuGf7hH+j/8Kiws29S7puO+2fvJ9XVQKoY/W5WUuyAV7XwTLgTDuAhKAVwANx+nzPo2pbUyddoae0jJlm25nbi2MgLILXvuKkrIgex08RJ4Ae4z8wRI3R+EJ+4cYFNEPTAi60nq+teQtcaOGG6sNRaU4ULqnf4vkLo1QU0nJQsdl0QZIDbOXR/rNa1Y+GoIVLoa9SbYKHObBG4UcUehYTdvfDllcdRuYxOLVa8hUnRjVnpZhMMQR/8Zgmx1DPADeBb8Hs731LxE/gaxNIaqgjEBL3v+JaTR96FpyLkBgoD+uzJZ0yxfFTkVNeU4xBChE1jervsllypY+l6Yr6nO5m0uqOEjEcXrgrGcJR1IoB12D7qMTIBD0nkZM7mj79R4mMAvBjjbsmO0u0oHpYaBmI6p7K/CTc3XcAIFE2ciiyDbSGiKsOcOtC+fDmMx4PMMO0vqHXqVbICFMVM0QVQQeCyHgEOOwCDybUaNdNJoJ5hE/54flRCB7SQR9z9V5Dz3wUUlRPkLN5lXZ7AgKiEa3LwU8ODNgXvZcKV6aHBsS4jO6giBmdh6oNbsi3Hn5E6TAG+gNyHky2b7dgLZQm8CrMijA7wWFbkGtzFEEnlhL8BQhl7t0Xb4Oj8qISqlVS/JKHeTm+v7hygWaGWMQzoGYRipBzsSy74dnPW7RRuU6gezuhtVeiy+Yjuyyxr857fJ7615AzplejBBvplVnUP8ZKkrSKmJvJa1QQEX9n0hFvWqntGMr6fWmXJEVir8MssdcKXsUVOpu+Dd8VNLXRDqPk0yROmTo1TzQoiBcKQb3nDnSID7q3paBDrOBg4q+PP5M+I96HFurNSN7Li6zg61QRWwUhNfo+d2R/7RkS0hbR1lmthwxqb0gjfp9yOFmdxzm0jdtaWSThqIaZR4eoI0hc27t7zxNEPEnTgvoHH6ET86spofCMU4GQltn9TK1ElrLHtkC2VXWTMhnjybFZVli7zJ2O5WNn4tB/z8eo4jmnNFp+qISABhyl5q/ZDJQQYrfjp6IBoaSeCDWgrwQ3SNzjTVowL1+hSuV+PkU29+QGW/4OMDyydIvJWH0RiqKtdF453qoHW3m3TB7blxdGgHGQ/tJi0lLfwUjNM2hKFrLyYvy6py4Syky025zyzkYUaSR5LoSS1YxHc5qbpAzjFIRDoGwoPXRrKFUekad8kvEINIFCKf8pIDJLEgZZS5X0JaACWUB4oH/iNkj4FVY2MWGpJYaEm5t+SJo4Sr8dwZdDsJs/6cPjcrBINatZKsbHtLgQlyynLvG0yra/gtqHHoXpKkjQP4+IBSRyZbKbhqfNJNkLvKEWNjhzjHr2zb8RupYkjYAawOgx+qiil0FUMOmK77uwnALXVGeTXD/oNpDSXkcF34nsLhZOiJ8Fp9PiJMqM/TLIacRu+9Ia0hBrHR8QEybPpDj3bNEgXOOXnvVe8AOUMGiQDWHLwCelKXvASHEPKuw318+Nx83YDnxUrlAYT3749b42+kx2z3RdRRzzuTX8VjLToF/y5O/o37kDBFFdXzXNF7nFbVew==\",\"wHDSNWdGclpLqffRUyZ3KYw/Z5eb2JdRi8MkWPR9NxanuHn3ZLXKVvcJsj3voe9I63UxPGQlciaHTnIXdaWtJpfdyr4jiGpsj5JCFiYhHtMmHf3ESiu1P+bjAxg+6hdt3jTDMYuDz2bjk9pVgwbV9FB8kqT6ljrPt9udCaysAIb4+FgS5KvrKn+u0qjkJpQtjPbGwVc35b8gm77ymPLOTcCsbAoBQMM55hN8yhtLr6Q9OFJtYM/h8Co5CMa8Clsm+4B//lMsR/LPf86Lxa0Uc4Y+XD27xsTb+NxzyoQChtfODzoGYLQubtc5niEQbDrA/UWQLe4hOrPooIMSeHjo3Uzdo9jdYjA4IGKBt4HEAP9y7legmM8oUoWLJjgcpIZraiF5NRpN3huNvYVHWyO0uCAGq9ZIHpVfgcugVNCtb+j8sXSagBFeiV0fuZVizGATt8RQ8xgV1pWZeSRGrscefTwHOaMP+oxMEXKC/ND3lQ8rFM03BMaQh1KPZv4aJCRsrCmGc/qkIFM4axeksHXFuet3I/WI4SlMTr0ZkOAar6LGeJ9RIUf3KD/C6eVwYY6E8jbMIrbWuDjM4OwD3suN0xTuyUNkpAi2GBHTIi2mEmxaQ4YxbB/1+LQO5Kpyq3Aawmz6OgZc3dGBU2OlMiT+f4CfgOHN2f395oIhlMDw8uzq6+aC4XjkZ3fL+ri2BX2fL42GPu/Hn0B3vRl5OmZZQcPn115TTXkh6lzw5ia4t5I4Zf935HnBebOss3W9vvF3HHKXyzvZU9GlrLesZ6SEnlmd3LBPFsB7nKM7SOgOWlO3pEvW4q3wy6uS3h6NLXspKahrIUxMlXCLk7epCATeaAx0O8YO4p/u/lwblRTNWCuaVQC8hRLO/xrZeJQev6cawLtFEXgrOWh6g/P+vThcKyas5AHDteozrrITYC91TWn8rkYtqobkiMtJ1mPhTO8Kd6tXzxAYb7K6XCEKTaqWe+Ps5ubu+mmjdr/ONq/Xq1mRTYtCv6t1TfVu8/Pm/AGVFJNW/GYE4U+ge4yRN97YDIXnkwLLI0q3ee8sORfRs9zbQHG82iIskbkPKN5b+uUXaUHv+GsTKXCIMTFkgcPySENCFZPM8SY+JzlJX6DdEgIstvV8p6b8smF4jnGRiFVDYaxu0BGzTjqxDG6Mzj4jomwFuYarMlWPPFAa+bkUgopZPVtOqMhokuf1asKbdTZZccqaJRdtwYXr+0YJ7omBLsuo5ijr5fP6NFqczPKT5fRkOT3JptPpeDxOvLm6v773VurdaIxDjO0wv3d002O5iNsbb9pI75d476TFOK2HEuYX4/dS70ZBK7TlrK4s1M9/76TtKDEGTN1auCvFhznZQWpBtuQNqeO8Q87UPLmjbd/DMEihIQLEl3g1NJCyohAA6zprLj3dP4aR8xiXQbVSqQPpmyDFUJSaglkcuLYEFP6wyAEv2orWjbeWVS0bb53rDqQ65H1byF++uv1oiBPDIqohZSnaqygCxWOxPS0JxwrnWojsJG8dr5lVU0lTuCMuEm1ux3nuKcxBehsmtsSFb7l2ulM0ZTTfjgOvMEBqhaY32EQoE+Dbh+BB4Pp7MVgkVc+b1REcTySiXkhGX3RvKqJBuwlvvHwlMIBYtc2NpY5bgrjzFOLGh3Bw7oAdICiGM7AQwtTLrg/RxyoIneJebIHoPtmGMPOFDKVuClYEYHTFc6OangkBHNIf0/RCNM7ntQkZa9wynEgYkJT8k4d3SKTWZgRBStReuRvDh4EksDvnMab/lAGp9X29DtZp8qybhhAAOndD3YuQSbTR+7vojriDcRScC3qQ8ogUpCpPTpnTErJx6b+CISekULkzbQ==\",\"hig6SIqy3EHHn/RwgjTloXg44UOTwBGMT9VF0NHlMFlopR8nyjLv0psUVUzzHumdBwNHHrwpQSoFKQTW0Q68NyP4XtZOCU4NYP4O4GWOsKx1xN+89JjGCd4+UolZGCIu52YnaeINnKlk+U5ksGJYIsVW90ijgQ6I1nMBjTj7kIlLdUgnu3Vhr0ECaIN1kAiiYnc6jst+NOtjn8R9xXBcjzv5JxwZo5ZhpnOuG23immeCEvNeHJpOjFAmMVmXkqdjAq4pWa9Ac6xnVUCId45ZP3IUeaNQWdDn+gUtonHE6aIG0mhsrbgwOvIGxB4TUJg3j4ynhDp4OHD7AtzhDTgwD/vdBLgEqsU3rhPwJnOkBXBYUt5LsCdLLCHIM83c8VYI0Hm35xiveb1lzS9G0Np1Hmnxy1qg54hb65tWYnxqkrR2TofUoPhCPmCxGTXrIXGl6t3iwO0LLm8ETgxY/wrtsUThLMP68OgKXgfeS71TdKW74DHGPXcjyR2PASyLmdhijDLPsYknXisqNyV3YU3XbW+0EdJ/b/of80qWxBMdI8I3vNECY9RGEF0buWZPBw50uNOW5G3P+45ltljOY+yxnC9mA6eHtZ651Y6wMRQuYDtxQ/WhA6ikD8f4x9tg7qFtOsX7Lbf2iCXcO1TqfUwgdWtell81Rl8vyqgHDD0k2tyKn0y0/AzQl62n2hbTp5ebLaZDjEGeG93KHSJDQQwugNBkAFnEIqTPAaGiNTP9RxUElgRQFF3AIhUL7GjdB3mg+46DKZPyfuTGWAL55J3M6STXb5osAjJYcdXVZmJxuwgl9YOxk21PLPH/g0QxirI7iTOQh7ESJKJsvjHQrniQsOOy1er5l9Nkmc0W0/l0ka0Wq3WGMGk5IX5K4xstj/iOZT5fJ/OiKIr5uljm6zwfC0PMZ1UGH3xvHN4+fzHPklVRFOvVqpgVy/X6Zh9ZlhHoSa2Xz4ekne0yP/d5PjdJP9Z1zmy1iOdU7fdskb37/iy63VeWF/fnezZf+mAR3R6f57PklMsiX8/yWVaMIpvyyU864tvgffWs++JB9b6oDw5LFJa3HmM8BB2z1NtAAw==\"]" + }, + "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/\"47dd-NNhF1Dijvxufeo1VnwX4cJBO9+M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4ce3f80d-96ab-4a7d-9f63-708f3bda7927" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.132Z", + "time": 1122, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1122 + } + }, + { + "_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-39" + }, + { + "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": 4424, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4424, + "text": "[\"G6s6AOQy1er17e0LoDwwQxTh0mZNSHK6jA0Q0ZThoUAeANpSqej3rfXv8R/i2LgIF8cqMsLHmK6qFgMrMLD7Aki3qnto3wdiFSJwhkHGqXkBVHGREcr+5bA8e98WIeTFtdtP4oJGo8Dp6emDDeSsGu7HgbY2mDCckcDjvnPKBuRo1ZEiz8/1vT6Y4QL6mkiun/9YmIIZ7YnhPJXnRdz4YrwZrbEH5HjN5snj7jffq8ETxz8cvaBIOfpAk0fxv0tV8A8h/FG/qOFR+W/XTdn166orqrJo6pD9FHsXeFT+G3yVyRKQb3oscUFLp/AQaIILqy0eH4Wdh4HjOIduhHD529v73T+3WMxFUFzfvSva153yLGvWar9O+wYXntdtvt9+3P7yePd5FHV1V9T7QpUVLr+V98Qvo67N49gzclRdGB2anstoFBc0fnuaHHlf9qsENxPHU6DdBQVKPI3UF9XJ7MklEuENRJGj65u/uQ9W0ymmlrv/d6+WHPz97xBJ+Mwd8D2kK/gh/r34X/pbbDSIXNUSF4y5ywoXjsRyhkdxabGcqibLY6Smcu36+bned+NIeW8Odtv4mbr4j7Msv3GkF7Iha/dB2S12QUoco0AEJD+9PxFpXDjSaTIuzvCChwNwsR0UbJc76jeOWgV69hx12ojC3/ubqLnKy6s6varTqyxN09VqFYfxw8PuIThjDxG2Ikp+/vY0GXcHOImqZnaPNUlzsKOxmlzlFVnf4ip7TPry3E62O6MoKpbfl27ty7JQxnDhPANp6kMvSO2ztlz3GXVvyLAS4J6Xg3+qwWgseQYCOS6GfEMs87gFDG4mfNxEj5aePNN/Te9UoFd1vi7X1JTrrszbtiR9YfmrosB1h74M3z8KHMbDgVxsbD9GEu9na409AP114VArbuohvNTu/Uhc3Ugr7Ytyx6BcDTZwoJHnjQ8U/qmcUfuBfLS6icw95swPGjYJbxwfKETMaBbvDfXKDLOje1J+tLABOw/DbqR4l4268bRovyxpmjZ6sjUii9Y0/Kk7Td4cJPP7l1ba4M5wkRagJjez2z/DBv5NDCN9jMn5ZiJmDio5794LlO0oiX+RTxi8YYg/bs2Bvds+Mg6XhcNlWd1ICzUEUIrVjWKjUxiVVi9+L71MLdIeHuV0iGhVERPNi0jstS7Ci5MWsHVudOA=\",\"SGljDw==\",\"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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-F6JuvpDYMzE/P1r8FkgXH9srqwY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5d3d65e5-77dc-4f70-bbb9-cd8aafeab886" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.134Z", + "time": 911, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 911 + } + }, + { + "_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-39" + }, + { + "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": "[\"G3wdAORvr1pfv+/eFeQEq7nj83bvXk2ypZNJsHh2yMpIC8hlNFytlf7f2FTKxyguHxkf47p7JrC7T0g9s3uPOBck9cA2ACijBBCoKHmJUHEyj6Ha3W8Q4as9prvHHo1Gge3DwxUdP3pyLx2pQMjRqj1tPdHQ0nHYeXLD6kVdsLD7V3DiYvfXrw2msQnh3CK5gGsOxpvGGrtDjpdRvvnD5hvfqtoTxztHBxQ5Rx+o9Si+9zRiO6/+g/I/htNyOl8sNlNaLBSdhR89OWCwInxStdGKOEkGwzUAecHRRI+WTuF9oLZpdtaJs6HA4DpCjk0XqqahQt1YQkJPgMJ2dR1vOcraRIFn+JE314gC62a3I5cau20Sid/bh4dbai9i7A4+enISB0tpdckuAf5q6aMnZ9Wekp05kL1Se+Lgu+LDBtBLe20RoqCDnO/G0dacYAVVir/nt3BZbffv+e3AfqIHSzTjaRUUrOC/IPAgep/+7MidE4n7kjpAZ9eNIeKuI7aAQ8/ugH6B16YO5JiA+86Tu1J7An8Eib/1VJ0gSryPHL5LhDUk3rYvWEjwsKKlXbpbt0dN96pNOk8OVk/gnLSlFxospa0pgIEVFEtp98b25In5s8jzPM/hjz8Ar5P6npO8kaTu7hLeB2fsLjGDtFX6fVAuJBMOLGeDgYAXNpeXS2mjtEtvthYSrCtVio5V/NGTS5YMhDayD8rB0gFHeKUCwRLOWa9UILiQdHvVQRqav99fNxk5WFbfFrL6kbZ6eH+4Vp3rRmlYQS+tVqIEoBAKLeHSSjQ+DsQMclxpJXq7OcLb8l33ytRPGXtl6ie21iGvJYoBpsHW/W01nYiHnIlEIQcXkKyxRMFtjrRxqSphxyj4IRJ204xxsF1dc3loVcZWX0hOHC2vkHK9eXxAVg1YwXY7/dNKxRAlrTikX3SxcmmSGPdsKUPwDY14imAF7EZUJb+UozFzH/SWoWBlZUwoUT2EMEOAjMWVSEuEyL0R3DmiEEuH/a1hBSuJvGC6o/BJOaM2NfnkumsWJhKNjl1qZfN68xhN5BIY4yT3ZqeyHdQtUraiTG5ZPvutF+HR/tbxnoPEN+sPcaY4cuijt8sz+V0IVtCDDyp0XoDEvFdNIgeJgONKFCDxinCGHDjVPZPo3LR94aW015tHqkKqvDc7m7Rv86pgMQ4sQVIREnKucRbiqaKqgRN19odtjlYi\",\"h3PszSfgfu1c4yDlC2F2APlUE/BbT+nZE68n3nPYKlN3jgQE1xFEO24L0S/Abq7ff2AcSLfu8MDNIlqtAkmM/APvlN5AGHbCz747Uvo5It7TvFeMkaf6R15N5qN8sZlX41l+aPSOHqkK8A7r3ybFI5FcmZjgKYhMa2MD2eBfFKul1KJhVRE8L5MZzVCmZBl05Em5BaA8OBIGIY1qL1bTyTVXixkMLqmYiAN7s/7A3tc+KGczMZ6DCWCarCHNODBvXcoEsGzGgTlVNhPACI5iMUVB56LCjXJq7x3eZqa4hAlgAN4mvOhtnbc5rMHSJh/bmBZFWWxpPsnVAZpwYOGk/+wpwMsHqn6YZgh2/7/ub1SgozoPp2VRLRaL6XQ2VWi1gWOO0raDTlm2q2uF6i4NrfizMgEGPsrGra2tfinwP0z7PID3V/UrBfETAQBkGbwjpWmLgCb84nbuPu7JqG2sfnwAALOFdMGSf5Vmv29sKgZnQKoJAKLxre44aTi3tHzJMVtIUGxhBWx/bjqyFrYIACLzC65DZEXiexx5kP2t9oNmVDXyBnzHSl00l3emfc2Xf5Q2wewRACDAdvHT4yAhtiANEuESMiWlRQ0O8lRLwAu1GUtp/WA5n5RI1BCmbd9qMJGZErkAfaxHYmFfVOj5S3EXf4ncfXQRzYe4oc2zQsJUoQ0jmsap0ZLUxJv9vAsNEIt0rLm3YpjTZDMt5jNS0xIjbwLiieat0xa/rUphYuHZPZtU23E5nm1UoTHn82X2pJgjYfcwTIlpRWXL0w0S/++SzigMrWaK5Y/OJSoUbZKgukShYlSMQuLW9S0w6kRJ7GHgsEF0ddvLcZHIK0qHh8VpjwOPEB7XRPBVHVSJ5AK9nQ4LDFhBrCtWXWiGqA8H3RHs9graCAlME9A0QToAO0vDkDZeJx+UG5xkvCPlRZYo8XXpZhhKpBi74zoZGpsbE1JYD4VolNOZiOftlm3ggAQ7iCS1QZhoOYkDK3PYGKnvlyLBwZD+XTOY8RhgtL4urZhGLuToCpJBkBd5dXaY11BC34ze3Ly7/rT29u5zXFN+t/5n/fLDvTpY6xdv6U34v9HcHMOekaOqQuOmdWE6WszK/FadJ5dNN2VRlfPRUI8XxXC81YvhfFSWw/liXhWzoprlxRw5ToZneRS9XJoSiuA64ug9okisnumc7yMdDczZR9IjVfDHiPGWIx3IBtTwiegG9DjTnoQCDWTz84/jkcbIkXylapge9Lzej4WmRbkpp0NaFDQcjzezoarmxXCmqKimSm8XKgOdTatAKHo0fn1qHfEtyJfXUCEFBR6z0mUy0/8pXSaTi3J8Mc0vpvlFkef5YDCNWICR45an6bHVGcWE82uteaS3dU6tcQIcRMpVHQiMrOnMC+mZp9a4R2YAnnRqvzMRUWeZvbGaXJsz0osjbazWyHlH29ZjjK62S7zl+D9oKaiuGk0=\",\"Fp1BVl/5Irh4hKU04PhgAccMCbCr4nhCUYzGc45nFMVslk4izqFdQGP12zWBRR0q27EVhgc+Bs7yx5adednYrdmhX7vGThf/0ioGBpHMvFo5yoTEbtYROk8OQwNz9c2vbLvDxPs/4gezp/etsihQq3PiBwiBfTflwrkmuD5acuhSiLjTWTFVj9Tdjb6amJP1R4HbXYkScdAk/dxThcEjEe1GHuDClxU1GDGbGUlCWU6Dgue5iMaixxOKSTFWut9kFHutmn49wosWBpnnr+oUDN5El4UtBS88dWQReUaRjxeU7LaYpdNvncyqq3OPuptxy9E4nY/uNo+9ESekz4ECtVPbgBz3XVBMfnAdRQ==\"]" + }, + "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-vdJGEpGjD1rRtYNEWm8SXPFuRPM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3e959052-4111-4ccc-962c-ee2b7281f4f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.136Z", + "time": 1233, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1233 + } + }, + { + "_id": "65e8e1d008224b991ad916110c8d9d43", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1850, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test/draft" + }, + "response": { + "bodySize": 800, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 800, + "text": "[\"G1wFAMTKdPX6bvULszpKmKzv4kvJXArCGkAEyaUZscHl+b8mmJ54BSWm3Tu7XkSCRPJsfPg3q7CJ5/NAmupcTDB6SDwcOLpu+IH6gQ7ewUCIBQrBXuhMfythhfcF2GT6kFZ8DNik4tduHluC2dkzk8K/RFcYrcBCLcP86hr47XvrZWP59GzqVmU52W0Xq2bWYvg36+VmY/kEBVGO39wCdRlmOgR6kFqobSdlYAMIBpIyQSFmaaIVsXcf3n18W20qIDsdJuTzuf+jkIjzhdZWCKaD5+qhTcSsyiMpk8LHv8owCNqqAxJvfTsYDyd6WE6Hcz2c6+FYa10UxUjiq/pDLcmH/aBAr0BXCsIgevo/Cv+HD2zeR0cM04GCex8dIvafDW6G+fVHYcxLko+BYbqeOsuaxPqzAs43FKT8+v3MxaYTTLDWuWmIWRqfvA0CA95S9CHO3BW1D/szvQptFigcLFcpxeRlOHYwsPcpeF7TmYTs9hwJ83lep9i28kGV85K8L+OVErmKaLy8uAoOCiE6wmXj5kAXS6WkMAIGkwEeYGZaKzzCzHTPc9ck1Fbqoh2uzMJKRFC5px8tzCmmc/bOA+3ZPv6zKcX7FW045Rjiwy7u5qsmhg9hgbKfg3dSLP7HjIFOzVnw5eslONHl8i7Z38Ww83uYjlrJdP2ntOu6i97ny5YSzLg/f3XjL1S3NsDgEoMcBlygDgJcdznZpwbdg1peLmejyWq1Wk2Wq/l0OZ1iXGc8HpXldLXSy+l0Uc5n874Pq5WSGQYu2Z1A4ZIZNCRl6gE=\"]" + }, + "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/\"55d-Q2sL5hgLw8jLHQIydY1NlKt3mkM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1a1d0062-f9c1-4cd1-9d50-2a906b1c7d02" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.137Z", + "time": 910, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 910 + } + }, + { + "_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-39" + }, + { + "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": 4165, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4165, + "text": "[\"G5dXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dvECbWhzZDuUVlIQKPDr/1djntjOXCCho3uOkyNPlMutTBBT2VJi+T/PAtvbLfvLKaNj8+OHuryeEquWdQwpPFs9QhRScx5OD6ucrBPjRCt7VZ97tuXte5MgY5kxmecZgGeh2cN705Gah/smeu2eg4NOS4/IAGrS26hU0vvidx1PyaM2ItUOlh66jYAYvTEID3NzfP2y/rAHabUAF7dC1qut61B7M67wVyFLO4jJKYaQRLuRh/W59uz/3f1am414Zfb2cNIyzSJaNyKMYxke4zY9G5mqv9RUocOGNdVC9gnLrl5NF59LrzdsBKRyv7DahgmA+r/UKW6WRiLJi1RRLnoEBedcRLkcePn+Pll+JaUnsseTgYWFHeWes9IG0xvbc17phrqzWhBBy5nb/c6OQv8hOBi5reUD/hVvFmw7ddPZmgcYWN0/ffiPJXwuv6fKAfjpRcjLvwrTEF/IXeSoG2sp+yWGYaaIOPDi21W5cCwyWmMkFE/JHMjuiZPJ2vZ9Q8jpS8jqCwrIfIT+zcRqEEKJkRWo4StaVy2BwaIMaoptFS3xZrkxzWtuLRvszfFwqSWNCnXNkV5EU2hJCSHWaWJGqIqYvFYv/o/DnJebOqYO+wQ4Bkl9HWPeHXVCKoTHx2zE+vqn1OJvOaj2fB7We1rp6GfBQUMbcW6n1bDqDkQKeUfv2x0Br06P2Haqd8aotn8OECu6skWaPzq97rro99qeOe4xgpJApR5esoXqlJVqTQtuOLigtrlAlFCT32HEEcUo6RZan+o9pMmfhPE7mWTjPwnkUhuFsNlt6s9ltd94qfZjOYBwpoBO8A9IpoKP+mbH0jrBI+CcpkNv+CQlbFqeiLBdZmaWLpE3SRRNhsmhL2UQtT6RoMwSFi3jwdKSALydl8836qguqOs8kWhZRhtFNoT8aMLEuCJXOeh0KgXbJPlnfgjl4d2JBoxtHCtj/9a3pMGgwK9qCRQtetGyRxJIvSibbRZE0jciyJM4HG2QhGkju0wYj8Kw+Xk0W4NTp9LYYqL3y3ZGfGGU99eT338lMwI0vg79JOCP/zM8qbphJVb0v+exC8xUd\",\"ztySHQetwQ69V/rgWICDr0EdeCBM3xvtAmF0qw6BOvCnHS+Fn7J/NmqgpIa3630NfEDzM7dEuT9L/iJ66Do2ZTSqJbU1Z2s63FaTmNrsZ/gIfRyJ1167lSIxl0qySWJPvpNTLZkWg9fvvxdM2nJV6PBNVizhsLEUS7VJrel9DJ8YHmm+npg0Ex4pHnCJjIutuyYzkdVAbqY8juPIKzcZqVChzrSrfMfcLUd9UzF6Aw11SsCo1N3nD3ebDx+EFPdAess9Xvh1USaNYJKlLWuSyx+xVutP36+5P879cYDYB/Hg03jwRzxkQXZ3iE/WdPRhPHACoMQkjYVELUwQNNIZomirmjKYNyP3ONJHGzRH5b3LF94p2QzDhFQhEsmIAaeOOEBV69YCgkARPRIn5wQauoGli9RaI2eSv/7CO3FA+NAyod0ZEVTYxWIOZ5tnoi2zMBWYquvUIKl8y1U3WDQUmSrvobtlEF23Q4xBKTsyVLBlIFGA3UEFnTkIOL3o1kxrgFPUXiNyYBdmqWH2BurXRhGojGmbBfV6gyKMi+p01L9IVJS8bt1bXYYoufN7kZSsTZEXecaySoT3AHHQuMzvLyYAC85GPlrMnYatQ9S9PEYohDBVPGohcrtRKm+VFlNn1xIoLhk3D2faCt21U6RpBnUQm98UuHtexGFWtKnMo0gUBdUumNca1g1oI9ERbpHskBc/Tvj1ns0zkpv7jSPGMpqNkVhJrpB05qDEstbfzUDE4fwYyyAWUSxublYf/38IlrXeIZKj9ydXBUHDxbPz/IDL1tgDWiOen3WYA5JGuEBJ0ZlBBh336HxgDYpZJJEgsNhEgotlJbQQfEczWDx0tA2Q1ljSG4vkCDQm55a1zjnaHTDIe/0Rp/ShQyJt4QfKzmdCz/BLF3/EWud/FIL6cbFtSBKlCSfeXhd72u2ONJ0Rz0nBdsB6qGrt7VX3jTnyH2fb/M9nY27ZMCSgpCRGmknVTcdaAxyZopzOEfrZeEDujCZ/kckXZL9jlBVZW2ssscil0oesrJpclD8SJYkkwNJJnQf9SLVnqyDetC/iGtWbZBzhBTTMKUPWSh7WH9erzc3+Ni166DqD1Xy7+fBh+3Wh01h/u9883Ow320+9F0TNxHuL3jNGRq7cz3I/C8B8wIaMMPnBeRHUH2ywKeFEXc7T1MDlRza07zpzKVHhKgJFnGLx8SbGerU+oayljFw6SKMZL3QaxHfyntNTkVaMdkaxnyIWN9D/nSKWC9t9vr1d73Y0rOmFK/HjgmryVkRZKXiCjatHDXN3s/mwXg2TNwWORY6e/BGJN/Su+1rX4M2/2b14LoXpa3gDIwUhIs1biPwLkbnNJb65JGsujUxjhz3yVzhi1xmo4GCMbK4IFI4KKjiajsNIYRunnG9K3navSe/MYKUZhcpTkXxH+5UrSQbicAH91zkpZqG324/3H9ZsF8EPrZVlDFnMRVsW0bBiW3RDj6vul8sponcGO4htJoqgqugNmB2KO2EZgjbnYaVMa+uG9Z8mLnkeyYQ3BcpBGzz+TanTyUkBGSUJMxQ4L4hWYocbtm+XsdaHqDoyyGRPRZ9PniTy7OP2U3DzF1RRRG1c5inGSXjyx8qH4TFk5HOkUYHqiPZ8GUvuUW6SSztDdJTag66f/9ryWKYlY2EUxdEgC0AhEH5kGSYM8gshhcSCBBJlIUPOp61RKnuIRRcxA6K9eC4aljAhctnmohQxCErAqFVoSc/Sloe1w9oiQpKkEKEAiL3S8S8biBZ10WyLMMvSqGiSjBeRrNhFiw71ZFYsqhCodFfCLiB1WblvPFlZBnRB73rpzgSSrzMyEejpH+sqPhmJiN/U8lOutg==\",\"+QovUBVxRuEKVRpSegWziFWxzLWWyg==\",\"xYhEs22dndlupo0+DR7JW08/DeVW1pxOvOnWulot5VbYoccJk1tL5eft/T9zRovybh65s4uJQJ58aGVvNPRNdYRSFD3xZGbPbdPcCLeKaw8VOOcMYJvAXaPdSOGptczkoPr5iI+h8fXixBF7HgL7/uH0ueE4lrPb+qJtGIfnbEmM5hGruM1m57n1pdt1I4zetlo+P1HCFvM8kqV8hqeOX5+4teZymUTp1tyNbFIfsa+lQmMeNiUzx1rgi6qb+robKQzq1mSNJF7L7s8qcS+iJFuysixLVpRZUiSs6CqXF6XLLIrTkIVplKd5EWEFGwqzZxpshcgoZrDoKVVqJ7uDe9Xj7sQ1VCD5depmMAdjBUn1RxzYnFjEcbkZCo9tj2awF/BkZcvEJIEYjG690f54kxPhwITPRm16HmjFo4cK5BLwxkdKwR8N5Q29fpfUSUfqPY5rPxFrVwFLFzz1SLLLMzUj4r7wLM685EyBuTTiPffHMZJBI+bBJ62ZNz106IYHmvoqK+pYpzhxnrhG6gdvvZYEILGg+eiTMI2S+bwk3jvQQ2RBi+Kneaiq/WaAFZsUYZ0kOo+IfTxbIyf/Ui6Iz4g1OMPYXU7kcYFXdVJeG9hVwf+S48ECpmH2LCmWxUriIovCmI0WG8LzDrCpNRIcNc/LmKTGg0wsFlQNTe/u09A3aOk1XsiqEUjbC0i893Dj6LWAeZGoRPm0IxjptsdVwIBmHaamdUcb7VwNDi1IZCppOaTZQOPfwZoOQapXwIE4Y3Sn1k+dwEuRT4hWOo+vzbjwtkKm+8YPpHiOBwS8icA9yVliGV35IOEjLfWOqOg0fCKqx+bKcUudguzbCyg6WJmdsWSZ/JPFcVEUUcGyiwZV47we/qfiHqsL8QyylxdUlCUd9UzyUWIaZE8aqO9gWbFZFMcl3Cb9wnHRHO+tOcF3zkS8ZUqsRsxDdBOh9dcErBxkZHZIcsdRz13hKhNssYneF9YHoAmG6VbVcYVVUonzogjInlD647R77p6vzNFzf5znfnBQgbS89UChHzwwOns74Ag=\"]" + }, + "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/\"5798-ZwyhTetdwpBlYDy0abdq/iZR/3Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4547d573-02fd-4275-b8bb-144ac99ddfbd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.139Z", + "time": 907, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 907 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"5798-KwKIcv4TyO6uxp0gSMRgw6Avd7Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b5bd0518-6e51-4244-abf5-870b3cf7008e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.141Z", + "time": 1326, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1326 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-yrlY7MRMub2tsy7vym0mJJ6gf4M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "eb303fb7-a3fb-4419-991a-adec7cde2eeb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.143Z", + "time": 892, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 892 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-nITxp1jaTXAqrAVcmzTgFLoFGcU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0e889368-5a09-433e-85dc-f20668b6f9ca" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.145Z", + "time": 1225, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1225 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5dXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dvECbWhzZDuUVlIQKPDr/1djntjOXAiho3uOkyNPlMutTART2VJi+T/PAtvbLfvLKaNj8+OHuryeEquWdQwpPFs9QhRScx5OD6ucrBPjRCt7VZ97tuXte5MgY5kxmecZgGeh2cN705Gah/smeu2eg4NOS4/IAGrS26hU0vvidx1PyaM2ItUOlh66jYAYvTEID3NzfP2y/rAHabUAF7dC1qut61B7M67wVyFLO4jJKYaQRLuRh/W59uz/3f1am414Zfb2cNIyzSJaNyKMYxke4zY9G5mqv9RUocOGNdVC9gnLrl5NF59LrzdsBKRyv7DahgmA+r/UKW6WRiLJi1RRLnoEBedcRLkcePn+Pll+JaUnsseTgYWFHeWes9IG0xvbc17phrqzWhBBy5nb/c6OQv8hOBi5reUD/hVvFmw7ddPZmgcYWN0/ffiPJXwuv6fKAfjpRcjLvwrTEF/IXeSoG2sp+yWGYaaIOPDi21W5cCwyWmMkFE/JHMjuiZPJ2vZ9Q8jpS8jqCwrIfIT+zcRqEEKJkRWo4StaVy2BwaIMaoptFS3xZrkxzWtuLRvszfFwqSWNCnXNkV5EU2hJCSHWaWJGqIqYvFYv/o/DnJebOqYO+wQ4Bkl9HWPeHXVCKoTHx2zE+vqn1OJvOaj2fB7We1rp6GfBQUMbcW6n1bDqDkQKeUfv2x0Br06P2Haqd8aotn8OECu6skWaPzq97rro99qeOe4xgpJApR5esoXqlJVqTQtuOLigtrlAlFCT32HEEcUo6RZan+o9pMmfhPE7mWTjPwnkUhuFsNlt6s9ltd94qfZjOYBwpoBO8A9IpoKP+mbH0jrBI+CcpkNv+CQlbFqeiLBdZmaWLpE3SRRNhsmhL2UQtT6RoMwSFi3jwdKSALydl8836qguqOs8kWhZRhtFNoT8aMLEuCJXOeh0KgXbJPlnfgjl4d2JBoxtHCtj/9a3pMGgwK9qCRQtetGyRxJIvSibbRZE0jciyJM4HG2QhGkju0wYj8Kw+Xk0W4NTp9LYYqL3y3ZGfGGU99eT338lMwI0vg79JOCP/zM8qbphJVb0v+exC8xUd\",\"ztySHQetwQ69V/rgWICDr0EdeCBM3xvtAmF0qw6BOvCnHS+Fn7J/NmqgpIa3630NfEDzM7dEuT9L/iJ66Do2ZTSqJbU1Z2s63FaTmNrsZ/gIfRyJ1167lSIxl0qySWJPvpNTLZkWg9fvvxdM2nJV6PBNVizhsLEUS7VJrel9DJ8YHmm+npg0Ex4pHnCJjIutuyYzkdVAbqY8juPIKzcZqVChzrSrfMfcLUd9UzF6Aw11SsCo1N3nD3ebDx+EFPdAess9Xvh1USaNYJKlLWuSyx+xVutP36+5P879cYDYB/Hg03jwRzxkQXZ3iE/WdPRhPHACoMQkjYVELUwQNNIZomirmjKYNyP3ONJHGzRH5b3LF94p2QzDhFQhEsmIAaeOOEBV69YCgkARPRIn5wQauoGli9RaI2eSv/7CO3FA+NAyod0ZEVTYxWIOZ5tnoi2zMBWYquvUIKl8y1U3WDQUmSrvobtlEF23Q4xBKTsyVLBlIFGA3UEFnTkIOL3o1kxrgFPUXiNyYBdmqWH2BurXRhGojGmbBfV6gyKMi+p01L9IVJS8bt1bXYYoufN7kZSsTZEXecaySoT3AHHQuMzvLyYAC85GPlrMnYatQ9S9PEYohDBVPGohcrtRKm+VFlNn1xIoLhk3D2faCt21U6RpBnUQm98UuHtexGFWtKnMo0gUBdUumNca1g1oI9ERbpHskBc/Tvj1ns0zkpv7jSPGMpqNkVhJrpB05qDEstbfzUDE4fwYyyAWUSxublYf/38IlrXeIZKj9ydXBUHDxbPz/IDL1tgDWiOen3WYA5JGuEBJ0ZlBBh336HxgDYpZJJEgsNhEgotlJbQQfEczWDx0tA2Q1ljSG4vkCDQm55a1zjnaHTDIe/0Rp/ShQyJt4QfKzmdCz/BLF3/EWud/FIL6cbFtSBKlCSfeXhd72u2ONJ0Rz0nBdsB6qGrt7VX3jTnyH2fb/M9nY27ZMCSgpCRGmknVTcdaAxyZopzOEfrZeEDujCZ/kckXZL9jlBVZW2ssscil0oesrJpclD8SJYkkwNJJnQf9SLVnqyDetC/iGtWbZBzhBTTMKUPWSh7WH9erzc3+Ni166DqD1Xy7+fBh+3Wh01h/u9883Ow320+9F0TNxHuL3jNGRq7cz3I/C8B8wIaMMPnBeRHUH2ywKeFEXc7T1MDlRza07zpzKVHhKgJFnGLx8SbGerU+oayljFw6SKMZL3QaxHfyntNTkVaMdkaxnyIWN9D/nSKWC9t9vr1d73Y0rOmFK/HjgmryVkRZKXiCjatHDXN3s/mwXg2TNwWORY6e/BGJN/Su+1rX4M2/2b14LoXpa3gDIwUhIs1biPwLkbnNJb65JGsujUxjhz3yVzhi1xmo4GCMbK4IFI4KKjiajsNIYRunnG9K3navSe/MYKUZhcpTkXxH+5UrSQbicAH91zkpZqG324/3H9ZsF8EPrZVlDFnMRVsW0bBiW3RDj6vul8sponcGO4htJoqgqugNmB2KO2EZgjbnYaVMa+uG9Z8mLnkeyYQ3BcpBGzz+TanTyUkBGSUJMxQ4L4hWYocbtm+XsdaHqDoyyGRPRZ9PniTy7OP2U3DzF1RRRG1c5inGSXjyx8qH4TFk5HOkUYHqiPZ8GUvuUW6SSztDdJTag66f/9ryWKYlY2EUxdEgC0AhEH5kGSYM8gshhcSCBBJlIUPOp61RKnuIRRcxA6K9eC4aljAhctnmohQxCErAqFVoSc/Sloe1w9oiQpKkEKEAiL3S8S8biBZ10WyLMMvSqGiSjBeRrNhFiw71ZFYsqhCodFfCLiB1WblvPFlZBnRB73rpzgSSrzMyEejpH+sqPhmJiN/U8lOutg==\",\"+QovUBVxRuEKVRpSegWziFWxzLWWysWIRLNtnZ3ZbqaNPg0eyVtPPw3lVtacTrzp1rpaLeVW2KHHCZNbS+Xn7f0/c0aL8m4eubOLiUCefGhlbzT0TXWEUhQ98WRmz23T3Ai3imsPFTjnDGCbwF2j3UjhqbXM5KD6+YiPofH14sQRex4C+/7h9LnhOJaz2/qibRiH52xJjOYRq7jNZue59aXbdSOM3rZaPj9RwhbzPJKlfIanjl+fuLXmcplE6dbcjWxSH7GvpUJjHjYlM8da4Iuqm/q6GykM6tZkjSRey+7PKnEvoiRbsrIsS1aUWVIkrOgqlxelyyyK05CFaZSneRFhBRsKs2cabIXIKGaw6ClVaie7g3vV4+7ENVQg+XXqZjAHYwVJ9Ucc2JxYxHG5GQqPbY9msBfwZGXLxCSBGIxuvdH+eJMT4cCEz0Zteh5oxaOHCuQS8MZHSsEfDeUNvX6X1ElH6j2Oaz8Ra1cBSxc89UiyyzM1I+K+8CzOvORMgbk04j33xzGSQSPmwSetmTc9dOiGB5r6KivqWKc4cZ64RuoHb72WBCCxoPnokzCNkvm8JN470ENkQYvip3moqv1mgBWbFGGdJDqPiH08WyMn/1IuiM+INTjD2F1O5HGBV3VSXhvYVcH/kuPBAqZh9iwplsVK4iKLwpiNFhvC8w6wqTUSHDXPy5ikxoNMLBZUDU3v7tPQN2jpNV7IqhFI2wtIvPdw4+i1gHmRqET5tCMY6bbHVcCAZh2mpnVHG+1cDQ4tSGQqaTmk2UDj38GaDkGqV8CBOGN0p9ZPncBLkU+IVjqPr8248LZCpvvGD6R4jgcEvInAPclZYhld+SDhIy31jqjoNHwiqsfmynFLnYLs2wsoOliZnbFkmfyTxXFRFFHBsosGVeO8Hv6n4h6rC/EMspcXVJQlHfVM8lFiGmRPGqjvYFmxWRTHJdwm/cJx0RzvrTnBd85EvGVKrEbMQ3QTofXXBKwcZGR2SHLHUc9d4SoTbLGJ3hfWB6AJhulW1XGFVVKJ86IIyJ5Q+uO0e+6er8zRc3+c535wUIG0vPVAoR88MDp7O+AI\"]" + }, + "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/\"5798-RqcUh0TNnksWEDlUL8iY/TIys04\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d8494927-5e9c-4b55-8e96-d6cb18b9d4ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.147Z", + "time": 1120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1120 + } + }, + { + "_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-39" + }, + { + "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": 4457, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4457, + "text": "[\"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\",\"5PRxw2YJE8eTo5Qq3rBzst6+vjat9Q==\",\"yXjLMuKPIWCkilg0m8pJowrMGOyDQZbsJoM6DBaAhY1IwwniqRDAFTFoEksfAqWC+bIX8HZ0DWmy994Ci8sfn2HyrnEMrxQ86c388KrwSU0DpjuA56BbuC+mKhxmYOfhUPNdHoKVWNB+YKb4jOG+yOhT+seTeXJ2IBcuM4F6dvQBBM7n8CuDJqIkM6DyjxYQx20Pv91KDOqSSR9Y0LdvbVHxACd/B7DZKpAjdrJzdvQeYiBv1NgAjoLTdKSAigDofqxGCpC+bQLh1nY5cuq8++9MyofjA8gycVA+v5d8GdB2hk9sio5Pgbeqore8LItNmuRlna3V3Ahaenqr41b5lw01UCUasuPmoOaMpuBLieMl/hv6jD7hEyUcARbfyQ0lG8+5t0x3z4H8ItepEWoeI0Xakb1/enp5/NcOXRPnZR3yy+4fu4e3f3x8Ysb03t6mP63CyCOYC3KUTbBuT4Wn0wqrK2q/Ow+OvG+7mp/goZc4ihUKnLqpBgZ5b+gyis4vfjS9804u+nDU7uuzn73CieP+Iz0eq6sdlKeaYL4EXoRXOCd/SVB0NLOXXNbyk5r0jzBN7xzpSCYUbeboqskqPTbo1mMsYzWxzrtP51HLRsg3sk+TekWKAPXrkizzfJ3X7SLN8/UiT+r1olatXKyKzSahNmmaZcLhW6RkIIyanZHGne0c8+vkdra6yfKbIrkpkps0SZL5fB4Fu399fA1Om242x4lD6O+ggtebnAftcjq5QuJ/BQf6spZeK30Pm2kuWJUo6D4P2q2EdZy4IfeSCvOc76CNIhc5HadwCdalWuZf2rbqaZp6s5Oo4+6FOCPMhElBojWInOMOyG/oQg2Ez5HHkyH3/+Q90gp+hdyXsaJRL7r8qVGsVr1zvA/dhpq/rCKrpYuM+ku6KAOvYGggP+/Fn9qzFZO9DI5nrLKsyDhesMqyZCpxfhcK8a9zzgS7mY/g56Y6SDnqvVAm633Tspg4jvphXIAYWNYgk2bbrFh+LrKtEaUieFBi8Sko1YiU8r6ba4mV4PoS3/SBXgdpsEIlLzM/xxTGG+CtSKC5pQtOlBaYdcH+obPElhdaWuFPJM9lPFWnWE3aWXBqskXnINY9uK2Q6HcAvrvTLN38L5RLWxr8SvTt+T4QheqabeUmLa8xTXIe9tZLLpcSe5KuVhMPhEJFK7O0qNlspuCAMCcbG3Vulm+frdZR8SWtzM72VsDFT+DZYVmU0fKLlJ/vzw5LebWELJlWnVY0m9uCuu7iJhdrdbI0qYs7tdDO81bFtc/KnItTyF9cp8ifq1ynZ6PeesmVmGxKk1Rj6DliLx0rVE62ATkexiDrnrAKbqQJ\"]" + }, + "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-66X6ldMjC5jvDXElOVL44xPuim0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fc4096b1-e8ba-433c-9ea8-474bad4f7a32" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.148Z", + "time": 691, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 691 + } + }, + { + "_id": "86564ca1eb9f7704f4fb15aa9bdb2f49", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/basicApplicationGrantCopy/draft" + }, + "response": { + "bodySize": 71, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 71, + "text": "{\"message\":\"Workflow with id: basicApplicationGrantCopy 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": "71" + }, + { + "name": "etag", + "value": "W/\"47-JSEeyxVGbvBlbz8eSu2TrKQQsa0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "242d03b9-4db8-458e-b6d9-9b32aa031d07" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.149Z", + "time": 1108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1108 + } + }, + { + "_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-39" + }, + { + "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": 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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2ec18370-a391-4379-a5a5-8871ff32398e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:25.150Z", + "time": 1204, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1204 + } + }, + { + "_id": "ed5256f1229d0148eaf24ca6f114c1d9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/custom1BasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 74, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 74, + "text": "{\"message\":\"Workflow with id: custom1BasicEntitlementGrant 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": "74" + }, + { + "name": "etag", + "value": "W/\"4a-mLxUM/DFu+ls66sKtoyUUHdrFvE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f791b711-0aad-4e54-8815-054edc094ab2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:25.152Z", + "time": 1301, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1301 + } + }, + { + "_id": "ed0ea38803379310a6d4584db7bfa75d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1873, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/customBasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 73, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 73, + "text": "{\"message\":\"Workflow with id: customBasicEntitlementGrant 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": "73" + }, + { + "name": "etag", + "value": "W/\"49-dK/5fsZX1TCxj+/JJ3RvJPU98hA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fe148852-d36d-45e3-86e6-f2bc2c06363e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.153Z", + "time": 1226, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1226 + } + }, + { + "_id": "9250807cd829b1a0069ac3c032862aa2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/jhNeCreateTest2/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: jhNeCreateTest2 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-SO0k6wjcjBrc5oWYP2/MlK/Rh7c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "04a91c4c-eefb-4bce-8984-0b120847c359" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:25.155Z", + "time": 1306, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1306 + } + }, + { + "_id": "5f969ec2e28ef93a4c9455be8b49eeba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/pghGenerateRap/draft" + }, + "response": { + "bodySize": 60, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 60, + "text": "{\"message\":\"Workflow with id: pghGenerateRap 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-Ntl8D+lq8Gk9EUagplLEjCeFPiA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f5e9248e-dbc7-4677-9251-19c91b9f0cb2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:25.156Z", + "time": 785, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 785 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9470d7e4-1631-4bc7-9ff2-edd4d17c65ae" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:25.158Z", + "time": 1099, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1099 + } + }, + { + "_id": "5c8ff177efcd97230aff3d52070a9f26", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1853, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhFlow/draft" + }, + "response": { + "bodySize": 53, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 53, + "text": "{\"message\":\"Workflow with id: phhFlow 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": "53" + }, + { + "name": "etag", + "value": "W/\"35-laAqnxbsjMBzn7zuR6Ez62JGULE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3bba7706-560c-4ecf-b250-01b4ca7ec67b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.161Z", + "time": 1097, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1097 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "105fd6d7-d9d2-4c73-a9da-d3b07fea77f2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.163Z", + "time": 1189, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1189 + } + }, + { + "_id": "073d1a68bf7de54cbdd2cc1a52e6d9d3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1851, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test1/draft" + }, + "response": { + "bodySize": 51, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 51, + "text": "{\"message\":\"Workflow with id: test1 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": "51" + }, + { + "name": "etag", + "value": "W/\"33-AYf9yLWXwmbnj5ATraDdir6Go1Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "84e971ee-0d9e-4e40-b3c4-43e1378f3011" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.165Z", + "time": 988, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 988 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0d421e16-d26a-4cf3-9572-216fc6e9bc69" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.167Z", + "time": 1089, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1089 + } + }, + { + "_id": "20a44b0494a4c23b0160b22c926dda7b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow9 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-a+i1JE0J6eWNoAhjr9T//SMn4mY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "92a5fcea-0e40-461e-b01a-b877f62b7e6a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.168Z", + "time": 1203, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1203 + } + }, + { + "_id": "fce414742059014929931a3b34bb0e17", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh/published" + }, + "response": { + "bodySize": 58, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 58, + "text": "{\"message\":\"Workflow with id: createUserJh 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-yACICTRV7BPCnXqo9rYflcfNwec\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8b87d9ac-d3f0-421e-a417-e572646a1d4b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.590Z", + "time": 764, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 764 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a6d48e60-18ea-402b-bd1a-780f6ad93b2a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:25.845Z", + "time": 667, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 667 + } + }, + { + "_id": "7b5422ae58eaec212f46b30a1011eb5a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1875, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/basicEntitlementGrantCopy/published" + }, + "response": { + "bodySize": 5233, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5233, + "text": "[\"Gx9IAOTPNzW/fl/etgXlQDxOCRrt5VVSbw57bO2NTAYiHmU4FMgCoG2NyuP3KxUyquriRCWRq66tq3ADTywJLOxteANAM/Pex8Pw3gVBlQCEqvFM0uylQMIACiXhMVSXndv9RkUBeZqzfQkuaDQKPChv2p0NJvTnIfCVfO+UDdfDeEaOVp0IBf6crLZsH/QBDIf8OTnvjf8KjcEMdtVwHgkF7g/+EbwZrLFH5LgH88J+9SvvVO+J41dHzygajj7Q6FH8c6m4/IMHv9TPqt8r/23ZlG23qtqiKovmvvRT6hNgr/w3+KqQrSC/6sHEBS29hodAI1yxVcVDo7BT33McptAOEFa8u7u//X2H1RyFYr/2ULWPO+VZ1qzUYZV2Dc68rBt9v/t1d72/fz+K2rot6kOhygrnL/W99tOgW/MQ9owcVRsGh6bVjEZxwdOaPQEFSjw11GfUyeTJJRLhLUSRo33IX9eN1fQaE6nu+tsXSw7+8x9IxLLjZvge0gX8kP4O/JN+iY0GkVJttnLmB18gR+N3r6Mj73F+XcFNNHPsFLM8igvFipTkNjg6eqI2XLNQeW+OBTQ47lS/fF54kxlM8BDz/IUjPZMNRUNeTLLFBXtcPwpESuGndAeRxhlaUI7SfSp+v5JPxmpytFzLsaPCR2XbM4qCo1aBUFwwVOHUdoJ3wEgQvMZvo+Iqu8rLqzq9qtOrLE3TxWIRh+Hm4fYhOGOP0QLnmSO9jsbVrXnBgxlALQHRg+G4ub7d62gcaW78AXyp+hCbx23Pc89ozlxmyD71phekDtm6XHUZtVJOSq0CSLgV4HfVG91gJ0BEiVsgvyJUeFwPBjcRPh2gB0vPTri/qPcq0Is6L8sVNeWqLfP1uuz6LNq7UeD2ha4Onz8K7IfjkVxsbDdEEu8na409Qv+twrFVRLUmPLfu9UhcbKSV9lm5Y02OgS0cUOQp4yOF35Uz6tCTjxabxET8zo2GbcZN4yOFiBnN0r2sTpl+cnRPyg8WtmCnvl8tpQAUo25dX7RftzaOV7puayRm66j5U3s6vGXQwK9fWmmDO8NFWoCWXMft4Qm28O9gaOlTzPjXETFzVMn59S5UtqWk1Yt8wuBt5i/9jebA3u/2jMNl5nCZFxtpAaD5/RLvcb/c7eGJ2iCMZQ2WfwsShcQSTPyIpEp4tmI=\",\"o3MYKFOvbi2+tmdpD6IyEyJaoMGo6YlvtyCR6yHJM5MWsHNucOBIaWOPNb89eDHhEYyG5lRv9P2iT4MjOFZqG4znkYJoOF2BdTpI2iSBensZLOH6kdpvTIIkvV0vrekgelNvaoujawn4hMm5iiOlI6YG1V97kv5aOtxKaI0bTUN466hxXJTtJasPXanrf/bCydAZq5uh3zVUuu+fpf3BolMcwI0lhnfgvFJMYt4KtihoWqf4utKmbj6CTcqVpIlvcVwaiW6OnfFVignj1a1MjniiagYCJWi6/wHNpIv6meRlUvGGwyPB5MnBo/L8CrpiJ5AmY+tZuZIiXMACzTK5t348eXKx0VzML+bwDzC3J/UTD3c8gy90hlz+hLcXd4PbqfYxKqYLtt934bGmgwR3KP5qNGy3WxkgMo0PQKqkFdzUKxz9jyfAvOCDTX+z6tAThOFA3g60EiIzPQwdxTRzeDCaZL/eqIQl3HSgWu08WEBHm8Pot+0pmMAjsNLCoOuUUmBrRWxoO9KPmU3i2xrVuR+Uhi1lDwaQSMRxJAqqZnhyPmrXar+oQBLdks3idjidBhuv17n2hKx+pLUaxiI1aROOpna7r0GigMucBKywa/fnsQplaUA3JLYoOzf5zfzfRO58p5w6+WYXvxrnWFS30rqYhrT4MazCmdeOFGchfYkxCK/ZBbLFObbLbh1iFpmfjM4ZkyenYrZgCR8/EgMO7O72Yc847DRvaGYhV30dCjnmSck52ALFT+pZ7V5bCjuM2gBTYKLFvz7cfo5Px3xBRM7FBgnLEuY+6iNV2GZ89P/8B8i5+DDoM/zwazmO0mwNhGbEL3GJ+vQY9eiApRdytCAM0nh7JeLzZInQDdYzUlFKinANYVQ/M6uJw5oOItvK4CKfyQOVMHKjcSc8iLP4sZFExTiuRF5AN+Dsu0VwjUwPTppklCdBv81S4uiOaEdO+FFv9bt+eHmY2pa8jwi9qWlRrdVaNw1RfmMBO39viu8qF7C8mx+qOltnq1WjyXmUx4906K/BEZ8HS1xsCBQEeLi4Y52C5vSmg330dup7ZPS2D6zT6gQp5oW7fdsshC1cGBdcFxPA7BCEyDOSZhyYDypMnglgweAq47/fgBPZwEQdGhzAVpmwZdocGLxZTACLrPVrNjvYlgqqA1M8D8IEsGnUKlDyKGqCcOXxnEkXcDUyHGYot6m+ZAqBnLuocm9yVRmP7alk07t6l6UV6fxQVLnuear2EyokMwHCIkabBaCsUHxHe3t4WkQrtrIFtOWAro3htrJRgNF8VRkuCrZUQx5HS/SR8UK1E+akTJPieUNNysBHmYxAabiLbg9PsbGM03PtrT4vSvIYnBKM+Mse7lAw9vibJweL6gCuHmZzJipG4HrD1JRYjGEJ8NtPg0ZmKPtnxp4hWSs+M1Pl9ebRLBuH1Qk459Cr1nMBmixMPaE37+20FVAopVh4bwO2ujNvk5xUJsSJZblmUgJqxAGEnaAs3Ty2Q/gNd1b/oUxgPACdWqDiiKn3VG27ytRz4tLMIwPimzoP48jSzR7PgGPbhoBFhmKi1nQ8zjCoWbXrkU5zKdwP8pUA2MQ3F000HPhEbdA6vTeqAuEaN4uDyDYTlIdB0K2QLuqfYjW9avFg8/SINVljlTI/dZgAVuGfLmZqvpWUll2Z12lzUDwJIEqgnDEO3rs2pz1E+K6gdFoeuqxRbZ3frJdcSQtX8LByNfg8aBKNWOE/sD+P1BZI+Sx3kxsHTwLuSWnPb6U2zzjKav1SPY8hzOU9BXDD9EwsUvMx6A4FL8pYhYP/ZsbZGRle3MH780hXzrzRHFS9FS64I9LCVSKttN3RP/nk7QDR9Q==\",\"5MNwWsCy3T3YZZ0EyH0dooSg75g/lBmdFCtJeVifCm92Vo1EE6BDiDmmSjaUHmc1LQ4qDRVWNUm4wt0Xh/HMQVhzuYfcCFSZJyQJLJeUxKB5TnTak0yVgkdXGab5LFjAcrnUtweYDqL6sYXKlhCRyxkUEId0JIyW96A4nEfTbZbpIFo9H7ZbYPXMMgjjAgBppYGRhmEGJkKEVrgodnoBSDOcBDHkuVSKc3sugk89n0SnA37z5PDv+C0QILKkSe7cnbBhKeOKv94kgf0jSSVkzgz8T5QIVhlOvOJVkAcFLJxHYtAZ6nVc0uY3NpCzqk9ObGqhG3ryOQ/SoLzgG+Xh/Cv4lCRADLYFsJODKrFiLfwqsSnmWVlrgZU0p0hpSz08NPfAm8fLeaMBKmZAU1unRIdHeaf6/qDabwL+bqEOKA/zDFtgOvnfZTz8n5UGHWpeZlnZDAcPfIjzwNmATG473yefjW652PWpyLnBuQvs+RtWHMkUCmpz1wU7NvN/LizsSQ0OjtlIylD4Ta5SdByFLNqDA5O/UJcoJ9oSucTZzsUmh+jR3RJ5/46Yj3qt+KRuHPypBNRWJOruCFA1frC6+uo4StjajX5EjAZdEOfdEjn2gyAZFoVnNCLMPFRzO4MWNHBgUtxEiUT+Nyy6VdUVNRFRh2Fv7j6WXUTc7ZJamk+nV+tdJisgjRLSCk+hx1CV2MutCJ6KOuAaLIRdXXzjYIOLcjlFmY3YXxbDvnIqjiUIv3iRmsKwjGBcC3qylEsuAeHFkDssjRFIT/rxA8n5YBi0MuVvXeIoTQH8sS5jj+isDGZX5CkpGBRDrw6jF7EMVrhIZZIoQY/SvhiBCdvdetPrRq2rsiuKdbbu82yLUoYEBx6MjoHWlR6I6Pw0haF3CAdRgAufd26DAC/CeKOeJ8pnQzp/P9k+7lBJTMOLEaSbOfSz/n+Vh4egXJj5nOC70Kp+KnQelX8wtMXSelEmdPCmp7oq6mK9XtdaXYziPZdt2WGRBNazl5MigVMdeqlzvKa4HzlzCkbrwoDWmmNx4B0Q/9NAHKNpFPJf4xuEuwdc3366+7jb79Bz8zry04l+mYPOsgI2hyDBwR6Q86lG4byxAAwpB/OrHg/0Lr+MndWPLl4Q8FnczVPyI+5ts86ael1VpT5U2a2E4P00lyRCqIkzZ1DbzGFimAk1n+CeTubHaSquHFDZn8FyfDgAgT8gGCkmC7M7uLNJKHHuDxzlbJL3W3qp4IB38xvRTsV4zHgSxVpOUbEzDj3vmK4Sph0aJwguHsUXNVmRVyUyeC2KEm6ZnR29NH8+ml3pm6fpmXfJ3xoSzwqMN6zC2ZFsi1vHSb42kLbKNzypYFrV92eLfPFpeCY4oy+e/tyGw5l+Bh9u5UZDT82VyZvJK6bQeOgqB+5GSTxDLEUYWXQsPU2GJID1YfCFBsJtTlNOQXEBrzBfslG4j2yIm/xFORuxflWBrbLLrEwqWkvqCGMZ5pQeCNJT6kT1pY5JTIE323CdNjTEnD57Pp89DKN9A4+9ZwA9f1t7Xp897vNvebXWbd6tq6am2X0RwNtqFZD5UwLu0P/aVaVa0lmR1kV+E9SsEEpw18Q2fLMbhIIIPUq7b8gCUl1fOP5j+ea3nwdNm6eDM1r4vNE/7d1BXPvMHF9RNCnHM4qsTDkeP5O3mIfUhjDJ0AwH2PB7S6sh8HVwmZFX6+bpsoo8B//mdXCczPVgO3PcQN8rKnGTct5VASkIqSxhbwC/L5DjTgyMXQ3wrgAgCjBKFPsG+AL25kQPo7IoUKtz5Be4RT5myW2uJse4pqeUOlvEQlnMLkA=\",\"gTgzUzXP6X1QVtWzxjbCLA8iLviKIiuLkjnWX1dxmlV1Xu1DwLIf9GYblLmvKbKLrFYSnt6kgLL1rZv1HuRZ/qA2snALNWjb2RqW3r8GLZPLMhtEXT/df2iprSpQl14Wem8gmK2vyep0cx/BykRwk8u6uUieRVDFWM++dbkaVTV5A0KX1K5anmY6o0gNPuYQG/EgdbmT7twwYgTu9j5PpwM5FNkKL2+KFKn74g4gF85hOvY73UwHEF+2HaKn4yORWnlePQyipKuOhlG2WlWz6UWa0jbL9VQsZIhaUVB3T4u0zqyNauSk/rLK6xnAfNqoxaVer+BVKo6ozbMC6UwehXcJlmDrNIXePi+4iWY=\"]" + }, + "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/\"4820-VnHTneOQ3jEoTW73jEObxgcjAtY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "452358b1-aab3-438c-bd65-ecbd5f735e4b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:25.866Z", + "time": 717, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 717 + } + }, + { + "_id": "7736cff9c86c4f3fd4d30ad36da33417", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/pghGenerateRap/published" + }, + "response": { + "bodySize": 2367, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2367, + "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/\"1e18-zku6yXQo/za/jY8EprVWNc9dY7k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "28aa09f1-f18d-4240-8003-28334108d108" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:25.946Z", + "time": 566, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 566 + } + }, + { + "_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-39" + }, + { + "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": 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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7dae3151-30d0-4d27-b48e-0181778d9402" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:26.043Z", + "time": 553, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 553 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "87f0073e-b1cd-445d-96b7-fd440103cfa3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:33:26.052Z", + "time": 437, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 437 + } + }, + { + "_id": "64e7b956f2df9660f52f83214bdccb38", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/test/published" + }, + "response": { + "bodySize": 800, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 800, + "text": "[\"G2AFAMTKdPX6bvULszpKmKzv4kvJXArCGkAEyaUZscHl+b8mmJ54BSWm3Tu7XkSCROLebHz4hxU28XweSFOdiwlGD4mHA6Hrhh8gH+jgHQyEWKAQ7IXu9FkJK7xPwAbTh7TiY8AGFb9289gSzM6emRT+JbrCaAUWahnmV1fBb99bLxvLp2dTtyrLyW67WDWzGsO/WS83G8snKEjh+MstUI9hpkOgB6mF2npSOjaAYCApExRiliZqEXv34d3Ht9WmArLTYUI+n/s/Cok4X2hthWA6eK4e2kTMRXkkZVL4+VcZBk5bdUDirW8H4+FED8vpcK6Hcz0ca62LohhJfFV/qCX5sB8U6BXoSkEYRE//R2F9+MDmfXTEMB0ouPfRIWL/6eBmmF9/FPq8JPkYGKbrqbOsSaw/F8D5hoKUpd/PXGw6QQVrnZuGmKXxydsgMOAjpTzEmLui9mF/plehzQKFg+UqpZisDPsOBvY+Bc9rOpOQ3Z49YTHP6xTbVj6ocl6C92W8UiKXEfWXF1fBQSFER7hs3BzoYqmUFHrAYDLAA8xMa4VHmJnuee6ahNpKnbfDmVloiQgq9/SjiTn5dM7WeaA928d/NqV4v6MVp1xDfNjF03zVxPDBLVD2c7BOisb/GDHQqTELvnytBAe63N4l+7sYdn4P01Erma79lHZNd9n7fNlSghm3569u/IXq1gYYXGKQw4AL5EGA6y4n+9Wge1Cry+VsNFmtVqvJcjWfLqdTjOuMx6OynK5WejmdLsr5bN73bjVHMsNg8kaHg8Ils2hIytQD\"]" + }, + "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/\"561-M58LmJu4UZphyDpKzmnspQ0muEo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "29d0fb25-476c-4f4f-83b4-d2889b6e539a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.054Z", + "time": 827, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 827 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "text": "[\"G5tXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dHGlTi6OH8gpKQgUenf9q7HPbmUsEFDTvcVTk6XKb9SkCClsqTN+naWBd+2U/eWU0rH78cPfXE0LV8s4hhSeLZ6hCCs7jyUH18xUCfLSCd/WZd3vunhc5MoY5k1meMVgGuh2cNz25mal/sufuGSj4uOSwPIAOWlv1Chpf/M7jKXq0ZMTaodJD11EwgxcmogFu7u8ftl/WAO02oIJ26FrVdT1qD+Z13gpkKWdxGaUw0gAX8rB+t77dX/s/K9Nxr4y+X04axlkky0bkUQzjI9zmRyNTtdf6ChS48MY6qF5BufXLyaJz8fXm7YAU9ld2m1BBMJ/XeoWt0khEXrFiiiVnYEDedITLkcPn79HyKzEtCT2W7DwsbCjvjJU+kNbYnvtaV8yV1ZoQQs7cbn9uFPIX2cjAZS0P6L9wq3jToZvO3szQ2OLq6dtvJPlr5jVdHtBPJ0pOpl2YlvhC/iKnYqCt7Jcchpkm6sCDfVvtxrXAYI6ZXDAhf0SzI0omb9f7CSWvIyWvIygs+RHyMxmnQQghSlakhr1kXbkMBoc2qCG4WbTEl+XCNKe1vWi0P8PHpZI0JNQ4R3YViaEtIYQUp4kVKSpi/FKx+D8Kf11i7pw66AdsECD5tYdlf9gNxRgaI78d4+ObWo+z6azW83lQ62mti5cBDxllTL2VWs+mMxgp4Bm1r38MtDY9at+g2hmv2vw5TKjgzhpp9uj8uueq22N/6rjHCEYKiXJ0zhqqV1qiNSm09eiC0uIKVUJBco8NRxCnpFNkear/mCZzFs7jZJ6F8yycR2EYzmazpTeb3XbnrdKH6QzGkQI6wTsgnQI66p8ZS58Ii4R/kgK57p+QsGVxKspykZVZukjaJF00ESaLtpRN1PJEijZDUDiLB09HCvhyUjbdrK26oCrzTKJ5EWUY3RTaowETa4JQ6KzVoSFQL9kna1swBW9ObNDoxpEC9n99azoMGsyKtmDRghctWySx5IuSyXZRJE0jsiyJ884GWYgGkvu0wQg8K49XkwU4dTp9LAZqr3y35ydGXk89+f13MhE=\",\"cOPL4G8Szsg/07OCG2ZSFe9LPrvRfEWHM7dkw0FrsEPvlT44FuDga1AHHgjT90a7QBjdqkOgDvxpw0vhp+SfjRooqeHtel8DH9D8zC1R7s+Sv4geuo5NGY1qSWnN2ZoOt8Ukxjb7GT5CH0fCtVdvpUDMpZJsktiS7+RUS6bZ4PX77xmTtlwUOnyTFEs4bMzFYm1Sa3ofw0eGR5qvJybNhEeKB1wi42LrrslMZDWQmymP4zjyyk1GKlSoM+0q3zF381HfVIjeQIc6JWBU6u7zh7vNhw9CinsgveUeL/y6KJNGMMnSljXJ7Y9Yq/Wn7/fcH+f+OEDsg7jzadz5I+6yIHs6xCdr2vsw7jgBUGKSxkKiFiYIGukMUbRVTBnMq5F7HOmjDZqj8t7lC++UrIZhQqoQiWTEgFNHPEBV69YCgkARPRIn5wgauoGli9RaI2eSv/7CO3FA+NA8od0VEVTYxGIOZ5tnoi2zMBWYquvUIKl8y1U3WDQUmSrvobt5EF23Q4xBKTsyVLBmIJGB3UEFnTkIOL3o1kxrgFOUXiNyYBdmqWH2BsrXRhao9GmbGfV6gyyMi8p01L9IlJW8bN1bnYcouvN7kZSsTZEXecayQoT3AHHQuMzvLyYAC85GPlpMnYa1Q5S93EcoDGGqeFRD5HqjlN8qNabOriZQXDKuHs7UFbppp0hTDeogNr8pcPe8iMOsaFOZR5EoMqpdMK81rBvQRqIj3CLZIC8+Tvj1ns0zkpv7jSPGMpqNkVhJrpB05qDEstbfzUDE7vwY8yAWUcxublYf/38IlrXeIZKj9ydXBUHDxbPz/IDL1tgDWiOezzrMAUkjXKCk6Mwgg457dD6wBsUsokgQWGwiwcWyEloIvqMZLO462gZIayzpjUWyBxqTc8tapxxtDhjkvf6IU/rQIZG28IGy84nQGX7p4o9Y6/SPQlAfF9uGJFGacOLtdbGl3e5I0xnxHBWsB6yHqtbeXnXfmCP/cbbN/3w25pYNQwKKSmKkmVTddKw1wJEpyukcoZ+NB+TOaPIXmXxB9jtGWZG1tcYSi1wqfUjKqslF+SNRkkgCLJ7UedCOVFu2CuJN+yKuUa1JxhFeQIc5ZchaycP643q1udk/pkUPXWewmm83Hz5sv850Gutv95uHm/1m+6n1gqiZeG/Re8bIyJX7We5nAZgPWJcRJj84L4L6g3U2JZyoy3maGrj8yLr2XWcuOSpcRSCLUyweb2KsV+sTylrKyKWDNJrxQqdBfCfvOT0VacWoZxT7KUJxA/3fKWK5sN3n29v1bkfDml64Ej8uqCZvRZSVgifYuHrUMHc3mw/r1TB5k+FY5OjJH5F4Q++6r3UN3vyb3IvnUpi+hjcwUhAi0LyFyL8Qmdvc4ptbsubWyDR22CN/hSN2nYEKDsbI5opA4aiggqPpOIwU1nHK+abkbfOa9M4MVppRKDwVyXe0X7mSZCAMF9B/nZNiFnq7/Xj/Yc12EfzQWlnGkMVctGURdSu2RTf0uGp+uZwiemewg9hmogiqit6A2aG4E5YhaHMeVkq0tm5Y/2nikueRTHhToOy0wePflDqdnBSQUZIwQ4Hzgqgldrhh+3YZa32IqiODTPZU9PnkRSLPPm4/BTd/QRVF1MZlnmKchBd/rHwYHkNGPkcqFaiOaM+XseQe5SY5tzNEe6k+6Pr5ry2PZVoyFkZRHHWyABQC4UeWYcIgvxBSSCxIIFEWMuR02uqlvIdQdBEzINiL56JhCRMil20uShGDoASMWoWW9CxtuVs7rC4iJEkKEQqA2Msd/7KOqFEXzbYIsyyNiibJeBbJil0061BPZtmiCoFKcyXsAlKTldvGk5VlQBf0rg==\",\"l+5MIPk6IxOBTv9YV/HJSET8ppafUrXNV3iBqogzCleo0pDSK5hELIplrrVULkYkmm3r7Mx2M230afBI3nr8aSi3suZ04k231NVqKbfCDj2OmNxaKj9t7/+ZM1qUT/PInV1MDOTRh1b2RkPfVEcoRdGJJzN7bqvmRrhVXHuowDlnANsE7hrtRgpPtWUmB9XPR3wMla8XJ47Y8yGw7R9OnxuOYz67rc/ahnF4zZbEaBqxiNtsdp5bn7tdN8Loba3l0xM5bDHNI5nLZ3jq+PWJW2sut0mUbs3TSCb1EfuaKzTmYWMycywFPqu6qa+7kcKgbk3WSOK1bP6sEPciSrIlK8uyZEWZJUXCiqZyeVG6zKI4DVmYRnmaFxFWsKEwe6bBVoiMYgaLnlKldrI7uFc97k5cQwWSX6duBlMwVpBUf8SBzYkFHJeboXDf9mgGewNPVjZPTDIQg9GtN9ofH3IkHJjw2ahNTwO1ePRQgVwC3vhIKfijobyh1++SOulIvcdx6Sdi6Spg6YKnHkl2e6amR9wXnsSZl5wpMJdGvOf+OEYyaMQ0+KI186aHDt3wQFNfZEUd6xQnzhPXSP3grZeSACQWNB99EqZBMp+XxHsHeggsaFH8NA9Vtd8MsGKTIqyTBOcRsY9na+TkX8oF8RmxBmcYu8uRPC7wqk7KawO7KvhfcjxYwDTMniXFslhJXGRRGLPRYkN43gE2tUaCo+Z5GZJUeZCJxYKqofHdfRr6Bi29xjNZVQJpfQGJ9x5uHL0WMC8SlSifdgQj3fa4ChjQrMPUtO5oo52rwaEFiUwlLoc0G6j/O1jTIUj1CjgQJ4xu1PqpE3gu8hHRiufxtRoXXlfIeN/4gRTP8YCANxG4JzlLLKMrHyR8pKXeERWdhk9E9dhcOW6pU5B9ewFFByuzM5Ysk3+yOC6KIipYdtOgaJzXw/9U3GNxIZ5B9vKCgrKko55J3ktMg+xJA+UdLCs2i+K4hNukXzgumuO9NSf4zpmI10yJ1Yh5CG4itP4agZWDjMwOSe446qkrXGWCLTbR+8L6ADTCMN2qOq6wQipxXhQB2RNKe5x2z93znTl6rsx57gcHFRz3Q08SKPSDF0ZnbwccAQ==\"]" + }, + "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/\"579c-uyJkhv7mnbIRTZcJHDfkHz1pVtI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "86d0b8f4-3bff-48ab-bb01-cfbc2c8ec780" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.057Z", + "time": 517, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 517 + } + }, + { + "_id": "ad4e157edf8a3b18458393d28b1ada73", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1855, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test1/published" + }, + "response": { + "bodySize": 796, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 796, + "text": "[\"G2IFAMT/lmqna+adbC/xINy5xtrWpG2FiG8HF9DAxyka5v9yYHzCf9Ht52tmY23NhhWlpZdd2FHDEv/ZpNBSmW6mF2IJ5ZMtzgBnocGUuIKAN2ea1q8rCHRMOPC9EW5Rn9GzCx63LX5r+9gT9M6cEgn8i3SBlgKJqU/Qv4ZgfvveOG5NOl5btaBuWVVmYdehhn8zjq9ak44QYM+J4xkIZZge4OmBG6Y+nJr6DVHQ4JgJAiFzF1JSevPh3ce3dVsjZudD+3w6lT8CkVI+09YwQQ9wqX7oI6XkVRbHTALfAKtAI+8OHWF512ej1UTNJ0s5WcpJJaUcj8dTDq+aDw1H5/ejMYoAXchzisFC+SPwj/iR3ftgKUEPIG/fBxudIw/QCykFHqEXUrCGrZD3QO0tBHywxAIVGuf3J3rl+8zYDm3NKVzaxtD35vbE3l4ubelETAaraut4y34ZLhTJWqy6M6mOMUSXKPikLbFxp/TJrqOn5u/0M88mHiHQ1D6dZ2ik3HWUEiBnG12rCPzjMjtB//ojUOsFQlkhkLo7OhsdXEGo2AWfoIdScJ6L/B5asPBqrLFE3g0Nm8h74lUX/IdMhew3gLiJnb+E+cH+ZB7/mRjD/brk/C4cIJmNnt4BlcbCCU0mWWhAHtYIcoMS4FtKEcjuJvid20MPNqFQnDCTq6lSSqmNlLONXKoFm0+p9XQ2X6lqtpovqmqlhK13EHLElWFzNEVFXQGw630+31KErgxite5MTW88NKx5HKUxSslUWzgnaHTfmGYhcM4k+hwzFQ==\"]" + }, + "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/\"563-t74YYZgD/2x4r/4twwuRjvb4HKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5f26c859-7c0c-4b5f-9bcd-05c413acba54" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.158Z", + "time": 415, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 415 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5tXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dHGlTi6OH8gpKQgUenf9q7HPbmUsGFDTvcVTk6XKb9SkDClsqTN+naWBd+2U/eWU0rH78cPfXE0LV8s4hhSeLZ6hCCs7jyUH18xUCfLSCd/WZd3vunhc5MoY5k1meMVgGuh2cNz25mal/sufuGSj4uOSwPIAOWlv1Chpf/M7jKXq0ZMTaodJD11EwgxcmogFu7u8ftl/WAO02oIJ26FrVdT1qD+Z13gpkKWdxGaUw0gAX8rB+t77dX/s/K9Nxr4y+X04axlkky0bkUQzjI9zmRyNTtdf6ChS48MY6qF5BufXLyaJz8fXm7YAU9ld2m1BBMJ/XeoWt0khEXrFiiiVnYEDedITLkcPn79HyKzEtCT2W7DwsbCjvjJU+kNbYnvtaV8yV1ZoQQs7cbn9uFPIX2cjAZS0P6L9wq3jToZvO3szQ2OLq6dtvJPlr5jVdHtBPJ0pOpl2YlvhC/iKnYqCt7Jcchpkm6sCDfVvtxrXAYI6ZXDAhf0SzI0omb9f7CSWvIyWvIygs+RHyMxmnQQghSlakhr1kXbkMBoc2qCG4WbTEl+XCNKe1vWi0P8PHpZI0JNQ4R3YViaEtIYQUp4kVKSpi/FKx+D8Kf11i7pw66AdsECD5tYdlf9gNxRgaI78d4+ObWo+z6azW83lQ62mti5cBDxllTL2VWs+mMxgp4Bm1r38MtDY9at+g2hmv2vw5TKjgzhpp9uj8uueq22N/6rjHCEYKiXJ0zhqqV1qiNSm09eiC0uIKVUJBco8NRxCnpFNkear/mCZzFs7jZJ6F8yycR2EYzmazpTeb3XbnrdKH6QzGkQI6wTsgnQI66p8ZS58Ii4R/kgK57p+QsGVxKspykZVZukjaJF00ESaLtpRN1PJEijZDUDiLB09HCvhyUjbdrK26oCrzTKJ5EWUY3RTaowETa4JQ6KzVoSFQL9kna1swBW9ObNDoxpEC9n99azoMGsyKtmDRghctWySx5IuSyXZRJE0jsiyJ884GWYgGkvu0wQg8K49XkwU4dTp9LAZqr3y35ydGXk89+f13MhE=\",\"cOPL4G8Szsg/07OCG2ZSFe9LPrvRfEWHM7dkw0FrsEPvlT44FuDga1AHHgjT90a7QBjdqkOgDvxpw0vhp+SfjRooqeHtel8DH9D8zC1R7s+Sv4geuo5NGY1qSWnN2ZoOt8Ukxjb7GT5CH0fCtVdvpUDMpZJsktiS7+RUS6bZ4PX77xmTtlwUOnyTFEs4bMzFYm1Sa3ofw0eGR5qvJybNhEeKB1wi42LrrslMZDWQmymP4zjyyk1GKlSoM+0q3zF381HfVIjeQIc6JWBU6u7zh7vNhw9CinsgveUeL/y6KJNGMMnSljXJ7Y9Yq/Wn7/fcH+f+OEDsg7jzadz5I+6yIHs6xCdr2vsw7jgBUGKSxkKiFiYIGukMUbRVTBnMq5F7HOmjDZqj8t7lC++UrIZhQqoQiWTEgFNHPEBV69YCgkARPRIn5wgauoGli9RaI2eSv/7CO3FA+NA8od0VEVTYxGIOZ5tnoi2zMBWYquvUIKl8y1U3WDQUmSrvobt5EF23Q4xBKTsyVLBmIJGB3UEFnTkIOL3o1kxrgFOUXiNyYBdmqWH2BsrXRhao9GmbGfV6gyyMi8p01L9IlJW8bN1bnYcouvN7kZSsTZEXecayQoT3AHHQuMzvLyYAC85GPlpMnYa1Q5S93EcoDGGqeFRD5HqjlN8qNabOriZQXDKuHs7UFbppp0hTDeogNr8pcPe8iMOsaFOZR5EoMqpdMK81rBvQRqIj3CLZIC8+Tvj1ns0zkpv7jSPGMpqNkVhJrpB05qDEstbfzUDE7vwY8yAWUcxublYf/38IlrXeIZKj9ydXBUHDxbPz/IDL1tgDWiOezzrMAUkjXKCk6Mwgg457dD6wBsUsokgQWGwiwcWyEloIvqMZLO462gZIayzpjUWyBxqTc8tapxxtDhjkvf6IU/rQIZG28IGy84nQGX7p4o9Y6/SPQlAfF9uGJFGacOLtdbGl3e5I0xnxHBWsB6yHqtbeXnXfmCP/cbbN/3w25pYNQwKKSmKkmVTddKw1wJEpyukcoZ+NB+TOaPIXmXxB9jtGWZG1tcYSi1wqfUjKqslF+SNRkkgCLJ7UedCOVFu2CuJN+yKuUa1JxhFeQIc5ZchaycP643q1udk/pkUPXWewmm83Hz5sv850Gutv95uHm/1m+6n1gqiZeG/Re8bIyJX7We5nAZgPWJcRJj84L4L6g3U2JZyoy3maGrj8yLr2XWcuOSpcRSCLUyweb2KsV+sTylrKyKWDNJrxQqdBfCfvOT0VacWoZxT7KUJxA/3fKWK5sN3n29v1bkfDml64Ej8uqCZvRZSVgifYuHrUMHc3mw/r1TB5k+FY5OjJH5F4Q++6r3UN3vyb3IvnUpi+hjcwUhAi0LyFyL8Qmdvc4ptbsubWyDR22CN/hSN2nYEKDsbI5opA4aiggqPpOIwU1nHK+abkbfOa9M4MVppRKDwVyXe0X7mSZCAMF9B/nZNiFnq7/Xj/Yc12EfzQWlnGkMVctGURdSu2RTf0uGp+uZwiemewg9hmogiqit6A2aG4E5YhaHMeVkq0tm5Y/2nikueRTHhToOy0wePflDqdnBSQUZIwQ4Hzgqgldrhh+3YZa32IqiODTPZU9PnkRSLPPm4/BTd/QRVF1MZlnmKchBd/\",\"rHwYHkNGPkcqFaiOaM+XseQe5SY5tzNEe6k+6Pr5ry2PZVoyFkZRHHWyABQC4UeWYcIgvxBSSCxIIFEWMuR02uqlvIdQdBEzINiL56JhCRMil20uShGDoASMWoWW9CxtuVs7rC4iJEkKEQqA2Msd/7KOqFEXzbYIsyyNiibJeBbJil0061BPZtmiCoFKcyXsAlKTldvGk5VlQBf0rpfuTCD5OiMTgU7/WFfxyUhE/KaWn1K1zVd4gaqIMwpXqNKQ0iuYRCyKZa61VC5GJJpt6+zMdjNt9GnwSN56/Gkot7LmdOJNt9TVaim3wg49jpjcWio/be//mTNalE/zyJ1dTAzk0YdW9kZD31RHKEXRiScze26r5ka4VVx7qMA5ZwDbBO4a7UYKT7VlJgfVz0d8DJWvFyeO2PMhsO0fTp8bjmM+u63P2oZxeM2WxGgasYjbbHaeW5+7XTfC6G2t5dMTOWwxzSOZy2d46vj1iVtrLrdJlG7N00gm9RH7mis05mFjMnMsBT6ruqmvu5HCoG5N1kjitWz+rBD3IkqyJSvLsmRFmSVFwoqmcnlRusyiOA1ZmEZ5mhcRVrChMHumwVaIjGIGi55SpXayO7hXPe5OXEMFkl+nbgZTMFaQVH/Egc2JBRyXm6Fw3/ZoBnsDT1Y2T0wyEIPRrTfaHx9yJByY8NmoTU8DtXj0UIFcAt74SCn4o6G8odfvkjrpSL3HceknYukqYOmCpx5JdnumpkfcF57EmZecKTCXRrzn/jhGMmjENPiiNfOmhw7d8EBTX2RFHesUJ84T10j94K2XkgAkFjQffRKmQTKfl8R7B3oILGhR/DQPVbXfDLBikyKskwTnEbGPZ2vk5F/KBfEZsQZnGLvLkTwu8KpOymsDuyr4X3I8WMA0zJ4lxbJYSVxkURiz0WJDeN4BNrVGgqPmeRmSVHmQicWCqqHx3X0a+gYtvcYzWVUCaX0Bifcebhy9FjAvEpUon3YEI932uAoY0KzD1LTuaKOdq8GhBYlMJS6HNBuo/ztY0yFI9Qo4ECeMbtT6qRN4LvIR0Yrn8bUaF15XyHjf+IEUz/GAgDcRuCc5SyyjKx8kfKSl3hEVnYZPRPXYXDluqVOQfXsBRQcrszOWLJN/sjguiiIqWHbToGic18P/VNxjcSGeQfbygoKypKOeSd5LTIPsSQPlHSwrNoviuITbpF84LprjvTUn+M6ZiNdMidWIeQhuIrT+GoGVg4zMDknuOOqpK1xlgi020fvC+gA0wjDdqjqusEIqcV4UAdkTSnucds/d8505eq7Mee4HBxUc90NPEij0gxdGZ28HHAE=\"]" + }, + "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/\"579c-HeNz5eDbvKUjM5jFNp3Oe8sP+dI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bd477311-68fe-4026-a9b9-630dfa983681" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.260Z", + "time": 625, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 625 + } + }, + { + "_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-39" + }, + { + "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": 3186, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3186, + "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-Rd+Vt3U7QPty3dLaISh+dlgbyB4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "97fb8b3d-b19b-4ea4-9a56-f7d95c9580e6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.261Z", + "time": 625, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 625 + } + }, + { + "_id": "3aa861dda0ffdf055470594105213338", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1875, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/basicApplicationGrantCopy/published" + }, + "response": { + "bodySize": 1591, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1591, + "text": "[\"G4UNAMR/92r91+/V+Yk9S1ojW1q2V49WxFz7kQIW4HmxLP7/Yy/YB/koS/CBzAZ2YxFF2fb/ue/uvUWFVdD3okWDjWStG1CZTGW0dKN1LDO4/V/aw2hIHFQw5ZOmOZtSRePsS69sfOaaDgJWXRgST9kKhuW1uYHhmD+w82r8iWqicbZ37BqGxHrwEYJx1tgaAiuYp38jP7xS58AC/zzfQa4FQuQmQP7tHZf/8OCXvlPnbyqchutFWW2W5Xy5mK+vMp9wb6NvKpzsG0qmgSgKJntYvsavkRu74q8qQkPa9nwWcG0snYXunz59+fhjDzeRZ/ZJiJ3iy/7N/tm3q0G3XpS/d9rHELaDgCqj88FDlYqjPP1metwG9uNJNZ8ty+12uNqulsNFtVgOD1NeDKutPkwrtdBltYJAg6oJkH20H2HI6FsW8HzkMpb0UiGY2nLwgvSejv/cBMVDpHQrwHdso2p4QZYpPVprKyQ8r1if/oRvC2ska1YSmV+4+DmJL8Zq9nReLlAV39aWHeRcQKvIkD1M2F8bz+ngFCQf/G01JAatEbNO9Kj3svnNbHGzmtysJjfTyWSS5/koutdfP36N3tg6y5GSAF8b4z0r7rENAPgIaR6NiPWk/bUxnnWN/4Nbx+O5njml1lecRG/Djg1PT77g7XQ2rXiznKizjC8RZdFOEsdfIz37j8s+J1RNgSiw7W8nIPqW0X3qtLN8k43x8OEvVeT/VTdczabldrtdrdYrhXQrMBouhsSf5CX7AFYCdNQX9k75PRaX0APaSOPMUc3xh/JGHc4csnzHTFVX+1rTA0H/Uc0xGxg94AOa7zXSA7Lt+XynrRLT+lOZSBOC8bjS3ur7unAyzTAmHgoL634kIqLxmL6w0t51J3c4chnp0utjPh6O9IBO8oQKfRk10WOyganV+BhyW5Qtedwwt4XxgO6Fe7agwcv9t4GgPgnqU74zkMBUlGWORHxGpbtcnB0lIit3dTERJcdN9phR7Bre3deZijIVyzygwZFuDB1YWJaIkrYk+lZRRsoMfegQA2/wsf25ipybMStSGnDXugq2+kbUv/JalQq760k1ZRzsyzi7umY/MrZyWdH1smmr1d4F6B7x6M8b8/OdUkUHyWZIfq62RbvC9oQooTIrULNrLiAkRLtfXEAk0FGO0iJeqdDaotFhlhYQHQgyMCrK\",\"6DHsvfNZurYXNiGNhA7jjToecoXQ4DSAI6EyCmDDM0fG2idtdExihDRAjoKSNIyiG4HhSXkkfe4WnMdepR3KHYuSB/UCqpPXVCDfAWyI09mhqfzgNCMO6J7pH+YsArui9GKBK+R6ItBBThcTgT8nZhAEXdt2coPZfKrVFrgMnsq3i9n1dJvZOQLAQGjNM2crUyOuPnOFKMFAeOqED9OEgCn9jP+y0wy8SxvYA7QxqEp/DjYGzVHWJ3wzF/7aKAsJrbos5EA3KDLsuhihewV0e26KOSrlbrwJEgCii1k/AUXbOZTq7Eb+NFWId7WZ72+6XCRRr/6yxxVyutq0jK6jyXS5mi2BmzWSQGHvYrko2myuClJql9vaAIkdnrtrCFzaGE1j9C0n\"]" + }, + "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/\"d86-JG0W9rJQtetP7oHPCS4/Msu0nMo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0329cf53-fe59-4a77-b309-9dec6f564153" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.263Z", + "time": 320, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 320 + } + }, + { + "_id": "e1ea565cc7d655477fe08fcf4cf7e122", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1857, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhFlow/published" + }, + "response": { + "bodySize": 2151, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2151, + "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/\"1b9c-iTu+Vbfi2yRdHzvxiseDNj2KTak\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e0c3d56-21a9-421b-a804-1207bf14b1ce" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.264Z", + "time": 622, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 622 + } + }, + { + "_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-39" + }, + { + "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": 5993, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5993, + "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-AihYLUzhAfnztkhlPlbJShUBrrQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0cb85798-3186-4b9f-bcf3-031d376abca3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.266Z", + "time": 621, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 621 + } + }, + { + "_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-39" + }, + { + "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": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d4-42PI2+aZ8dfOb3RilPr4LK45Zz4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "86a6a0ad-6a58-49c1-a799-5e5a56dcaffa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.269Z", + "time": 618, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 618 + } + }, + { + "_id": "23f6975c8f4679c70a59621660fb76ef", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow/published" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: phhCustomWorkflow 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-O81VUN99r87flpqNE/m/+84eo4Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3cfcaf6e-df0b-40d1-8f27-0e175c260d20" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.274Z", + "time": 612, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 612 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"579c-6mjrxVbQxjuyp2G82zg4b02MZgg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "473de2a2-1ece-44c0-b2fa-69a42d951cf4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.277Z", + "time": 610, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 610 + } + }, + { + "_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-39" + }, + { + "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": 1655, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1655, + "text": "[\"G6AMAOT0bfZfv6P5IbRuoMflKvuuPY7DCLnxJPhtGLMzNlCh/P2cStaiSg6MfDRm12QIateX9g8YVW5q0wSKSGkCq2bbwP83/hwNtdNCgOYjDhgDWtysVm/pcVR/PxAaZL+mmKoTppPw7JynsFtvk/BA+9FuckzMQ48/9/PDhtB2flAyuBTaop0b1EwbRfvrwB6J/f1nr79Pbm+70J2fXrcXt/dyXPx18gEe00C9zwSfUpGWFA1mVprUADQBu9kDMu3zp0wbzqpDxGloMUshNJhKbpM85SExoZwHoOUyDOPCIILj0WI3HmH0zmhxduQYjuALYl/+oZBEUihKoruNlCn8ikBo5PbXkEDrGXyboV69yDEczRw73nqZ8m0CNDCu/5l1T/mrl+jvB9JqepeY6FovAjQZH1r3lKvJMobJ9M6x4ywPcHAMMJvBM8pi0ec2kBN0kYN48x0D0HZ5d/8/NHBOAi8L61rIh2oSez9bdmqF55ZmqSt1NoHj+2IvwvSOWjqJnIp2ch05ZR1DjnnveHjIZZO8CFW+n8MFr54VZkVJZg4NOHTI+GKOAdrEmgaqh9RXDpumUVpR5P7ViomhH5UFTdPk95M36aOUbvDisQWHheQPLCoBXPGhkDzoXq0pl5/XFyWBBfCi9AL23n8KycN7L36t0OiqDMDhMm6/p3HIJA4tTLK+R72MAegPOJxI5APHMHE4MYQe0EUagjq04LAoyVu/JtPHLfF/N1A2ax8Hs4zBoWOAsUiovfVahqxGAIJpDTi2T7HDsiiJQ1McNIEAmAJRgRNYOGFs+G+JQ4CknEov4h/A4gi7gV+LbN7YQUUroaZ5wH+pcIZHMJ8C6ifNjnWX5IlvV51w7KIkGZKAV5N6U3RVxdgADpcKnO/QVu8N9TIGk0Lv1TJIgC6HY3BoPxCZoRzarnpk7UDyhKk2KgEARiTlH+T5gyH1PUkduUuVw/MlQCYsvnOKWuDeLtg8JWF7l25lTsIv2HnhyuHbBKsXToYpR/opLE64f5cqNVccI9z00zqHDk2c4GXGjZGgp/ajnUT4lJM=\",\"0I8VXn569xY0S+TeMbSaHjqucogGVf58hyZ/eO2N3UNFOWFaOCNqS668Pn71Y23KGnvvTjTIa0ISZbMcjzAdSiFUZOqkwvNIJEnl8IlIEhjaPY9A0FGLlkV138fWFBMb3axfCytoVbDAV2hNvgINYLrJ6NhxZZiyaZoWvtHr5AOFht4Fx3Fh8NwWrti+TYEU7QGJw9sUCO0Blz5CY0X7a2GwL6pPTKxoD6O7VOcxZR8HAumxdTHUkSzUW3v5jcb0d0GLn0rbkmpoc4meM1rUZ0UP3acL4KfI/UAveFMyGlx51aP4VeDTsbD5BqMVpmfywyTdlvSxpM0mfLEnIebvps/TloTCE3lo7/yEAxrkFEiuetquaO39pWyDPVM57LQ92qv5qcEHtGeXlyPQQ0rGtrOD0wmJE7GYGND5iD+lNHQjjRX0is3gH5ZeJO0eibX6WCJyl17KX7SJ35WAFGCgIFXm//jJQuvPAPK1TFGZl/OHXeejwRL/S9zFHmQTcK9rD7hHe3Y9r89vb29vz29ury5uLi4onVlfnZ5dzs/nl6fXl9c346h9l1wULU5+3CCgwXUpammWQiM=\"]" + }, + "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-cK6609i/1VMgmFPECTQ8mZbAAh8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "25dac01b-1a46-4691-88f7-ca36ce6406e8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.355Z", + "time": 534, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 534 + } + }, + { + "_id": "38df16bc423d3c3cf6bd5311166fa8d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FcreateUserJh%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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "03e30ac8-c248-42e5-bf0e-9f45a6e03de4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.358Z", + "time": 523, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 523 + } + }, + { + "_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-39" + }, + { + "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": 1263, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1263, + "text": "[\"GygPAORvzfBP1513DWyoKpxSf6spfYfyWJ3YAmiK4/T7uf5vaTXNr69Vl7Qq5m+iDlQ6Tbx9QhUP2SWSaKRKQkfp6pjfLgz0Et1Qiw4ok9UI9v0Bv0gOC+wB9fuKYGHJocdSsxv3cQRmNyFYqFjq6yV/TuPylQOBmOwS7AG7yxws7G7kQGB3WQxBCIQclXCeRiW3r4eL3HDHud44EPieAsm2FHPphQG7AAJpGCtmsAcs2QPrsMzVDTMOan67i9xKzcN8B3tAXaTrjWDBwUlgmMc7wVYwX9MBvBXXMNTvcJ7kgHmpN6vYfcg65ofutfhlc6M5akq5cGBQmH7EVDFFbwZjBIKg/hD9k5Tb16H2YA9YM6bhW3wgpBU6G11smnCOdoiXLWFOQDAAd7IZPecSR6PwKLFGpG6OTaeLe8WopuNHSjh2TvnXOeI3jL/OFe+YeYSruFdLmcWSieaa1YiHcBKXkTAq4OP58TwJxMwZ7JWFVvACS70QNOUy0pcAznWo31/oxjJbwQwEpq2eKGOouQxGEAis2SaJtAuGCBYKkj2V+HArmB+yJIUOxtDGNJqqpDT1HBVNJnqenIohNUDgPuw4/yUf2n8ylopEPrlh1JO1H1Us9RqWCQgU+CIgyxIwL+xff378Akt9WTDD+ZFAqa5uBaweynYEgvRcm1byFJyh2ohElQ6e+qg6mhhTjeeYvBFA4JZxB8sJTFhddNWBPUCt9+qZqwgWBBMNZZoy9UJwq41l6ipZK2XLmu4dkHDFNotey0a+a8407aaItNfa90+GXPsm+cX/W0Ys/+GXbcjDfH+8rnnZ3SjdvnkZ8S83YbHhRPMyIq1DdwloHspnOMk9Q4iSK9a+p7ktlJiph0A2luRuOlzYQ5Scykmg+EYl14BmGK1EU2CJ4IxX9ObJahX3a5uPJ7mTisQgEpSkS3SgC+olVi4R39YYTgmDyzjXphtOsB/ReMGD6CSNynCqUjS0k0LQznSBtzy0jHdUeoK1X8aIecZSHqxLuSCLPap52IfMLUBlIYCDdu17uiLR0iXf6dxR0+tAQg==\",\"13rWME2ZTA1VshXUeNdQZElJZF76kDp8u2eXlOkXglneWs6vrebVN9aUC8rNCyGtlJaZq+6Mlka1TRenx0N/UnX/RsjuVyaJoLyJSH3jOVVCcNoJ31GTgm5a12E0vLvN+qqk0Z1gvO0osyBZwzrvaUiKdxc8ThXz7/gd7HvMTR8J/LUc/k+Xba5gJXluTB3GPAE=\"]" + }, + "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/\"f29-Ti/GQPiuNO5HFboYc/ykzyfrMM4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "74750905-6618-4474-9ee7-fab34794eb16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.359Z", + "time": 526, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 526 + } + }, + { + "_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-39" + }, + { + "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": 2710, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2710, + "text": "[\"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\",\"d0HJRcF1FAE=\"]" + }, + "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/\"1a95-PO02/vwRB7j7uNYFVsQF10sN6jQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ca86dafc-d629-469c-9f3b-734bc197321c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.361Z", + "time": 792, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 792 + } + }, + { + "_id": "94cb7ac27139c37d3db5c25433d5c5c4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9/published" + }, + "response": { + "bodySize": 912, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 912, + "text": "[\"G7oGAMT/lmqna+adcSL1FbeUWjB8OaxRGYpjj4b//94Bwhe8b1Btm9vWGDasqBOmY1se8cuWpZs0HUtrb40fBlyRn+uZJmgFDk/OPw922ZrhrwFDLzoKip2nsJgrBBlnn2v0eujJwOOnPmxGAm+FccTwbWkFnjA4T6MDf5/ijt6n4EOvhHkQbjlrkoRkRU0p6zQdvF104NaDcEsw+EhijdQBE83jE3pa+3tPY7xRnSEWg/fBGIYheDnE4Hxzc3f9dIhkIkzzkalNcXd4drj/cMv6TIXsclBpXNBvwCCkH2zmoSaiFmf6Y2onOLI7SZtnpWyaWdVU5axoi3I2T6mYtY2ap60olGwrMPDA4MCnuC4hcG8DMVj6T9JL3IRzetE/yTjy/A2C9BJBn7vH+MlAK+q9A59izEVf/GTY2b5NXg2K0qCjXl2BDk5Yg5dJwrABLxOWS/KjLFtw2Csw9IMiejDhXvcLQ6f9GHyFJw5n0O7ADuMo5oZWM2l3QIY8BQw7VNpjPU+GFVlS2hG/wh1aO1gh5rvDAXmhTf4kWpI7ak/97p2wSzBMEDC39+BwQUpyTi4xIcX4Z4gM3xzxdODvnwx9dRCpwhic/KVOSEi3JlyrkhjLucf6q6KFmyA7o0D0P+beC+uf9lM59NeJwfhcVcQJMH9ZzGeORmy+hbXD331A9+3wgmzG+2VPpRLfY6CQcsZqwKpxPEsc18QUI0PQ+0Pf6kVTTIhGtXhEVpfbWZZlWZMkeZNUWdlWbp/+q7fzos7SvC7KNK0zPxE4QbvD9Wip2dPiJcWSZi8iiH5zNDiyaPprQU4KI7we+gffKjNaSudf//VkwUDrUdtDeSA83aQqfONj9E/CakpVAU5JSWo3q4rPGGk/wQcHjmkxXRQYukAzq7eBIg==\"]" + }, + "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/\"6bb-saaRVIIJV70L3GG4kJghSs6szwM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fd5f73ee-90f8-4d55-b315-36077d7852bc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.376Z", + "time": 511, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 511 + } + }, + { + "_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-39" + }, + { + "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-fYeqpSthZkHBvv2qYWmwz8fZ2gQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9d5c2d0d-790c-46ab-9522-a7cd67413bb4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.378Z", + "time": 509, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 509 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"579c-IDGf6KUcFknB+02M/ZC8M4KdgmU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c26e3cb0-1c85-4101-9f35-ee0c962970c4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.380Z", + "time": 509, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 509 + } + }, + { + "_id": "f4a350acd9dad1088504ab6898a7202b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/customBasicEntitlementGrant/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/\"4b4a-pmnrp2yeD8H3YfsRhzQPozWFHYs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3158ac7a-81d2-4c77-b389-44c0e8482c0a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.384Z", + "time": 502, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 502 + } + }, + { + "_id": "276d4a56e99cf40bc5df44468494f715", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/custom1BasicEntitlementGrant/published" + }, + "response": { + "bodySize": 5753, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5753, + "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/\"4cef-EYto5Y8AiaYxnfaN3gCrI+E2bRQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dec40c30-8749-4798-a3ba-09adf47cba1b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.458Z", + "time": 814, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 814 + } + }, + { + "_id": "d227c1518fae6f641df7c93090756923", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/jhNeCreateTest2/published" + }, + "response": { + "bodySize": 3534, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3534, + "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/\"203b-8StCIcqDtnV/0wjIeSAtpsEoABQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fd92edef-2118-467a-a13d-d674e75f9b32" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.470Z", + "time": 622, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 622 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"579c-Bbe7Nh5ROr6FcEc1WzV0SaV2HFU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f530c8e0-834a-45f1-ab7a-6c9044db42fd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.474Z", + "time": 555, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 555 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "39c4bdf3-09f2-4276-9dff-1a99597e8dd8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.497Z", + "time": 388, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 388 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "706a09ce-860d-4a90-a003-f1c33d3d1155" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.521Z", + "time": 364, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 364 + } + }, + { + "_id": "ab2ae2bd635ea6507f20573336dc967e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/pghGenerateRap\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FpghGenerateRap%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 271, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 271, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"69c4d900-ff3c-400f-8d18-037693ade1fc\",\"objectId\":\"workflow/pghGenerateRap/node/fulfillmentTask-f49f20d19149\",\"metadata\":{\"modifiedDate\":\"2026-04-03T14:54:59.543283524Z\",\"createdDate\":\"2026-04-03T14:54:59.54328226Z\"}}]}" + }, + "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": "271" + }, + { + "name": "etag", + "value": "W/\"10f-cHQJM3s29WDDOr+K35yq9fC8Kto\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "575f4ce0-aa5b-4c51-9151-75e49f104d1e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.534Z", + "time": 445, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 445 + } + }, + { + "_id": "d23a51976b010b435c8df9b33be914ba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1949, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/test1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2Ftest1%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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7a2962e9-8550-44a6-b83b-19980dbf4803" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.580Z", + "time": 307, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 307 + } + }, + { + "_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-39" + }, + { + "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": 496, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 496, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.030898146Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.978420392Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}}]}" + }, + "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": "496" + }, + { + "name": "etag", + "value": "W/\"1f0-4wNxS/UKr74kM5jyy7ppS9f4fzY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a43db65f-9d3a-4610-a1c8-9258286189c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.586Z", + "time": 393, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 393 + } + }, + { + "_id": "f7955396f9bd506aa3055825c37ddcbb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1969, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/basicApplicationGrantCopy\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FbasicApplicationGrantCopy%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": "Mon, 04 May 2026 22:33:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d2f832bd-3948-494d-96c7-cec6949c8edd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.601Z", + "time": 377, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 377 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b02f0fca-f9a8-423d-9656-8bd8e45aa7df" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.613Z", + "time": 1035, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1035 + } + }, + { + "_id": "44b3e6574228f053188fa8214183c4eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1969, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/basicEntitlementGrantCopy\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FbasicEntitlementGrantCopy%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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f74045b3-b9ba-47b6-b907-29e0ac81a391" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.631Z", + "time": 1025, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1025 + } + }, + { + "_id": "fc77b9327bf9a2f3dd812f538924e5d9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1945, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"createuserjh\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22createuserjh%22&_fields=id&_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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9fa25cbd-5313-4fb2-acba-9ed2509a5ecc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.898Z", + "time": 368, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 368 + } + }, + { + "_id": "9590a8ce644799fea11405d97d7a4730", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1964, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhinternalroleentitlementgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ba9b0f56-93f3-4888-8d48-a41072e6cbb9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.899Z", + "time": 353, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 353 + } + }, + { + "_id": "f34f88a7ca52808d5513f81c5e9c2b96", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1965, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"wfentitlementexampleisprivileged\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dc7bb450-79dc-46a0-ace4-beb144d99fcd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.900Z", + "time": 285, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 285 + } + }, + { + "_id": "8a5182a42d2ebcbb1f0409c2f5d1737a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhCustomWorkflow%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 272, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 272, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"2108a1e1-6be6-41e2-b356-b929114d98f5\",\"objectId\":\"workflow/phhCustomWorkflow/node/approvalTask-74cf85c35437\",\"metadata\":{\"modifiedDate\":\"2026-03-26T23:11:22.098315616Z\",\"createdDate\":\"2026-03-26T23:11:22.098312097Z\"}}]}" + }, + "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": "272" + }, + { + "name": "etag", + "value": "W/\"110-KUMUIj0tz9RR2qA2deJyWzMMIGY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "09677f49-aa65-41f8-90d7-a50dba1bfd85" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.912Z", + "time": 364, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 364 + } + }, + { + "_id": "8bda7aef98a5139609d8b2718cd91b5a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"test1\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22test1%22&_fields=id&_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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "524dfd2d-f83d-45dc-a68e-e32c378b0624" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.919Z", + "time": 372, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 372 + } + }, + { + "_id": "c8cd3f9d1a78d07ddc59b3f60d1e7096", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1948, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/test\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2Ftest%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 432, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 432, + "text": "[\"G3UFAGSZrqY9c+lBDNL1fTet0FN/sdwBW9JuqbflcUIBtzTRl0SSiyzyEwwDDFS3NvjbiwWwhGe/MFH/wsVyv9hBpQX8mjW6ZkL19gv9cjO/66CCvg615IiuS54cp2iuabF2PtbS1dSlnA0KWDaT3O66BsflZtrPlsfBLm93T1UPg8Wyy4OhBC0O9ey+3k5dzEQ5UqdRCQqY513d1bsaql9IbXZZ7zJUgB7VeXGe7zFUkirR0pNPlgLrKxTwfHpi/Sx6b6/w/1+E1EJcMMbEkRG9NypZUIlgjqWxKLIGA95IQqgSw5xKExGWiAlYZEmbeKSWqW9Vk+Ns6rjx5Ey9OEpNIt/kGrUF17DX72f9eDab58Uu5u76NpPUhBYETqt8KC0mRk92UEPLi8FQNacYwoylWVQxYgE2UgjhFf7/P/4B\"]" + }, + "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/\"576-UecSfSfKU1Ce+KvuMA+I/RmBEE0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1832aea1-dccc-4608-88f8-613d3c159005" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.920Z", + "time": 543, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 543 + } + }, + { + "_id": "618a9ca800e614aea18cfbc958f0d686", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1951, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhFlow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhFlow%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\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"objectId\":\"workflow/phhFlow/node/approvalTask-bf52ce203a81\",\"metadata\":{\"modifiedDate\":\"2026-03-28T00:26:51.612871456Z\",\"createdDate\":\"2026-03-28T00:26:51.612870099Z\"}}]}" + }, + "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-TuH8opVLpIioeeRqGHz3D7lEikI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "488eb44f-78db-4d17-b5b5-eb81d59f0668" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.928Z", + "time": 667, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 667 + } + }, + { + "_id": "3aafa82472e539fd6a712b8d9cc7bd52", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow9%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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c2cc0c0b-825a-405c-9a98-a28b78eeb00e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.933Z", + "time": 661, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 661 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f76168e8-a01e-406b-bbc8-a514c5deac4a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.938Z", + "time": 726, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 726 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e986c4dc-5d52-4384-b198-86981a975d79" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.946Z", + "time": 339, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 339 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0c014e86-7dd8-49e5-a478-b4ce5252d989" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.952Z", + "time": 999, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 999 + } + }, + { + "_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-39" + }, + { + "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": 265, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 265, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:17:02.496Z\",\"createdDate\":\"2026-03-05T19:05:28.771987512Z\"}}]}" + }, + "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": "265" + }, + { + "name": "etag", + "value": "W/\"109-Hj8NXoPU85JFaqSL4rri/yE0etM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e57940f-4408-4f32-a4bd-4c7c1191ca25" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.962Z", + "time": 1410, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1410 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1bf7f790-8605-49fb-9812-7e623c7eb76f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.982Z", + "time": 672, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 672 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2f9b2dc2-e3a9-462b-914d-db3e028034c7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.011Z", + "time": 1467, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1467 + } + }, + { + "_id": "0681cbb2e49de69e8d9855d44139a181", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1971, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/customBasicEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FcustomBasicEntitlementGrant%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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6fa75053-3d75-47fe-9169-67219292f1fc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.033Z", + "time": 1141, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1141 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4b74ab49-2a33-45dc-9d06-c4a25aba644f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.038Z", + "time": 555, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 555 + } + }, + { + "_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-39" + }, + { + "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": 280, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 280, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:16:56.423Z\",\"createdDate\":\"2026-03-05T19:05:22.729337346Z\"}}]}" + }, + "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": "280" + }, + { + "name": "etag", + "value": "W/\"118-aUzlub7rSCmlWz62X1BGXLgx2gA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8a25276f-c353-4960-bf72-6e3dee7817ea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.047Z", + "time": 833, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 833 + } + }, + { + "_id": "0680509ec11f2dbc40f56bbd0442f29e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"basicapplicationgrantcopy\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22basicapplicationgrantcopy%22&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f1f96ee4-53e4-4952-be8d-3181443be9dd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.069Z", + "time": 1314, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1314 + } + }, + { + "_id": "fe5302a28669795d0ce57525a5afe38e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/69c4d900-ff3c-400f-8d18-037693ade1fc" + }, + "response": { + "bodySize": 908, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 908, + "text": "[\"Gx8FAMTKn75fv5p9SZdMUQGUUttrAp1sMlg4Mk5jGDidwAAHhP/Rvbbh7XrWB14W+HmehgEv0EAHls01N3u51icSlFP9AdlvRnRbgsVuvRGuxa+TSG4HjunfjmCRyI94AA7vSP/yburHCIvHY9qyMCbGeqqPa+Yie3/vLetGT5/rjh32lMBhdHCopz3sDGsE6mNDX8fDMHCM7U/qJiq1kw61ibpD/4cJC0cY0xZ2Ruhp8HvYHzN6DwvSMnehk8K3uhbK5F602jfC1FWrlcs7WRfgrO9uSevGeCeKzjuhdGVEW5RGdE5RpYjajhQ4tqOnARZx3bpWvX/rpg1UaDi2ZXCcxdCFxQeixxz7BMMYBA1wmJxAGqozhqoOO6UDLRzx8ALYGf72fyHuYRXHGMKeJli1cIQNhlCF4dNhgfnpXwdK/x73w0QJFlM63BcTOf8mDv9ggxv2xPUJPwzjRD46xgcbF9d0eMcK7LwsJwsHeZCCLDyFohCmanOhQpmLWutO+LyUeZMXVS4pDYJXJidlKtFIGYQqyYhGUhDeFKSkb1sTijQ6ETv3U+rj+tnr+3tvcc1zJFrTX71mhhi1Mco+u+FALbQwhGXOo5ROOOg3xWm0GvHl6DzsrB6khQr+smBxzIdL7NOHR+/PHj979PIhu8UuAwPPPO/yjeNYcf37e2+vZnK7yzeO43Fc/be3ro9XrrL5ODLGWB/Yj91qqzUpyF2RxF3NIGOM9dj0nh73NPgrnZKv3pCGGRxNx9YSjpbicVyO43HsVeEGlmXhC/izpumUb/JchCA7ofI8iNoXtchlZRrpPBWhA8dZot+wsuLY0uS8mxzsjB3x9YduIliUeWlELoUsPhbaKmN1tdJ1+R18JxlbGSjlE40tmlVRlkaXjSq+Y1kA\"]" + }, + "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/\"520-IpEDFT9itQRb3CyINqI6lqkp49c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2382d5ff-88db-49de-8b01-1f3378d006ff" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.071Z", + "time": 682, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 682 + } + }, + { + "_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-39" + }, + { + "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": 267, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 267, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:58.955545728Z\",\"createdDate\":\"2026-05-04T21:58:58.95554458Z\"}}]}" + }, + "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": "267" + }, + { + "name": "etag", + "value": "W/\"10b-rI5DIp8lSEN1YyYOc7+yDt6g+CI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "227a7cb2-0b01-4a7a-9c30-d4aa8c273ec4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.097Z", + "time": 1376, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1376 + } + }, + { + "_id": "5bcf0aea348fe61a6ad2d97b09e845e5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "_queryFilter", + "value": "(objectId sw \"workflow/jhNeCreateTest2\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FjhNeCreateTest2%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\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"objectId\":\"workflow/jhNeCreateTest2/node/approvalTask-6649e6d6f2a3\",\"metadata\":{\"modifiedDate\":\"2026-03-30T20:05:39.307505597Z\",\"createdDate\":\"2026-03-30T20:05:39.307503978Z\"}}]}" + }, + "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-OMa52goAK8Y4Oc+Ex3EfA6pTfnQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9db25760-1cca-4188-bf38-cd026c0351f1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.103Z", + "time": 761, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 761 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d52cf1a0-d79b-4557-a47c-7a4f3886dfde" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.161Z", + "time": 1402, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1402 + } + }, + { + "_id": "74f4e51ff771f4ca62d1197dc5976e43", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1972, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/custom1BasicEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2Fcustom1BasicEntitlementGrant%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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "08245fb4-8fe7-44d9-a921-e6ffe43adcd5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.280Z", + "time": 479, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 479 + } + }, + { + "_id": "76e3900251e28e4e3cb708f5ca8611e6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/2108a1e1-6be6-41e2-b356-b929114d98f5" + }, + "response": { + "bodySize": 716, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 716, + "text": "{\"name\":\"phhCustomRequestForm\",\"type\":\"request\",\"description\":\"\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\",\"requestType\":\"822e832b-865a-4b9a-9b35-8c9765c6a515\"},\"form\":{\"fields\":[{\"id\":\"d99789d4-49d6-418b-b2f3-ad3e6ea0efd2\",\"fields\":[{\"id\":\"ed67d5a7-0d13-4bd6-82ec-a44929009d7b\",\"model\":\"custom.teamNumber\",\"type\":\"string\",\"label\":\"Team Number\",\"description\":\"mlb stats number\",\"validation\":{\"required\":true},\"layout\":{\"columns\":12,\"offset\":0},\"readOnly\":false,\"customSlot\":false,\"onChangeEvent\":{}}]}],\"events\":{\"onLoad\":{}}},\"id\":\"2108a1e1-6be6-41e2-b356-b929114d98f5\",\"_rev\":5,\"metadata\":{\"modifiedDate\":\"2026-03-30T18:03:35.309Z\",\"createdDate\":\"2026-03-26T22:53:38.532641208Z\"}}" + }, + "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": "716" + }, + { + "name": "etag", + "value": "W/\"2cc-y4gkOC5wUjgT8AvFdcMDN1liVzs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6cf45f7f-bac0-447c-ab27-1a6f52a699a7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.288Z", + "time": 467, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 467 + } + }, + { + "_id": "d083e1930213df31ca9a1d1c784d466f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow6\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5d5e4ee6-bb69-4789-b6fc-ab6287c6d6e2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.292Z", + "time": 557, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 557 + } + }, + { + "_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-39" + }, + { + "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": 365, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 365, + "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\":{},\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:55.352333038Z\",\"createdDate\":\"2026-05-04T21:58:55.352331941Z\"}}" + }, + "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": "365" + }, + { + "name": "etag", + "value": "W/\"16d-HOu1EOS1w7ri0hoKEtVGJfXSzvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c9aed4d0-eca3-4fb3-affa-c0398edf00ff" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.472Z", + "time": 408, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 408 + } + }, + { + "_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-39" + }, + { + "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": 339, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 339, + "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\":{},\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:00.455685295Z\",\"createdDate\":\"2026-05-04T21:59:00.455683732Z\"}}" + }, + "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": "339" + }, + { + "name": "etag", + "value": "W/\"153-jYzVpwWxAYcpXoINVle9wseBP3A\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "604a7b76-23d4-42fd-b608-a8ab2524d1da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.476Z", + "time": 403, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 403 + } + }, + { + "_id": "dce127f2932798737c2e5ec3afea9f9f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"phhbasicapplicationgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f0b8911e-3236-46e7-a91a-44a3444919a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.599Z", + "time": 459, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 459 + } + }, + { + "_id": "603d935292c8355f70f4e2358c6d0265", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow9\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow9%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 62, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 62, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"roleGrant\"}]}" + }, + "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": "62" + }, + { + "name": "etag", + "value": "W/\"3e-7JOLt3MrCebkhF2Fxe2gfa5rsiU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "93750585-2e66-4864-bfe4-fafbaacf18a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.602Z", + "time": 653, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 653 + } + }, + { + "_id": "833cfd6a37903677eec774dcec314c72", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/ddd56024-02ef-4c14-8bce-7b8bf4649b99" + }, + "response": { + "bodySize": 625, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 625, + "text": "{\"name\":\"phhForm\",\"type\":\"request\",\"description\":\"\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{\"fields\":[{\"id\":\"7efdd73f-2a18-4861-ac45-e9c1f26f1d91\",\"fields\":[{\"id\":\"998bfc8d-6fbc-487d-8c77-bb5fe5603d96\",\"model\":\"custom.phhText\",\"type\":\"string\",\"label\":\"phhText\",\"description\":\"Type here\",\"validation\":{\"required\":true},\"layout\":{\"columns\":12,\"offset\":0},\"readOnly\":false,\"customSlot\":false,\"onChangeEvent\":{}}]}],\"events\":{}},\"id\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"_rev\":3,\"metadata\":{\"modifiedDate\":\"2026-03-28T00:24:43.459Z\",\"createdDate\":\"2026-03-28T00:23:50.138413755Z\"}}" + }, + "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": "625" + }, + { + "name": "etag", + "value": "W/\"271-9tKtk9q7xsQKCxBYIaSVr0U1zLk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "422684f1-94ac-4f99-94ab-a5d4cf0939db" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.603Z", + "time": 968, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 968 + } + }, + { + "_id": "7e2f4b87c7b07dcb48c55f74ce284bec", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow5\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "762f1d7e-f17e-4373-a5e7-d78dd6b67f89" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.653Z", + "time": 406, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 406 + } + }, + { + "_id": "ba268bc5ba314a270416e936592cc480", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow8\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "eaafac24-1664-4a48-990c-8f9e42bde86e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.660Z", + "time": 401, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 401 + } + }, + { + "_id": "db782db4d687c3030a4a32db889f5a2b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"basicentitlementgrantcopy\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22basicentitlementgrantcopy%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"47b0e373-a9df-477d-986f-4aa64317ebed\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-EaKziTtqOgaRfx1XDcCjOGD4nnA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b3bd706b-ee9b-4fff-bf8b-f901c9824a42" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.663Z", + "time": 399, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 399 + } + }, + { + "_id": "225ac80948c830c83b3c3c2579077821", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1945, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnedisable\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "970b60fb-bffb-4816-a170-fe98aa4ed9fe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.668Z", + "time": 994, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 994 + } + }, + { + "_id": "f01bb711f81e79c60c4e419689c59bc5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"2108a1e1-6be6-41e2-b356-b929114d98f5\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%222108a1e1-6be6-41e2-b356-b929114d98f5%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 272, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 272, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"2108a1e1-6be6-41e2-b356-b929114d98f5\",\"objectId\":\"workflow/phhCustomWorkflow/node/approvalTask-74cf85c35437\",\"metadata\":{\"modifiedDate\":\"2026-03-26T23:11:22.098315616Z\",\"createdDate\":\"2026-03-26T23:11:22.098312097Z\"}}]}" + }, + "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": "272" + }, + { + "name": "etag", + "value": "W/\"110-KUMUIj0tz9RR2qA2deJyWzMMIGY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "58577ec2-bd67-4f82-8ca1-d0e9d2b07e16" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.761Z", + "time": 390, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 390 + } + }, + { + "_id": "eabd812ca800718847a571cb46acc41f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "workflow/id eq \"custom1basicentitlementgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22custom1basicentitlementgrant%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 69, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 69, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"entitlementGrant\"}]}" + }, + "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": "69" + }, + { + "name": "etag", + "value": "W/\"45-pZuWgrWap6nr+DW5KtZxdjRI+KE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d76e23d2-7e58-420f-ac79-c7763b955219" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.764Z", + "time": 411, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 411 + } + }, + { + "_id": "140675828bee07087fb099da36e15c9f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"69c4d900-ff3c-400f-8d18-037693ade1fc\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%2269c4d900-ff3c-400f-8d18-037693ade1fc%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 491, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 491, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"69c4d900-ff3c-400f-8d18-037693ade1fc\",\"objectId\":\"requestType/35daadd6-bc63-47b5-a0e5-7756dfbdf229\",\"metadata\":{\"modifiedDate\":\"2026-03-31T15:46:55.833704448Z\",\"createdDate\":\"2026-03-31T15:46:55.833703422Z\"}},{\"formId\":\"69c4d900-ff3c-400f-8d18-037693ade1fc\",\"objectId\":\"workflow/pghGenerateRap/node/fulfillmentTask-f49f20d19149\",\"metadata\":{\"modifiedDate\":\"2026-04-03T14:54:59.543283524Z\",\"createdDate\":\"2026-04-03T14:54:59.54328226Z\"}}]}" + }, + "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": "491" + }, + { + "name": "etag", + "value": "W/\"1eb-nsdQkdylVJz91w6JWqGqVON6ZC0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "53069db2-6994-4175-a47a-e2b55019e780" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.765Z", + "time": 314, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 314 + } + }, + { + "_id": "5dfd054b6e239112093f787ac5977f55", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/82db6f64-5aa7-4b13-b1ce-e87e988b5199" + }, + "response": { + "bodySize": 616, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 616, + "text": "{\"name\":\"jh-ne-create-test-2\",\"type\":\"request\",\"description\":\"\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{\"fields\":[{\"id\":\"344817b4-9384-4ff7-a312-1e52f4c4f7ce\",\"fields\":[{\"id\":\"ab1f399d-0c05-4eae-9b50-bb77bf99c459\",\"model\":\"custom.givenName\",\"type\":\"string\",\"label\":\"First Name\",\"validation\":{\"required\":true},\"layout\":{\"columns\":12,\"offset\":0},\"readOnly\":false,\"customSlot\":false,\"onChangeEvent\":{}}]}],\"events\":{}},\"id\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"_rev\":3,\"metadata\":{\"modifiedDate\":\"2026-03-30T20:04:01.608Z\",\"createdDate\":\"2026-03-30T20:03:38.172835624Z\"}}" + }, + "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": "616" + }, + { + "name": "etag", + "value": "W/\"268-E5svjVZjSNWD+4JzxPzL9c2sq60\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f531e3cc-0eea-4873-8348-11cce64bd8a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.867Z", + "time": 385, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 385 + } + }, + { + "_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-39" + }, + { + "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": 719, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 719, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.060158915Z\",\"createdDate\":\"2026-05-04T21:59:01.060154113Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.978420392Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:02.997659345Z\",\"createdDate\":\"2026-05-04T21:59:02.997658111Z\"}}]}" + }, + "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": "719" + }, + { + "name": "etag", + "value": "W/\"2cf-HT2DSmeNqE8wzGyy+wWWMQtWTJU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fc882dc9-5719-4d74-bdd4-e8852fd7a22f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.884Z", + "time": 384, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 384 + } + }, + { + "_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-39" + }, + { + "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": 942, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 942, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.030898146Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.942847422Z\",\"createdDate\":\"2026-05-04T21:58:56.942846391Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:57.945624619Z\",\"createdDate\":\"2026-05-04T21:58:57.945623532Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:58.955545728Z\",\"createdDate\":\"2026-05-04T21:58:58.95554458Z\"}}]}" + }, + "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": "942" + }, + { + "name": "etag", + "value": "W/\"3ae-UBpV0bQK3+wSCSrCRMJlJHeRQFc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "29c94e31-1ac5-4081-91d4-d6d8cde617f6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.885Z", + "time": 385, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 385 + } + }, + { + "_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-39" + }, + { + "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": 1176, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1176, + "text": "[\"G3sIAOS06fenqzVnJnLpu7/04jLOY0UgMmZbxPT37vyzf5U1bfMOJ61NgRV+bU2MxrJJXcK9gArs0bsEI8zmGo/W+tcU9UTqA0g3PWBNN4II96cnrLTQNQ2qeOzU0Y5gM7at32CC8eZOEKGTW3EHJqh+9Vffx7ytEOHTrd9Y2zqrum5er+zYqe/s1TyeGHtn3lYW+CxhHm9gAluEdjPtEB9gpCD83CDweizLBFt+QWU8te/UU9u0l/QIwTlBXz8XH0AvaR07xMc5QZtpqTvEvx63dGi2V/60bANiS8tOA8qz44PsDCCfPnbqa7oR2xoT3ZFvtoOlTmxDpda8XmswnftG1rYOE8wVIgTvU6q+YKCmUSev0DvhMFgelMg+2GBgghwOASDCB2XM65UtJaJE2pvtGBAf4H3/2HWHKOQEW2s7DYj8nOC2VSZYevP3fV7LfE/LFxUm2NaPntJ6pZQcSXgyOqX63bq8gYGa5PR99Hm9wgQmMcSpPkCUUiGOftB5/jNCVEhNBk/VomuGozY2YdBOYVCaiKx0WVk4pzlgdJnCnPaDvtkOVtLKUhngyBecodTZ6qaVw6a4Rq10wlCyQ8mldEaH7Jyn0B/b0dm2axUWKwHPPeNlmpeUFwpSoPzI50fBRrLeeJdJZPTJetQpJMy5ZZS2Fu2CED44Cv+yU2cJY1JrV6UKK5RCFa2bVxiaJtQ1CfSqEFoulGvS5FIDJf6c+pUGYyp+fJVReoXB559/2akLLpLNUktvs0HuckItecMglUdrHVdGWU9BUetvT29Y8qLZPyIhubNM83rFVn5PXqHkpVTKqqCpzaE2tWEw1NBQFTyTCbJYivvy2MfcdGMZMa33onq5NMHCDHo9Uqckokg2CNN4qRylI4G6qoq5GYO5qSKSs8ERJ+kPVTtZytsx2NiYIxsaZwJi8u3SQPXQLhfdAGUzOfhsCoomM2rLA+aSBUrKptrKZTCKFvGL233rI61DI0SXbW1zv0Hdr29o39OV9G6zRj8Af5hL2UtjDFbSCrXXHFPNGZukFEzItgaC859zfu5YBM/Wc0wucNTNKQyGKnqRlTaNN0UBJviv00uBWnqjkWoaCeIDvjau/zgNggiSS4tcITc/Sx6FjUZfnLd/wvQ6zlP4FIlS/SxV5C5qeVHaOaWkN3/CeQI=\"]" + }, + "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/\"87c-adE2Qj4EEPZjbo/m4evANNm8XWU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f8b53fd3-4aba-4c57-8bb4-79149a60c3b3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.889Z", + "time": 396, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 396 + } + }, + { + "_id": "ee8f37cc5b58ee712b10db3bc39b4114", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "workflow/id eq \"phhbirthrightrolesrequiringapproval\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8befffa7-e3ca-4c77-8bd3-d69831dc16c0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:27.956Z", + "time": 412, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 412 + } + }, + { + "_id": "87e01b7cf80babf3224aeccfc3670dd2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/47b0e373-a9df-477d-986f-4aa64317ebed" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"GxIJAMT/XzN/teXcNU5pKsv0X0p5yjPBAgaY6fzfWut9t8bZ+XeeTJKYjZ7jkkhUESkdIq/TvFZs2vC1JZplPwsc9Ip+LNaZZ9Qe/ABvaWAoxGGEhNFQWOXVjJf5MqNSN9kqz3VWFpsmWxFtVst5zhVrSFgX3zhtGkNVz++9G9lHwwHq1x+JvfNd07s91BmKP6OiYOpbG03sH3jgXe892XjtxiOSxD/PO6i5RKifeKAAdUbthsFZqF9n/Bs4EtQZ8TgyFGaVnw3SDU3K8ZFnP98OiRGX44ySAA2NqSkaZ7c3CB/5eWs8a6iG+sASJrywkb2lHir6LVtJQp1hLQ2+1HWfhAlfTTBVz2Iw734Z1FJC1x8wj0an4/NCFg+l4KxonF9lpMXjDack0T3Yh8V5oXE2mHD9RPaRcGBvONgttzYs4rNe8eLGA9UVwFxbvLhxA7t0oV7o954bcwg0gdMmRn2CcBXXGgImSq94cbPtDxNuPDURYCBJZD0RKQ5LrO93wRCrbsBYv3iM3hc8P/M2RCSJyAfUcPfTTV+p3zIUercP/h/Fh9H44w1FJjfEHSlEDN+t0BTZE8U8/SWwF3dxmbSG7cJZ8cIPqO6AyhPUEi2RD8TrJZiUQ7+0SpjwZttHEwox2luuVQv2heocIyJ3Hcst+9T2v0Zo+ur9m7fCgsRfNc+8uBEds4fWiKIMxSh6SZI9+RTJR8ELxYKQhKAGHz3ZpLGVbDWuzb21+gtynN9OVL2rOndjKaWzDD5lIR6Ok7I8q53VH9cSGa8VmcOwjeNUzvVMFilfsWQZeYLVgByEWDThqpbr48AlPmaaW0yrRA+z8ECsMUywV5bSnyRRPhWGUNHAkTRdAsDlj6b5FbCYLTbZbJUt8s/ztVrO1XIxWc8XZbnKy+InJOqoSIrULcqi+ImUAA==\"]" + }, + "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/\"913-DAxNCMInw5myO/dh+V8Y3lISe14\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2f24f867-07a2-4659-9a3b-c5f02854d2d5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.066Z", + "time": 509, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 509 + } + }, + { + "_id": "c4ece9722fb9d20c2d3fa1aa4e34b5ad", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/35daadd6-bc63-47b5-a0e5-7756dfbdf229" + }, + "response": { + "bodySize": 1048, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1048, + "text": "[\"G4kKAMTvp+q08v6M4tLZUmo5mZNNIoEoTue+tV/vdzXuzvzvyaQh4mOISSIRTZJY43UqpZIjPaFiTV9FtC1DlNJ2sPoPwx78zQk1DIV2sSz+w/h/zEWgFhJGQ2Ew0kRaj4tyPh4Uw0k5KqjLo2IyGY11Veqq359Bwrp07LSpDJU1nwXXckiGI9Tjs8SXCx9V7b6g/mA0FNrFcpctB0p8QS2yxGvgT6jeVCLOl9xQhPrD3DWNs1CPf3htOBHUH9JPy1CIPzFxAwltYluTJ14qd8H/AP0kJFo0uT8MFWBEZeaUjLObH4gX7FcmsIaqqI4sYeK+TRws1VAprNhKK9QfbLxmH+h6ScLEGxNNWbMY/uv9flADCT0IgmRrdCWupmXxWorOisqFCY1MBbz1OUtkCHzYmn2Nc4SJm0uyC8IBz1Swp7ZtpMTioGJ/y4PQIcLcX+xvuQG3H82+Pgtcme+9ApjgzIhWnxFu4MgjEFGWxf5WrC+HiVuBqgSwliWIzyKlRDt9tjWGOHSMxmaKMen9JLDnVUzIEom/UeMfQD13Q/WKoVC7r/p5FK0JP1uU2DW1SDDuTqGr8LMKTYk9CZy0X0cO4g+5ElrDSeGsmOcHLB048Ak2lZbOBzKHCZbkOy9jJUw8XtXJhMJW9qlN1cZchPYAEd1GqhwJ7W+10PaNs+MTQZeTOIZOOva3xAdXD9fooozDo5jOIrmQy0QhiboInBJJDGrdIpDlve20GtfRblu9RDllfxpl7crkHi7n3MtAl+Xq0MTy0vM0GpU0UQ4DG7cqnauZLPhKkhV4QnoCbYRwbHHlO89XQt1Lwry2JMU0w5JJjDUgQXvtOT9LDEB1En2/0Lv3MPqM0pIi5bot72+JJ1hpwMWV5NzXD6u/CBXJxHMOWSJQa/2gF+tnTWWuvmWNQqw7pf5IHKTsAkae846cn7MMtm8w+JewrnqftKu6lmg4kaYk4GtPn9Nvod/tj4vuoBj0rnpT1R2rXndtMug/QGLwNfKTv94fXPXGqttX3f7acNLt9gezYf8BOQM=\"]" + }, + "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/\"a8a-QW0wliZ5IaPDWXXT/r7WXDIjuxs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3ce8007e-fb25-47f1-a6ec-166bb24a8d2a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.083Z", + "time": 588, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 588 + } + }, + { + "_id": "a923aa9a6aef4b35c962c3fb503b689e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1950, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhcustomworkflow\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhcustomworkflow%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"822e832b-865a-4b9a-9b35-8c9765c6a515\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-YqeuY9fBCNIQ7VxFehy2Z9cfvoM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ef2812d6-87c6-4a59-92f7-419ac09bb0ae" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.154Z", + "time": 313, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 313 + } + }, + { + "_id": "eb2d851e7637fbbd7573483cfbd56efe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "workflow/id eq \"custombasicentitlementgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22custombasicentitlementgrant%22&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "10370c05-0ab0-488c-bf83-24dc8d4d5983" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.178Z", + "time": 301, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 301 + } + }, + { + "_id": "d069b3cda2ae43b8a62b77ae54f31bba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/entitlementGrant" + }, + "response": { + "bodySize": 1426, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1426, + "text": "[\"G8UNAMQv35lfvzuvQAqRjjBF9E1HiTaJerbkCI5cLa6l93dWpskAwAFBmg6QFSBLYPvGj+ULO+Vm5RbrfI0q4ua04m0aGA0JttHEsgkC6154ZSME6iTM+l5VDIlfmtFZUMdBICw3XKkA2WDpqspZyD8N/lYcFWSDeF8zJP77XU5UxQr+zP9R3hMCdSEGGD7TH/c7emWWKhpnIRuY8Jm3yXjWkCtVBhYwYW4je6tKyOgT55IM2cCCXvN1WicJmPDdBLMoORr9O34uyIGAriXAs860Ob52N3FNFZyllfN9gfTy8MbmLEBExKFz5hrOIiacbJRdKzgQGwPsXmd5eNGuvzQ/xcB2SGD2TfNTNPDzrprrj55X5o7QDM5AqtMrJ7iWIwWBCGUEzU9PK8OEU69WUQqis4BtKk8sA7W9P57LSWLbMWVWnRq7e4nnLacQkQUi30FN2ygd9l2ViSFRulvif9N8Vxt/f6oi0x0SBAmfKmkVGRPLSeq3wJ62tfLQKQwnZ2lYDjR2UP0QWkcqAQc2CASNcseXkgImvEtlNKTAoAasvE6SLicvbHsIET+7KOq/dev89ap0txqaevzx3XvKoQJ320na/JSuWXr0FIHKVGVEVQrJsnyJykeSC8spi0my7bEuEkB2u9JquAb3zOo9xTNcJ2NRugVzB5ZzLmWwyAI5rE+28lI4b/+7MmSmlLgNw/gbWThXsrLI9kqKK9gJKQBXQrwnucU/Xh5Ilsww67Il5so4LN2J1rXE++DkLAp8k4shcGSMFNirKullg+dWxQmlc9ephmxQq7iBRGfUHrrpqtPm4U3qTgrskRVmvN8Ce1UxG5+1UmBPtxtH7jXoSwDrMoGjjRrkQoa/hWwPs1adO/31naWKqnRrCGwT+3tIqBDM2lZsY8fozjXf3zqvibdU4HEDWPdcoJ+sGzGRq068rzmGyMd2FKCn4CdWHlm5qNSkNhuYyOvhSlxgQLXn+C2KjH6BrOpMuGSZ5+jLYbrnfKVQUITEakhU6buY3rEKZnkm16irEYu60nHapBhw/EmD4JJfMiRulKefb0t71BRg750PBUjSnytBBVx2/Dpb3iGzeu5On/CFYzR2HdrhA23li+ZK93uvob29PYo+MT19Ss99QM+2y95a+1/onpRsMxOWmDX9/08np7SjN9XzF7S3RwUKvHjREOHl\",\"2UZpIe06hc3zwhGPIRMI5jl1gRc7Oe4NdpAFkjXbxG/4PkD+mbjwarPSWw==\",\"fCdw8OdXAtbFd06blVGLkj9a+8pIxiV1JJOLXT/2SuCv5xvIflfIgIvZUV/5fMchB6RNZTlxBMateBaoOCqtLCVNuClr+xr0u/1xqztqdYdfe0PZH8nBoD0Z/4ZA1U9a2EeOWr1uqz/52pvK3kD2eu3eaDYejnqj8W/kDA==\"]" + }, + "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/\"dc6-TUwYHT4FaJb6kFIA2GYhK6/QJjM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "673a7450-858a-4e4f-9c84-63354189a9b7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.181Z", + "time": 498, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 498 + } + }, + { + "_id": "eda35d0ebdd87a055465b624393b8d64", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"82db6f64-5aa7-4b13-b1ce-e87e988b5199\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%2282db6f64-5aa7-4b13-b1ce-e87e988b5199%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 490, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 490, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"objectId\":\"requestType/e58d2089-3e92-4a0b-b0fa-3ac6d4251877\",\"metadata\":{\"modifiedDate\":\"2026-03-30T20:03:39.343152735Z\",\"createdDate\":\"2026-03-30T20:03:39.343150216Z\"}},{\"formId\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"objectId\":\"workflow/jhNeCreateTest2/node/approvalTask-6649e6d6f2a3\",\"metadata\":{\"modifiedDate\":\"2026-03-30T20:05:39.307505597Z\",\"createdDate\":\"2026-03-30T20:05:39.307503978Z\"}}]}" + }, + "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": "490" + }, + { + "name": "etag", + "value": "W/\"1ea-OZXPViCQZJd8xlOMPgUeym0NR2U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f799804b-7959-4136-a4a3-2030fe2bbb2e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.256Z", + "time": 435, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 435 + } + }, + { + "_id": "86f530aad6790f246058a707dd7c654f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1853, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleGrant" + }, + "response": { + "bodySize": 1399, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1399, + "text": "[\"Gy4NAMSvfbO+frveiREzVuxEZLauSOgk3DIwQdbmWFxL7++tbJMfswOCNL0bIClAVkT2lRywEG5GTmW5XmpYWj8F9pstjIZE8JZfBOUSBCYjTP9e1QyJEgfTZ28ZAnG15VpFyBYrX9feQf5p8bfmpCBbpJuGIXFv73xvslXAZ75X8vYQmP3Q13CfeFf9jl6blUrGO8gWJn7mXTaBNeRa2cgCJr5yiYNTFjKFzHgTIFu4kcq/7ms/ARO/m2iWlpvh/eFngRwJ6HkB3JpB6+LrBhMXVdE7Wvuw+0f3gDeqFAG2AQ0t80rjzGfi2Va5jcIB1Giwuz8bw50eukqvnlJgc4wwO6dXT8mAvzfUK/0x8NpcM5rg9KOmP5NwDScSAYsylF49fZkfJj4Nap20IKIIeCMzeqMhwONjI5O4K52yGAcrS8vbPSHwjnNMKAKJr1HjrZJ2+q5sZkhYf8X8Z4qvGxNunqrEyo18Fx0KSxktaZWY+4azpG+RA926ylX30Je8owNxoIgDZ4RQtk4paCCHfaBGruVSWMDEd9kmwwpzau9+1rVJKiodyAIQ0Ve7lv9bVz5crK2/stCk04/v3tMIFj5tzpJfPaUL1h61R8FlnCSiNJVkTr4kFRLpheGctESErptYIHS3NZ3G1bPPnH7Edpr3kVhav3zuXiklykDIEgZcleLluXoeoVw6Ml0t6sOgdDlL7y0rh+KvuLaMn+A6pkYIQ8b75T9elaNm6jGrusWOSiTM0YG8hiIcr6uliIDPMHyQHDlYIroI607jB6z3F7mBbNGotIVE7zA8tNF1bxHDK9S9HDmgBKnx/BY5wLecJ0cOdLX1ZCJtOCXjNjaBM/DspGI0G8eakjfavxW8ZRrbmY3apOmZvZVKyvoNBHaZw02WdpGe0b0LvrnyQRPvqMLdFkvbUmGLq8sxieteumm46ocI3vI7rpcc4tY0FfgGeV7J+WPBH3V5BZ6Ji32MtXR0IJBvjaFYJFESTgEJd9XCtqWcO3nhllx1hfCYflhBxAKiw9BlUxvd3tmZXeY3\",\"fBMh/2Sh7t3hPcT/YNSIc4EbAQu9eEmL6HNYMSQuVaDiq9IBtRU4BB9iBZL051xQhSQb/p2h7JFZP7QQty8aFRG78Q+8XS7EdTVvPYMODg4ohcx0/z49jHDuXfgV/avdnrJbGMIss6b//+nlJ7spmPrhIzo4oAoVHj1qiS63LknT6TY5bh9WiXQkmUiYJ9UVHu0VfvzkHoqA8+md12Zt1NLyR0lb4jr5H+da9z8X+Bv4EnIwEZhH2R7G5b88v4vkFEiXrRWoOSmtTozgCSTp/Z6EYX847fQnnf7462Au+1M5mXWno9FvCMyxxFW+y7gznH0dzORkKifzbn80GA7Gs9HgN0oB\"]" + }, + "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/\"d2f-hvKYzkZiu8xEZ/yS1Bax5CKMrEM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9331c9c0-d6ba-4070-908e-0a74874b6328" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.259Z", + "time": 502, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 502 + } + }, + { + "_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-39" + }, + { + "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": 924, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 924, + "text": "[\"GwAJAMT/X0t/teXcNWZUoyzb+c/zMzxbfhFSwMz8/LVyn1H8895WWtlSWvSvraAKWtrVqKv0SD08wRM+stMhzrsCDdKZ/fETjIYC9SXVfVMWfUttUfaNLpoFcVGXbb1sNXfUrSExnsKnvqGBoZA4pr87H55663d/Aw9u/Ia/6bDhvxUk/v0ZqFOW+Bt4CzWXiOtHHihCnbD2w+Ad1M8T/g6cCOqEdNgwFIYYz09W4zJ/SK4fEmNQdBmWiYP7/+7erCkZ76BOMPEDP48msIbqyUaWMPHeJQ6OLFQKIysWgjrBpVT5QtZNEiZ+MdF0ltlwmPoxUEsJPW4B8ybRdnyaScWNFL0TvQ9zEAmmiSBnCdODDp251zjTTLx8JPdAOIBSgN1ynYZF7EcV91caqJYIc7i4v1IDvp+Ye/0ucG/2N4GhKZxusZEnCVex0hBwUXrE/dV5NUy8CtQngP4sUUST4RJEifXdRdLEqjUmVi4mkfeRwM88xoQskXiPGvtsuuwL2ZGhYP3O+L8x7zcmHK4oMexOBJKcsqjQlDhQFFeRz5GD6EPLpCXMCu/Ewjxg3IFjlWBmv5LoQC06gqbs/ZItYeLr0SZjCrmwt1yKltSi5twXgIi+6KIcC2r/K4dGLt69fiMKmQU8VFfR+yvxxNHDSiRWxhFNlDJIlvqYKKS4UGwoTkQYeAjkinvddDpwJ3vtNCrkE9zm0VnfncbLOZdloJRF4lCqKM+js4b/qcIoj4ouhsG/O3XeWyaH4hVQUAiY4gSPgM6EIDjou/+8/h9L5GLMbGzxtrSHeTe0NSiB6cXk/DtLjBoVQ0v7JfyFrNG2vdKN1koMnEhTpQFW8mgpfgmL2aIuZlUxKz8t5qpqVFVOqnL+AxJjTeERv6UslrNPi4WaL9S8nlRNs1rO2rL5gZwB\"]" + }, + "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/\"901-CyaqKOxKxOpSeSCqa+VTipfIVoA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c01e4f69-4af9-41dc-a3b2-f3eb23b03092" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.273Z", + "time": 398, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 398 + } + }, + { + "_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-39" + }, + { + "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": 494, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 494, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:16:55.471Z\",\"createdDate\":\"2026-02-24T00:52:45.670896494Z\"}},{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:16:56.423Z\",\"createdDate\":\"2026-03-05T19:05:22.729337346Z\"}}]}" + }, + "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": "494" + }, + { + "name": "etag", + "value": "W/\"1ee-9085tN4Yt4AAHNIjvswdDUciXFQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a171e936-61e8-4e9f-b09e-3ec769f5b0e7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.291Z", + "time": 483, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 483 + } + }, + { + "_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-39" + }, + { + "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": 1911, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1911, + "text": "[\"G7UPAOTyl75fv5rtkWTK2ui0xDvOi/faRVpiWiwygO1mPFzNpVHvxWtSJnt7TyXkzRUYZfsqU18ej6BI6EbICr2vRONcVQdq/96DnwYHJIHLHn6CTDuGCq62W8x8xP3EIxQwX18xVDDyGuL5UEBaRL/11dwNGSp471cmMh9FLJxWcFDHE1QnmG/g/5ic6bzv+wKG5l+Os2veFY+UMi54/ssMSwHtMO6gOkHbcZ8mqH78+S1dggpIKRlTw6hZeTQpeAyysWjaEJpIPsbWQQG7IXEPFbCx/WB12R04v6Yd19N4mscuX0IBmyhsCxU86Q6cRUBF3csfd+M0e+OUEa388ScQdXuo5nHPSwF8dvlQnWC9/HfJE1RSFTC07cQzVOVSwMiU3uT+GqqW+omLkhZ86IfZ2XDID7aUL3kzjbWhOi3Lz0IKXCRtvGcVMCW2aEzp0G90i5pDYPbS29LDUoiPBc86+EYFNEoFNC1HJL2JmIKlIIPy3pnDVKcst00/7Mf8PAMv6VKzgJEv+f86/nXxsaylitQGjZIooHE2YFNuHEZuN+TaGFodDiyUKrbWs8RU2gZNowx6wwrLjW6sa7nUuj1sdUdd/4TIkyr4VWCF4jV4tKOuF2SOPf8y6k5+tuIUijaNs63y6Fpn0VgibFR0aMglmUIZeaMrnP+A+36CmxpaTD7LqTt0aU89LXYdcbUdMke4/Eqcv2ZOnEQ7jOLhfhATjwceBcfGyFwoWThM4zIJFbztmSYWjNvBxFlcD/sx33QoYPbY+0AFv87r+q/yjqzr6eJOXZ/fqet00ktdX9z5UdfTCn+66lz+q1l+h+WeQa1m2bVJuoYYmaRBo1ODFNUGmzK1lEpXNsYdOEotNxQko5VGoknkMGxajYaSVSU7ozUgtL8apm7uhvyB04LqN7rJowisNiPUs3eVWsGfDk0VUansTWYoynQcp/vXD7mlfT9rhHw4x+lQQWVS3mTGSwS1TT4eBwhp//E4pLyZtwZQ+QF+s7D8vGcJ66lhBeu1eMLzVlT3Zj7215ylfpFrRZ0PNLqjuDs=\",\"iFuiHcbdihH2kY877tNn6vd8o851Xq/jkKeh51U/XJ6fRfRHuAw+iXmozop0/RfxN+lacZ7j+lu3xFnlLz67EKc6CyHEei0+bIdjJUpm/n8WmEq3Y6paDClVdHNordQ503Y4Pseen8HSQKu0+96IAIl060POiZRlcvi0S6wnyM8XlK/FK0vmnm2XOGXiWd5d+cwoxFkceUSe3nLq+2sxd3ON6GbB33qI83k77C+3gtsfpGgwCRpZUP+PhCgXechIDrM/xbk78EWRRJrdkxRtxaB/BPNDQlt6GW0gLKWLaChqJCs9GiuVJm1iUgokwt60ki51HjrBBsBlnAScLkgI0aLWD3GWZZNs03AIaKLxaHyrMMRSoXRRBhODJc8HFry1IUiy6Ch6NE0sMUhyGGUjrePgtYoHZA6a+5Dm/mogucieV9lM4yyCKUSp97Zyr4EFls5vUqkxpEajaXWDPuiAtmmM8kGTdFaL0jin2nVBAEt4lNONelpZaV4laRdZBoO2cQaNVYRNI0tsQiBdRval9paihA+c58FTxyG/HChBdWo10CbDiz/81QCp+8DUY6AE5qFCvB0ZmcZOmFmQGJkSPjxvAMsTjt28FYlmEkNhMUwEcyQc6nF6RV3/ecx+7N/SSLvpR3Fr76jrz37eMCr6eMJ6dAFOtagDFBkhAHcZ87S4LS9uiPVavKL/AJZWLmYYTRTdG+8RBx7rvMCyLM3+46L2trG6xCZIhSbFhMFHj0FLt9GUUmg2UMDfIx+g0q6AHc+UaKbOZq0hdW3HqnyvClSpHJYalf2oVGVsZfRK6vAditEvDXxDi1KhtB+lq4yrVFhZL21ppZTfYVkA\"]" + }, + "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/\"fb6-4zK5lXuixtCsZHh7Z3OTU6xteKY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "12a79c6d-08a4-49d9-ac20-70a56270f51a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.380Z", + "time": 310, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 310 + } + }, + { + "_id": "9ddf862c5e19f6be0957ea86ef1d5466", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/822e832b-865a-4b9a-9b35-8c9765c6a515" + }, + "response": { + "bodySize": 1008, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1008, + "text": "[\"Gw4KAMT/1rTTlXlnTNFoDMctraN+N5gEXMDU5efv97q/p3ji/6YKqrLI3VpU0GgaEZY4HY51gFNRZ0f4hWRF9saF2TuMe/ALV3JBEGin0/3OebO4o38P//MeNi2BQ1UQyOOY8iQuojxLZTQqJjKaFEka5eVknKVlJtNhCg5t/KWpVK1kMacba1qyXpGDeP/kWBk7q+dmBbGDqiAa9T+n/kLg+La0hBhxuHJKC+kgdijNYmE0xPsO3wvyEmIHv2kJAn8vPxe4PViK7jvB0eIJ7TBugI5aldIro08/4O7or1OWKohazh1xKHeqPVkt5xDedtRKGWIHzdros7oe4lDuSTlVzKkY/wF/HUTCUY2IwNs2OhMPc7R4pHRGs9rY2Y30WbzZEDj6iWxYmtMKZ4dy+1OpfyUOskaD3XfYho/tNspODyywHTHM9dnpgRlk0qU6rW4s1WpNtIAzwNr6DOFapohASXScnR6cDoZyB1bWXgWpwBH+THSjYdt/U8iQYtuMGxvJpqf3FUt/1DmPwOFpjZp/BtXxJOcdQcCFQD+XqlV2cyA9iZt5hwrBU/bKKunJEstx9dGRZT/n8lQ17GRGsyV/MNJ3B4+CQppXS7BBWM4EU7Lul14O5S67uVdUmMnet1+1YV/YDgmReHao3LcKXP/LQ6t7N5dXrIVB3G3HtdMDNiP1yDUCyzxWiuEUyb7ce2k904VlLpRkbad/rdRBYztJV7i29lBXey6nue5GMTcFSZsLITzK0EMW6HAiIcqr8vltOgYyXS4xhlEbJyqMmZPUiFeqsoo4ocogOiHdS6ZoqDyMXuleVVjWlmoj9rCqJHNNFXJ71RA+OUajOojHfgX3t3iSi6tuUZANk2r/qjyQXLBMpuEA+BWcA3Uk+bRDmuoApBOEApjMXC2Ez8BtRb3yz1FBPHfqbj7nWJCXleSAnwBiD34L8SDOokESxdlDnIhhLAZpL08nb+AYh4w+89tikcZimPXSJE2Go+EgeUMI\"]" + }, + "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/\"a0f-Kd6MUfBHNb4OWLWEcLxoNF+/hSU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e50bb6a1-dccf-40db-9b69-3b3be90d136c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.471Z", + "time": 413, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 413 + } + }, + { + "_id": "9c5003104796a15fe33199c0006bd65b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow7\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a41e5189-d782-4e52-a841-652df7a21b2d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.484Z", + "time": 276, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 276 + } + }, + { + "_id": "76918af39bd7b1c1d1f1f23f85292c9c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1950, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"createnonemployee\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "05a3de1b-e779-4213-bac8-d510f6f73f79" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.569Z", + "time": 192, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 192 + } + }, + { + "_id": "125e659d29b2db9470f4c57da4fc5809", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"ddd56024-02ef-4c14-8bce-7b8bf4649b99\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22ddd56024-02ef-4c14-8bce-7b8bf4649b99%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 482, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 482, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"objectId\":\"requestType/0ece99b4-5039-4bd6-b31c-de14bcf45f11\",\"metadata\":{\"modifiedDate\":\"2026-03-28T00:23:50.832333048Z\",\"createdDate\":\"2026-03-28T00:23:50.832259126Z\"}},{\"formId\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"objectId\":\"workflow/phhFlow/node/approvalTask-bf52ce203a81\",\"metadata\":{\"modifiedDate\":\"2026-03-28T00:26:51.612871456Z\",\"createdDate\":\"2026-03-28T00:26:51.612870099Z\"}}]}" + }, + "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": "482" + }, + { + "name": "etag", + "value": "W/\"1e2-Nrjj+1HM5qvzwscboFRvn9KRivk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bafbf475-c8e4-4c58-84f8-176310dc0b82" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.576Z", + "time": 232, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 232 + } + }, + { + "_id": "66d6956a74d70d4f9d70a0540829efe7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"pghgeneraterap\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22pghgeneraterap%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"35daadd6-bc63-47b5-a0e5-7756dfbdf229\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-jLi+VtwcliIBr0Tya6zhkTXnmLk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b01aa151-73ff-4550-85db-7eac1a6cf28e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.676Z", + "time": 181, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 181 + } + }, + { + "_id": "0b5ed69ffd9f3a102722c7c5928238ed", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/e58d2089-3e92-4a0b-b0fa-3ac6d4251877" + }, + "response": { + "bodySize": 1231, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1231, + "text": "[\"G3ILAMT/9jn/6/fOeaWxtkJKr+jeVcwKBlCT7OPn9/f2/l6NBx+exKtBSEtLMNP6IktYrbOIbtnrObyrgQWmPXj2sRozJEbDxHAy5vFfz0lgH5IaBHQKCW520lql003q3K0lDVXpJb1KppK66rfSRq1Z7bTbEDA2HNlUZ1r1cj51dsIuaPaQD08Cc+vestzOIQswzh8Nj3lD4qddsg81RIEXxzPItoDvD3msPGSBvh2PrYF8KPAy5qAgC4TPCUNi3PKDQRiDVFHnPA70+RCYaBNVYMIA9TLdV0Fbs/8Af87vU+04hcxU7llA+z0T2BmVQwY3ZSkFkAWMyzru8zpLQPtr7XUvZzIe+34VyLpAOhUC70Rof1z+nMUNlbeGMut+a6TP6ZsVo0CQyIbR2Uv1rKf9xlCZgdKDrNHo7tuS4aP1dGlv0wLbBqs5Ne1tmkHP99Veeuo40x+OFvSMoAk/Q3Utm6iBUst42tvcrw3tN53KAgqSokDeZ0Kl8bb/9GDoYtsWC2tPX6b3GsfvPPUBUSDwh9Y8DNRx1yqfMiRyO3f+H80fE+0+N1VgvwNDQPhiKVWBLbFsF115djQslyflMJ+sob/9QAoHT39C+qGWYIPwJxP0ykdcGgtofzTNg3YFfVRjlW+DtWEsbKukkXhwJFTfPEP7Xym0aP306JgktOBi2y7e26Q3Ro/MEbzMk6RoS5CsykVQLhAuLDsCJWM7Y+CUcelcskn1mt0tk26YTnNaiF5ue8GdWYyxlKEiC3DYnZjLqz7nd+9jRqbjJOZhRL+VnrU5K4OYX6loFfmE6gNiIqRLvu2NuL9lLOl1lrGllCpEWHVhX3cSLkUxPglMQ7UFZb/C9wUDPWNToemqgG65be18oAqP4dxT9a4QeUSRVFw5gKnOfnRwkNWS/T0vxqdoKIriAVEJOWd6O3V9hkS5TIPZtqNPeSl9bfJoymWaKffuG5eoeAQ7Z51/BEl6eBL0iJogvRweF8jTdUa/n0QQ1ajOuOAQtBn4kp/zgKSEWLnq05iWlpYouCmzyfz5k35XBryluttgpRHN\",\"RJqa7zMQySndtP//p9XtpeD0+PcfWlqiX7/+/KHiKtjsLZm7lNJk6oe/H+tmmaQ92ZCRPuKP3Z4oXXDaSQuIAmMOKlVQ40o2IvddqFVqraRST+qVy1pFNmqy2S61m917CNSYdR9+YrUrG01Z75bajXa11a02aveIEQ==\"]" + }, + "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/\"b73-2wdR4JiknwzmWtNf8LDTwWSQxLg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8b130fa8-b2f8-4036-b7ec-e5241008b7ac" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.695Z", + "time": 273, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 273 + } + }, + { + "_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-39" + }, + { + "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": 478, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 478, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:17:02.496Z\",\"createdDate\":\"2026-03-05T19:05:28.771987512Z\"}},{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:17:03.495Z\",\"createdDate\":\"2026-01-30T18:27:54.68190238Z\"}}]}" + }, + "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": "478" + }, + { + "name": "etag", + "value": "W/\"1de-mAnXbYOMySaa8rJ66jPiHxYXhBU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "37cd879f-4eba-428e-ae78-ffc3bf897a0f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.696Z", + "time": 161, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 161 + } + }, + { + "_id": "2d1db9e4372697dd9798d127038ffade", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1937, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"test\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22test%22&_fields=id&_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": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "18c4fd65-077c-4ef2-ad72-8867e3de25dc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.764Z", + "time": 147, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 147 + } + }, + { + "_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-39" + }, + { + "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": 984, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 984, + "text": "[\"G00JAMT/puq0cm9GcumMKa0j82WRIFAAVx0/7a96/7/GmXm7TkKSGjwLIm06EJ0u4Xo5E+t6HfiqMkG9rm6x78GbX8maINBUVabI0EJGypaBfLY2wZ/M4rYhcGgFgVKVM5rJXlaM5mU2nI1lNu33iowmxUCNpsNef9QHh3Xx0ildalkYuvGuIR81BYj3T46183+lcWuIFlpBoKmqAzK0kJHUYyB/oIlLn13Yz0wc355WED2OMK+olgGixdzVtbMQ7y2+a4oSogVeucBm52uB84ljye5o8+iT4GjQyVrsMyCg1HMZtbOvXwh39L/UnhREKU0gDh1ObSRvpYGIfklU7BAtLKXss7TO4tDhSQddGIoGG+Z3gxhwqB0UCBuilXg408UNZXCWlc6fhqTI4zWmxKE/wkNrThXOAB32K2kXEgfhJg520SENEbsNyk4POGAdAsz+7PSADcLSvjpVN55KvRE0hVPCmvQShMs4wghiolSz0wNZrw0dDrwsI0Bd4igWE4kVR9rim3eCImYdA7FMdpy913j6p2WISByRNqhh9aiAJ2mWBIEshOxnXzXabw9kJOMGuaMEkYXPlCkZiRPGifMxkGereQlUCpPMWXZFEDKjOmDXFFHncIl4oK4/QUk2egnl0OFyaaIWRWJmL9pPOkFdsPYIIvrNsXIo4P5XDnXu3VxeMQpJ/FknrtMD9kfWE50ikjLsrSKdRrIq91H6yOyCcUrFBKHqF17aQmOcZBWu0R5adYd4cb7TKIwrlDtcSqmWIVUWssNCUikfK5zY++OCLF4ougwjNLZUOGdIWpRXseLGKCdiBaAzIfnbXPFL80f22u5jRY62rVgJ0xqORRJkTZAAPWdKnxy7V10I4r1Nn8kJZyhYmxNZ14l2aQxHTVEq2USA9hOm/CL0u/1x1h1k3dFDvyt6YzEc5YPR+A0cu2CJFfgh/aw/eOgPxLArepO8NxnMJoPJbPyGlAA=\"]" + }, + "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/\"94e-svx3ULK11EYO4PEB5FlGcWSDEks\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "71d9c0cf-348a-464d-9f87-aa1b4db4d0b1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.779Z", + "time": 273, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 273 + } + }, + { + "_id": "28fc5d07a0576317ceb2d52e715136fa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/0ece99b4-5039-4bd6-b31c-de14bcf45f11" + }, + "response": { + "bodySize": 992, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 992, + "text": "[\"G9sJAMRqqb6+zL5xk1x5prSOxCkiQYVid47WWu9vteztvIg0MZmVF0M9kajiDQ+dSCiZ3rBpw5dLtjT9WeCgV/SjTDdvUXvwP76SFUGgLcuHdUvg0AoCfcppNsuGnVE/nXWGmRp3snSQdxQNhlleDEfFYACOugmXjdKFlpmhG9e05IImD/H+ybFs3H9hmiXEFlpBoC3LI9MsETm+HS0gEg6fl1RJD7FF3lRVU0O8b/FdUZAQW4R1SxDwax+oAofSvjXAzbmU747ud34YHHUVCQrfFkUAugqdy6Cb+vsb/o7sXDtSEIU0nji0P60DuVoaiODmxEOTg9iiDs/sma63OLR/0l5nhsTgTvsNECmHqjhgaY1uxMOjK94pfVOzonHPFWl1eBMxckwI9WFvThXOLu33S1n/Shx0pAC79dCGlW0nZacHHqgdAszj2emBG9SlF3OqbhwVetUEgBFOD2v1ScJVOVIQcAMdZqcHQG+G9gdOFgFgLHLkORkpQbRtNz9J3AvHIQZj0+yP837jyNLcB0SOQCvUcL3Ta0/SzAkCplny50W02q0PZCDXhCQBbhCFZKVclSkZKPoqJ4VHT45dt2VWGi6ypmav+ICZDqg1wTyUJZkX9EIJdLLq59D+cm6CDoUc7a37qiX5o3IQfyiJIcJToWc5JLK/tUILezeXVyxNjtDVToqnB+yf2MNqJOCh/MQkSXIt90G6wHihcookAWH818k67+1nrXCd7WGtPiAnaJeRmSYj4ulijEcZSzhkEXpLZXneOJvbb79JozxNOIdRGw/KmsaQrJGveLKcPMEbgBch7dkm+6PcKIf3PGGWW7z9eIZ5DWJNO9grxPjJUS91hGM/J/bxtiwfHBCQBAbI5gESWMRAWLpozvXrm595REwAo9yYFGP8jNxDhdM1FQWp5PkNnM0pC/VHSPrJuNNPO8n0od8XSSqSpDseTd7AURBGcvCX/bSbDMZJks7GyRtiBA==\"]" + }, + "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/\"9dc-ftoi0jjK7bfaeZS+hsM1x30mOH4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a6226c54-a424-44a7-85d0-c23e7fbb01e7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.813Z", + "time": 270, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 270 + } + }, + { + "_id": "5191df4e92cb2ffde8b3ed9d6c1b9c01", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow1\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"e9dcd66e-1388-4872-9790-66df2f44deef\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-vHI8zD9xXTlbXAhbTpad9L3LBSU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "54586e1f-8ff9-431d-af7a-3a14eef95444" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.845Z", + "time": 161, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 161 + } + }, + { + "_id": "9d189733ae377b9e88782a9116cabf74", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow4\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"3eb082e7-68f2-409f-9423-26e771259dc8\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-l+ootFO0p3A3tb/9VU+ejicl6mQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f41d0e31-6f00-46da-9af9-0c42a8587585" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.853Z", + "time": 159, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 159 + } + }, + { + "_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-39" + }, + { + "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": 1207, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1207, + "text": "[\"G0EOAOSaqtPK/YxyFqphTGkdmZdNgkAUtyT4fWMtlMvJa1g7ZEkmTUxm/w4m1kwaHhqPTvQQAiridNuRDYqjKuupMP4Plj340IUYEDiM83n2f8f/PGaLgB4oKAkcWjmZVFVXZHlV9VnZtlUmyrzKyj6fVkU92W6xBQrGxnMrVa9Ep/HK2xF9VBiAv75TWFn/02u7Av4HSuZrc4Gr+4B+N+tnQKLw6XEJvKQQpnMcRAD+B1M7DNYAf/2DzwGjAP4HcTMicPjH8hMBbYn0Sr/Bf4C+FiiMcNL/YKkAbXo1FVFZc/cB4QbdQnmUwHuhA1JQ4dhE9EZo4NEvMEs58D8w9ep/EushCio8qKA6jW76X+83Al5QkIsgSB6TjoW7bVm8UARrSG/9hkZaj7cwJQo9pNowM8cSZxsVdufCzAQOZenBbvdzWHK1VHK814KQpYa5ODnea4b6+M4cyyuPvVo/egATnKlkjMeEG7SSCCDKHHK8V+uzocKeF30EmJ8oCB/Hy1PtlKt7ZolD1jpZX7Imva94dLgIERKFiGvU+g+g7nsQeoHAQdsVf+7EqPxmT0Rsmpckuu4ioGD4UYkUEVsStKm8D+jJH3IlyQhriTVknx843aEXPuFspaVoA9nDBCOy7peOFFQ4X+ioSsGjvd0NzeyLkLlCRO8Ny+1K0f7XFFq5c3V+QTJ04zlkU3W8R36QPW5EUWW9PIreJMmp3EbhI+FF0JZ46qIWzLwwujebRuJa2X0jr7Wf53EnOm27zl1eSmmUUUOW4CFL5ZGdT0ZRJKphKseVOms1CgN6hXyBTiADOhGq5zLbfeP0BvAeObvcQoFpD6OUutYKic5XmdI7hQWogrEfjOY0NiUqJiVlSWBPkWKCKvHLSI1PWDAb2iUKM7VEc76j+yjqHKolGuJkiDkaOQ41Lu3EIJRGsAfPhdIFGMUi+UwEc73+duFNq2PIXLJ1G4OQHtD5sSw7jzaoqKy5XaQP6gN9BkDZWXLFVMtl1YkqHxMkRXScyzhHfyntmMo9mg2eExhspzRWpXAXtf7bdvbY0XsVSU9U\",\"T9T8ARZopiC5kzTSRj2tIcmcNJgvDDHKoYc9HCPToRCMKbL7xaqU3hOVTVnUegNGIcVMk55nlJr5LmATVmeTImP1XV7zinHGtppt9gIUZgGp8RurLGdZXt0xxhnjVbtVsTKvmryoXyAl\"]" + }, + "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/\"e42-ZijG2C8+yDCiyurcs5te6930o6c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f427b9d0-d502-4322-8f6c-a657672e3700" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:28.862Z", + "time": 229, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 229 + } + }, + { + "_id": "a4ddf351712dc385b5569cbedcd3af48", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1948, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"jhnecreatetest2\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22jhnecreatetest2%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"e58d2089-3e92-4a0b-b0fa-3ac6d4251877\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-AP2y2YOs8PpbyZ4IXnpeqWexUnE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a128698f-f2c6-46b2-ac12-8ccc80352635" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:28.973Z", + "time": 146, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 146 + } + }, + { + "_id": "ec59c6b27014cab69d297b222e19c551", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/e9dcd66e-1388-4872-9790-66df2f44deef" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"GxQJAMT/puq0cm9GOZVmxpTWsflKSBA4gNL5+WPmvlL5/71VU9EsLfrXKqiCRtNdp0fq4Qme8JGdjdp66WUAQxi58cf/oBUEaKYWqm0pK6q+z+q+K7NZN8uztlVDOdS1IhrAkU7hUw/lSBCIFOLTl/Pvg3FfT552N37DU/xZ0lMBjl/9EILikUK8IvmRAonjydMnRMERFq80ygDxh4UbR2ch7v7wNFKUEH+IP0uCwF7kxVDow3YKYRwcqSp6NfHEJADyBr2QUTsL5xvCKX1M2pOCGKQJxKHDjo3krTQQ0U+kbAziD1bhxl1eN3HocKmDnhsiw/3sp0BUHCq9AdtSaD/OC664pwzOssH5UkWCuRJIicMdoMNgdhTOPB3WXqV9kTjgnxLs9g0ZdtbMynbWNdBaI8zpbGddDfD+qdpRx54G/W1oBqePLfkpwtXYUARClAG2s37aGTqseznEKAgnjr6cStxIrO04JlLE3bI1MQqrZ9nmfcTTB00hInFE+kaNWztddinNRBAw7kuvX4q+l9r/rMtIwY12JwxJl7IpUzKSJhq7xEUgz7basioOq8xZVsEHnDswpQmuSJbEL0x1Ehjku5hDh4PJRG0KtbC3r7FWjJ+WhS8AEXs2Rjn26P5XF5pYPT44ZBIquGvtkjvr7J2ih+dIwGPiE7UMkq2cRekjiwuNPUOJCCMvXlqTLpOswrXYDatapJNc1zE3bh6I86WUhjIwyCLh3U7qy4v+5/C/0x6Z7F9sPwwGiQeZO2dIWqT+lYhW0J8Q/YHtCGE4G3XzN1oIxciUY+ZjSyiV8bDoV7Q1EKG8lJQeEkdyqdix0m/il9JoZdsr7WQMx0hRKjlqgKNBVMEvoczLNsubLK/Py0I0M5G3K1XR34IjJRXRn99SZ1V+XpaiKEXZr8yqsuyLqitukRI=\"]" + }, + "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/\"915-OogZu/XeTsl03kPDveC4AHiogh4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1b79b266-3021-496b-89de-66d8a98d6fea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:29.011Z", + "time": 174, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 174 + } + }, + { + "_id": "194ac1e77d9411c49dba928d7165951b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/3eb082e7-68f2-409f-9423-26e771259dc8" + }, + "response": { + "bodySize": 912, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 912, + "text": "[\"GwIJAMT/n6o/rZw7o9YY038pBYmnBBdwALtz/H6u91kt79/NPFlac3068TRHEokqIp0QIVIiJZMaNk320kRj9NUCB73SfVbc/vgZWkGgojHvS+qStp/LpM6HORnqskrKlrquKJtBTT046hR+9q1cEwQC+fBvb91yXtn9P0fbjT/zLxw39K8GR2sQwlAykA/fRH6kRuT452gHUXD46YnW0kOcMdn12hqIX2f8W1OQEGeE44YgsIs8H4r2c3yEsAqOqop+TTqxBEDdrCcZtDVwvsF/pOetdqQgZrnyxKH9CxPIGbmCCG5LziYgzjAO97/U9RyH9l+11+OKxHCf/RKIikPVG3BsjM7i84Urniq9NWy27qoiIVwpxMgxHODDfF4onHXaXz9J8yhxQE8BduetDSd7bMte3Higt0aYm9mLGzdg9G/UC/Xe0awPgaZwBthGnyRcnY2GgIsyxF7cvI6H9jdOzoEF0ciR5WR4I4i2672QJO6hbYjRWC/727wfOHqmrQ+IHIEOqPFsp4e+ytWWILCye79+KTpstDveyEDkxrgThWSmHJYpGcgTnV3qiyfHztqyKw37mTXsBh8ww4GVJphLsiTjQt1OApMcmjm0f7NdBR0KOdo7r1VL8mdoMRaAiH6bWY6J7n/N0NTV+zdvmQWFr94u/eKGLYk9rEYCHotPdJMkR/IpSBcYL3T2lCQijD06aUK6l2QUrt29NeqJcoLPQYwrOxJxZzHGVQaWLELvUWKW5/VzuXYtkYl60TkMlsTzjNauSBrEfMWT5eQJXgd6EsI6G7fjgiajyEwxZpZbXKvUCPNaMdYghPZKYvwTOcql4mQtWFOQSh4C4OGO5sgXoMzLNsmbJK8/l4VoBpF3adt0eZc3Q/0THHVT1ERq274o+p+IEQ==\"]" + }, + "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/\"903-e6Sik0R0hO2VUCkj71QuFseUHtQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "41373d76-7c35-4246-a922-bf814b333cce" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:29.015Z", + "time": 171, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 171 + } + }, + { + "_id": "7bc7d2595b09de1740298fb6be6c2b18", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1964, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhdelegateduserdisableworkflow\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"fdf9e9a1-b5cf-496a-821b-e7b3d5841252\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-Yy8CBTGS7RdfjkCzspEReWKWcRM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "16add01f-6d7e-47b3-b5d7-14147c86cfb4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:29.057Z", + "time": 151, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 151 + } + }, + { + "_id": "f5e39efe8b47550c75b3a572b9d493c5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1940, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhflow\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhflow%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"0ece99b4-5039-4bd6-b31c-de14bcf45f11\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-Kq3x+ZYLezTJz39zQ3Jf+ON2qwk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "faa8b697-d7c0-4894-b22c-a2597f254863" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:29.088Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_id": "c2a67b99df3cfc4c55c29ca9b9679801", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1949, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnewusercreate\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"8d0055b3-155f-4885-a415-4f1c536098e8\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-vDgRX6r99d3E1AZX02Sj+VW/eJo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "645beb8e-9238-48ac-b62a-130134df233e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:29.098Z", + "time": 158, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 158 + } + } + ], + "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..95c8a294f --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:22.966Z", + "time": 165, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 165 + } + } + ], + "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..eb2148ea9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_no-metadata_a_directory_3627220595/openidm_3290118515/recording.har @@ -0,0 +1,1740 @@ +{ + "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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:23 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:23.198Z", + "time": 185, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 185 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:23 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:23.417Z", + "time": 100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 100 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.500Z", + "time": 383, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 383 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.505Z", + "time": 378, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 378 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.508Z", + "time": 374, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 374 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.510Z", + "time": 373, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 373 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.524Z", + "time": 360, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 360 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.589Z", + "time": 440, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 440 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:33:26.591Z", + "time": 437, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 437 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.592Z", + "time": 436, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 436 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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\",\"displayName\":\"Frodo Test Email Template Four\",\"from\":\"\\\"From\\\" \",\"templateId\":\"frodoTestEmailTemplateFour\",\"defaultLocale\":\"en\",\"enabled\":true,\"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\",\"subject\":{\"en\":\"Subject\"},\"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\",\"description\":\"Frodo email template four\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:26 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-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 654, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:26.593Z", + "time": 436, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 436 + } + }, + { + "_id": "d39b33105378f498860fba818efad420", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "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/staffNe1AccountCreation" + }, + "response": { + "bodySize": 3217, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 3217, + "text": "{\"_id\":\"emailTemplate/staffNe1AccountCreation\",\"defaultLocale\":\"en\",\"description\":\"\",\"displayName\":\"StaffNE-1-AccountCreation\",\"enabled\":true,\"from\":\"TechSupportPortal@fcps.edu\",\"html\":{\"en\":\"
Non-Employee Account Created\\n

\\n Welcome to FCPS!\\n

A non-employee user account has been created.

Non-Employee’s Display Name: {{object.custom_DisplayName}}
\\nManager Name: {{object.manager}}
\\nDestination Work/School Location: {{object.custom_LocationName}}

Your UserID to log into computers is: {{object.cn}}

A separate email with just your temporary password has been sent. You must change this password before you will be able to use the account.

  • Login to the FCPS SSO Portal
  • Set up your MFA when prompted.
  • After MFA is configured, click on reset to change your password and follow the prompts.
  • After reviewing the notices on the pop-up window, select the blue button, \\\"I agree to these policies and directives.\\\"

If you need further assistance, please contact the FCPS Technology Support Desk.

Thank You.

FCPS Tech Support Desk

\\\"Do you have an IT question? Ask the FCPS Tech Support Portal, where you can search for solutions, services, and submit tickets to solve all your tech-related issues.\\\"

\"},\"message\":{\"en\":\"
Non-Employee Account Created\\n

\\n Welcome to FCPS!\\n

A non-employee user account has been created.

Non-Employee’s Display Name: {{object.custom_DisplayName}}
\\nManager Name: {{object.manager}}
\\nDestination Work/School Location: {{object.custom_LocationName}}

Your UserID to log into computers is: {{object.cn}}

A separate email with just your temporary password has been sent. You must change this password before you will be able to use the account.

  • Login to the FCPS SSO Portal
  • Set up your MFA when prompted.
  • After MFA is configured, click on reset to change your password and follow the prompts.
  • After reviewing the notices on the pop-up window, select the blue button, \\\"I agree to these policies and directives.\\\"

If you need further assistance, please contact the FCPS Technology Support Desk.

Thank You.

FCPS Tech Support Desk

\\\"Do you have an IT question? Ask the FCPS Tech Support Portal, where you can search for solutions, services, and submit tickets to solve all your tech-related issues.\\\"

\"},\"mimeType\":\"text/html\",\"styles\":\" \",\"subject\":{\"en\":\"Non-Employee Account Created - {{object.custom_siteLocation}} - Effective {{getDate}} - {{object.custom_DisplayName}}\"},\"templateId\":\"staffNe1AccountCreation\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:33:27 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": "3217" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-ae2d6064-57a8-4fb2-b5c9-3307b6c075d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 654, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:33:27.107Z", + "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-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..674ed41f2 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:07:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:07:42.928Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:07:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:07:43.265Z", + "time": 113, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 113 + } + } + ], + "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..f3e7c81d1 --- /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-39" + }, + { + "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": "Mon, 04 May 2026 22:07:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "49776294-6db4-4f89-833c-25b2dbc0ef41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:07:43.382Z", + "time": 108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 108 + } + } + ], + "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..01ae2a067 --- /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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5dXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dvECbWhzZDuUVlIQKPDr/1djntjOXCCho3uOkyNPlMutTBBT2VJi+T/PAtvbLfvLKaNj8+OHuryeEquWdQwpPFs9QhRScx5OD6ucrBPjRCt7VZ97tuXte5MgY5kxmecZgGeh2cN705Gah/smeu2eg4NOS4/IAGrS26hU0vvidx1PyaM2ItUOlh66jYAYvTEID3NzfP2y/rAHabUAF7dC1qut61B7M67wVyFLO4jJKYaQRLuRh/W59uz/3f1am414Zfb2cNIyzSJaNyKMYxke4zY9G5mqv9RUocOGNdVC9gnLrl5NF59LrzdsBKRyv7DahgmA+r/UKW6WRiLJi1RRLnoEBedcRLkcePn+Pll+JaUnsseTgYWFHeWes9IG0xvbc17phrqzWhBBy5nb/c6OQv8hOBi5reUD/hVvFmw7ddPZmgcYWN0/ffiPJXwuv6fKAfjpRcjLvwrTEF/IXeSoG2sp+yWGYaaIOPDi21W5cCwyWmMkFE/JHMjuiZPJ2vZ9Q8jpS8jqCwrIfIT+zcRqEEKJkRWo4StaVy2BwaIMaoptFS3xZrkxzWtuLRvszfFwqSWNCnXNkV5EU2hJCSHWaWJGqIqYvFYv/o/DnJebOqYO+wQ4Bkl9HWPeHXVCKoTHx2zE+vqn1OJvOaj2fB7We1rp6GfBQUMbcW6n1bDqDkQKeUfv2x0Br06P2Haqd8aotn8OECu6skWaPzq97rro99qeOe4xgpJApR5esoXqlJVqTQtuOLigtrlAlFCT32HEEcUo6RZan+o9pMmfhPE7mWTjPwnkUhuFsNlt6s9ltd94qfZjOYBwpoBO8A9IpoKP+mbH0jrBI+CcpkNv+CQlbFqeiLBdZmaWLpE3SRRNhsmhL2UQtT6RoMwSFi3jwdKSALydl8836qguqOs8kWhZRhtFNoT8aMLEuCJXOeh0KgXbJPlnfgjl4d2JBoxtHCtj/9a3pMGgwK9qCRQtetGyRxJIvSibbRZE0jciyJM4HG2QhGkju0wYj8Kw+Xk0W4NTp9LYYqL3y3ZGfGGU99eT338k=\",\"TMCNL4O/STgj/8zPKm6YSVW9L/nsQvMVHc7ckh0HrcEOvVf64FiAg69BHXggTN8b7QJhdKsOgTrwpx0vhZ+yfzZqoKSGt+t9DXxA8zO3RLk/S/4ieug6NmU0qiW1NWdrOtxWk5ja7Gf4CH0ciddeu5UiMZdKskliT76TUy2ZFoPX778XTNpyVejwTVYs4bCxFEu1Sa3pfQyfGB5pvp6YNBMeKR5wiYyLrbsmM5HVQG6mPI7jyCs3GalQoc60q3zH3C1HfVMxegMNdUrAqNTd5w93mw8fhBT3QHrLPV74dVEmjWCSpS1rkssfsVbrT9+vuT/O/XGA2Afx4NN48Ec8ZEF2d4hP1nT0YTxwAqDEJI2FRC1MEDTSGaJoq5oymDcj9zjSRxs0R+W9yxfeKdkMw4RUIRLJiAGnjjhAVevWAoJAET0SJ+cEGrqBpYvUWiNnkr/+wjtxQPjQMqHdGRFU2MViDmebZ6ItszAVmKrr1CCpfMtVN1g0FJkq76G7ZRBdt0OMQSk7MlSwZSBRgN1BBZ05CDi96NZMa4BT1F4jcmAXZqlh9gbq10YRqIxpmwX1eoMijIvqdNS/SFSUvG7dW12GKLnze5GUrE2RF3nGskqE9wBx0LjM7y8mAAvORj5azJ2GrUPUvTxGKIQwVTxqIXK7USpvlRZTZ9cSKC4ZNw9n2grdtVOkaQZ1EJvfFLh7XsRhVrSpzKNIFAXVLpjXGtYNaCPREW6R7JAXP0749Z7NM5Kb+40jxjKajZFYSa6QdOagxLLW381AxOH8GMsgFlEsbm5WH/9/CJa13iGSo/cnVwVBw8Wz8/yAy9bYA1ojnp91mAOSRrhASdGZQQYd9+h8YA2KWSSRILDYRIKLZSW0EHxHM1g8dLQNkNZY0huL5Ag0JueWtc452h0wyHv9Eaf0oUMibeEHys5nQs/wSxd/xFrnfxSC+nGxbUgSpQkn3l4Xe9rtjjSdEc9JwXbAeqhq7e1V94058h9n2/zPZ2Nu2TAkoKQkRppJ1U3HWgMcmaKczhH62XhA7owmf5HJF2S/Y5QVWVtrLLHIpdKHrKyaXJQ/EiWJJMDSSZ0H/Ui1Z6sg3rQv4hrVm2Qc4QU0zClD1koe1h/Xq83N/jYteug6g9V8u/nwYft1odNYf7vfPNzsN9tPvRdEzcR7i94zRkau3M9yPwvAfMCGjDD5wXkR1B9ssCnhRF3O09TA5Uc2tO86cylR4SoCRZxi8fEmxnq1PqGspYxcOkijGS90GsR38p7TU5FWjHZGsZ8iFjfQ/50ilgvbfb69Xe92NKzphSvx44Jq8lZEWSl4go2rRw1zd7P5sF4NkzcFjkWOnvwRiTf0rvta1+DNv9m9eC6F6Wt4AyMFISLNW4j8C5G5zSW+uSRrLo1MY4c98lc4YtcZqOBgjGyuCBSOCio4mo7DSGEbp5xvSt52r0nvzGClGYXKU5F8R/uVK0kG4nAB/dc5KWaht9uP9x/WbBfBD62VZQxZzEVbFtGwYlt0Q48=\",\"q+6XyymidwY7iG0miqCq6A2YHYo7YRmCNudhpUxr64b1nyYueR7JhDcFykEbPP5NqdPJSQEZJQkzFDgviFZihxu2b5ex1oeoOjLIZE9Fn0+eJPLs4/ZTcPMXVFFEbVzmKcZJePLHyofhMWTkc6RRgeqI9nwZS+5RbpJLO0N0lNqDrp//2vJYpiVjYRTF0SALQCEQfmQZJgzyCyGFxIIEEmUhQ86nrVEqe4hFFzEDor14LhqWMCFy2eaiFDEISsCoVWhJz9KWh7XD2iJCkqQQoQCIvdLxLxuIFnXRbIswy9KoaJKMF5Gs2EWLDvVkViyqEKh0V8IuIHVZuW88WVkGdEHveunOBJKvMzIR6Okf6yo+GYmI39TyU662+QovUBVxRuEKVRpSegWziFWxzLWWysWIRLNtnZ3ZbqaNPg0eyVtPPw3lVtacTrzp1rpaLeVW2KHHCZNbS+Xn7f0/c0aL8m4eubOLiUCefGhlbzT0TXWEUhQ98WRmz23T3Ai3imsPFTjnDGCbwF2j3UjhqbXM5KD6+YiPofH14sQRex4C+/7h9LnhOJaz2/qibRiH52xJjOYRq7jNZue59aXbdSOM3rZaPj9RwhbzPJKlfIanjl+fuLXmcplE6dbcjWxSH7GvpUJjHjYlM8da4Iuqm/q6GykM6tZkjSRey+7PKnEvoiRbsrIsS1aUWVIkrOgqlxelyyyK05CFaZSneRFhBRsKs2cabIXIKGaw6ClVaie7g3vV4+7ENVQg+XXqZjAHYwVJ9Ucc2JxYxHG5GQqPbY9msBfwZGXLxCSBGIxuvdH+eJMT4cCEz0Zteh5oxaOHCuQS8MZHSsEfDeUNvX6X1ElH6j2Oaz8Ra1cBSxc89UiyyzM1I+K+8CzOvORMgbk04j33xzGSQSPmwSetmTc9dOiGB5r6KivqWKc4cZ64RuoHb72WBCCxoPnokzCNkvm8JN470ENkQYvip3moqv1mgBWbFGGdJDqPiH08WyMn/1IuiM+INTjD2F1O5HGBV3VSXhvYVcH/kuPBAqZh9iwplsVK4iKLwpiNFhvC8w6wqTUSHDXPy5ikxoNMLBZUDU3v7tPQN2jpNV7IqhFI2wtIvPdw4+i1gHmRqET5tCMY6bbHVcCAZh2mpnVHG+1cDQ4tSGQqaTmk2UDj38GaDkGqV8CBOGN0p9ZPncBLkU+IVjqPr8248LZCpvvGD6R4jgcEvInAPclZYhld+SDhIy31jqjoNHwiqsfmynFLnYLs2wsoOliZnbFkmfyTxXFRFFHBsosGVeO8Hv6n4h6rC/EMspcXVJQlHfVM8lFiGmRPGqjvYFmxWRTHJdwm/cJx0RzvrTnBd85EvGVKrEbMQ3QTofXXBKwcZGR2SHLHUc9d4SoTbLGJ3hfWB6AJhulW1XGFVVKJ86IIyJ5Q+uO0e+6er8zRc3+c535wUIG0vPVAoR88MDp7O+AI\"]" + }, + "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/\"5798-ZwyhTetdwpBlYDy0abdq/iZR/3Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:07:44 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ecb08400-0ab3-40d7-a720-32c9bfa81515" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:07:43.606Z", + "time": 531, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 531 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"579c-uyJkhv7mnbIRTZcJHDfkHz1pVtI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:07:44 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3728c6af-ab81-4cfd-a7b6-33123719ffc7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:07:44.146Z", + "time": 397, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 397 + } + } + ], + "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..177ae3f90 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "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": "Mon, 04 May 2026 22:07:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:07:43.102Z", + "time": 138, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 138 + } + } + ], + "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..ede7131ee --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:07:43 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:07:43.304Z", + "time": 180, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 180 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:07:43 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-f3070003-8327-4768-a609-1fbd41587da6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:07:43.498Z", + "time": 101, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 101 + } + } + ], + "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..4c962a3b6 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:18.371Z", + "time": 191, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 191 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:18.780Z", + "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_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..b90b92d96 --- /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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0a97e114-e7f2-4262-b00b-16f5a84c05da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:18.915Z", + "time": 106, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 106 + } + } + ], + "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..e35ca4ffd --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/iga_2664973160/recording.har @@ -0,0 +1,16599 @@ +{ + "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-39" + }, + { + "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": 44941, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 44941, + "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/\"a02b8-tvXTnFGTBHXo/comdlDpPstybx8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ddc287b2-61d8-48ba-a5ea-fab6d9893066" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 460, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:19.134Z", + "time": 870, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 870 + } + }, + { + "_id": "64964acb2055c48e7b60c4d7d4ca1e60", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/basicEntitlementGrantCopy/draft" + }, + "response": { + "bodySize": 5233, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5233, + "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/\"481c-CJF49oOutk1mHVIwCcDUGzy3Pl4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ae71ff25-cb79-4511-89c0-265576af5239" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.047Z", + "time": 608, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 608 + } + }, + { + "_id": "8fd718f10dbaf3f8e6a985f581ffb0b5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh/draft" + }, + "response": { + "bodySize": 944, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 944, + "text": "[\"G8YFAMSvvWpfvzvvR/IEt0au1MIVYq0VXBYdIF88Gub/Zq5xognOjXVj0aL+2V7Wt/Cw7B+vRbeRetHZZvsUQUQvZ57OtZ/aAju4Chqpxt/gz5HDi2soiD0yNB62rKU+vXgGhUKFk73hYVLtEzfJeQHTuWFoZHjfE50XJzUUcpKLn5pf39pDZIU/gU/QS4WYuInQPzu9KIz4P9m472/sej6aWV6PqpV+kd5xOLoYnRd6eM2bvQINUpagCJt0B+Gb9DFxA9oQJHEJGim0DAXfpo1XpVh5Yai4B1rawyH/UuhVLzRCe1igCjSGw0T7Dc5jSvJJxKVQKn6K2lyzeDAtepFJ4x7Oga5tpJIRj1AT3MkduOZIyRsZDsmLT5ClNnIYED3fUvSKnGB03LuGrJxpCYi+kz1QFvnGpTE2fIBs3eFMR39imjhJHWzh/+dtI0YOvq45DJxsfWl8LNM+6p1hKIPepZGTDXXpILpNxQfuDGpOX2xw9urAsWSm7S08r+j2g7WDmlNZuKrgK8e9a+4bwrwxUY0YSeFMnREiInkBb692dJt+4ECyOg5y7geUhavt8ItYS1Y2POznlTgs6EKR+BUVTx9/KhR1WVGXe5cAfg50G0wdNC0Y4Weib1x0mzoqCH8oNL34+PbNIKbgpHbbcykJ6lEWse1fy+H8zgZ7jLf0x5CdhaaibSqbuMja9cXS6ndvP34qFAVLDSlcsHdpJBspqpCjknvd3GIsSB96oc3QZks51GoyoAviQfwULXbByIjARKg0cDNsoNyO6F0i518Kf1Rgz+aNrzhCd6iy4HrjK4ae1hqo9xVuoMcThTP0eDxSCBzzOC/Pdzq9hOeswFIhMDTqshfr2YE3n5HTwwaF1j30snU1ZCdQpu7kWdPFtnU8GYzG88VknnM2+Zc2QqMKdpugcGyTvTowdAotZw==\"]" + }, + "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/\"5c7-MimSaNxupWzm516YF8D/mGWnVuM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7961290e-1d17-4456-976b-206e077caa72" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.048Z", + "time": 617, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 617 + } + }, + { + "_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-39" + }, + { + "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": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d0-q0EiV9t07Zhb2VQ+jxISAABSGG0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ee1482de-574c-4ea5-a1c1-437dc4e743fb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.049Z", + "time": 994, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 994 + } + }, + { + "_id": "b0d509e0f28bc13a174042b72a0d145b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow/draft" + }, + "response": { + "bodySize": 1951, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1951, + "text": "[\"G04SAOQyXfX6dvVH9ozsTBIbEncbIsNlbxBWw4ogeyWZg3LpaK31RxKRGEwiIRMJbQUVm1n2ELck2v8j4qFRukvWFJ9GiKTIY7jqcpRIyJX7f29G1AoF9j9/vhyc785/dfa4O3X/I0cjz7QZr1fY0I9Q/DL37dJ73ZkQf+sJbGG7i3a6M9rskePFk7tsbo6+kydHHL9buqCYcXSeeofiv1E6+NcMvumLPG2kOyazut3NJ201qauZlG7PoWfARrojf0SkDeRN6sSIhq7+wVPPF5xlQjMKM5xOHLvBtx2H3J8/rz/9uUIxW6C40Hoi2kPPabKdFvMZyWmJgdNa8nr1dvVyc3eTdjKv8sV23tazHMNXeUM+dKo3GswNOcrWd1ZNZGTBzp5+M5UNjmw23ZZFW86rRNWLIql3apHMq7JM5ot5W8yKdpYXc+RoV3EOxaiXmxAKbwfiaOlArW/JJ53TewPBL5de/8bPdULvNITwlSNdyHjSBJeCtBrRaNNRoKULrnd5Tn8UKQzcpDDc1lD83Z7P2iiy7DqE447Mfk17Q1FxVNITihG1W117S+rg3XLYB9wIFBi76o186Vjvo+qurO+m+d00vyvyPI/jOPXdm4dPD95qs49iDIEjXXttJQsYcTUAIiNRc0O47Autrr22pEb8F3z9MOes/RCsLyBwv5SyW+Gby7qnvrAeQOCWgEYr5A2yLrkAejsQOlOC6gy9lDPD6RS+cgx5PVHg+e4cGG2KAk/dfk821WbXRY2QcdrsQfknaTBeNqYxF2kXWuwFj2E1jQ3TPfk/pdVyeyIXxUtghh//RsFjxNLpnnzEtGIkI7IMEi7jFgvSgbO1QYrUfEbRFR7DvyMhVJ1Tu5knYnovs/27TZOmpQxjhssY3EuxFQf2+2rDOIyBwxikdDiHXBo8hpHFoyMzAUyR0aQYB+a89INjAlgmiWccGG48E8AE9mOB8AF+DWRvn6WVZwePYQT23cTVMAFs6JX0BF4tfSnw+dPDhnHxa3GeE4iXGGzy3GpaFGWxo/kkl1dEVe6wwMk/e/Xw8ie1\",\"R9PEGUeQwZRbrPaYooNdq65xZjidNogusSj9L6k9TE7Qxv5WRj0nuKPusy54OYK3NxgbAwCQZbAmqWTLDd32QK1/hTL/lU/bg8WvAwCgdxAxcEvxy6Rtdz53JlWDeyxqTwBQjTLceVJ/62n5HKd3EG2eAx4/BrbPJbUZhz4BQGW9vB0IuQbhGx36wJeamflKeorZ1KJhhAyUUx0AGfUARl/wGR4as/5OBETUWWFwreeXt3nAor/5G4R7oPSMtj7xkqiABvNSVwHPh63HsjF+YMSFRQ2CDbpBjgFU1rNB7gMK8ZhawCdrlJYPjX/vBrk9SEYzPLGUuqakyWzhh+dXbY1YGIptcghsIv/C8Mj3HCKhKHtR2/ZrMIflalBAg48+DVo8jGzClAr8xr/BVEupsJn12KpB7pDYDFC84NnaLZ1c94DH4FHpcvBdQno2qIFgBygoAFOYwG0EoUAL03EHGhMVQi7Sen3OwdKapJuBhDb4W6sL6DhCmz3lcOhMGiuTwsrazkKUYN1yiBo1ljwIJVeagjCttcEE5zAOrM2HiVg2/BCWKqH8xW8+AUsh8M/ASGk/dorqIRK5XT7WcqwiB61bc7yimOUcbyiKOud4mQe8RCP4slMdUmu0NooDbyNvoYvJ5N6mWU3mzifgOOiXndnpfUFY6bSFFjG8AGUxx2dwJVY7WpVUrL7n5UkVF6t1hJqS13wur2qhGlUR+AobfaaHXhoUqOQtcjEWXxSlzlmz6yZm+qrhGqMpJMqD2ggUiNVrT1LPa7YMcq08YcWgKMKIGNb1vFdZhzAtOAyglBjximI6h7elzGd4rkuvDYrpGRR1nubFZFpO0PAhFZyFWyWO+/zWNwT73XBwKFBZufPI8Tz4Did7O1AA\"]" + }, + "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/\"124f-yvz8Sm38rrNXGI7Cn7zNDsEcqOI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0c4b6464-a3fa-4dff-9242-8328979df349" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.051Z", + "time": 1063, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1063 + } + }, + { + "_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-39" + }, + { + "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": 5989, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5989, + "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/\"47dd-NNhF1Dijvxufeo1VnwX4cJBO9+M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ce7dfda8-14cf-478c-ba16-50316c632e33" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.052Z", + "time": 699, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 699 + } + }, + { + "_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-39" + }, + { + "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/\"3aac-F6JuvpDYMzE/P1r8FkgXH9srqwY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "82f72144-54bb-49b3-b982-bfe6bdfb91c5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.054Z", + "time": 987, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 987 + } + }, + { + "_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-39" + }, + { + "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-vdJGEpGjD1rRtYNEWm8SXPFuRPM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "eb7db215-9e1f-4c09-b750-e50966bcfaea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.055Z", + "time": 1294, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1294 + } + }, + { + "_id": "65e8e1d008224b991ad916110c8d9d43", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1850, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test/draft" + }, + "response": { + "bodySize": 800, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 800, + "text": "[\"G1wFAMTKdPX6bvULszpKmKzv4kvJXArCGkAEyaUZscHl+b8mmJ54BSWm3Tu7XkSCRPJsfPg3q7CJ5/NAmupcTDB6SDwcOLpu+IH6gQ7ewUCIBQrBXuhMfythhfcF2GT6kFZ8DNik4tduHluC2dkzk8K/RFcYrcBCLcP86hr47XvrZWP59GzqVmU52W0Xq2bWYvg36+VmY/kEBVGO39wCdRlmOgR6kFqobSdlYAMIBpIyQSFmaaIVsXcf3n18W20qIDsdJuTzuf+jkIjzhdZWCKaD5+qhTcSsyiMpk8LHv8owCNqqAxJvfTsYDyd6WE6Hcz2c6+FYa10UxUjiq/pDLcmH/aBAr0BXCsIgevo/Cv+HD2zeR0cM04GCex8dIvafDW6G+fVHYcxLko+BYbqeOsuaxPqzAs43FKT8+v3MxaYTTLDWuWmIWRqfvA0CA95S9CHO3BW1D/szvQptFigcLFcpxeRlOHYwsPcpeF7TmYTs9hwJ83lep9i28kGV85K8L+OVErmKaLy8uAoOCiE6wmXj5kAXS6WkMAIGkwEeYGZaKzzCzHTPc9ck1Fbqoh2uzMJKRFC5px8tzCmmc/bOA+3ZPv6zKcX7FW045Rjiwy7u5qsmhg9hgbKfg3dSLP7HjIFOzVnw5eslONHl8i7Z38Ww83uYjlrJdP2ntOu6i97ny5YSzLg/f3XjL1S3NsDgEoMcBlygDgJcdznZpwbdg1peLmejyWq1Wk2Wq/l0OZ1iXGc8HpXldLXSy+l0Uc5n874Pq5WSGQYu2Z1A4ZIZNCRl6gE=\"]" + }, + "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/\"55d-Q2sL5hgLw8jLHQIydY1NlKt3mkM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "94c2690b-da44-47e2-bf4a-875c12709659" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.058Z", + "time": 904, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 904 + } + }, + { + "_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-39" + }, + { + "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": 4165, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4165, + "text": "[\"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\",\"+QovUBVxRuEKVRpSegWziFWxzLWWyg==\",\"xYhEs22dndlupo0+DR7JW08/DeVW1pxOvOnWulot5VbYoccJk1tL5eft/T9zRovybh65s4uJQJ58aGVvNPRNdYRSFD3xZGbPbdPcCLeKaw8VOOcMYJvAXaPdSOGptczkoPr5iI+h8fXixBF7HgL7/uH0ueE4lrPb+qJtGIfnbEmM5hGruM1m57n1pdt1I4zetlo+P1HCFvM8kqV8hqeOX5+4teZymUTp1tyNbFIfsa+lQmMeNiUzx1rgi6qb+robKQzq1mSNJF7L7s8qcS+iJFuysixLVpRZUiSs6CqXF6XLLIrTkIVplKd5EWEFGwqzZxpshcgoZrDoKVVqJ7uDe9Xj7sQ1VCD5depmMAdjBUn1RxzYnFjEcbkZCo9tj2awF/BkZcvEJIEYjG690f54kxPhwITPRm16HmjFo4cK5BLwxkdKwR8N5Q29fpfUSUfqPY5rPxFrVwFLFzz1SLLLMzUj4r7wLM685EyBuTTiPffHMZJBI+bBJ62ZNz106IYHmvoqK+pYpzhxnrhG6gdvvZYEILGg+eiTMI2S+bwk3jvQQ2RBi+Kneaiq/WaAFZsUYZ0kOo+IfTxbIyf/Ui6Iz4g1OMPYXU7kcYFXdVJeG9hVwf+S48ECpmH2LCmWxUriIovCmI0WG8LzDrCpNRIcNc/LmKTGg0wsFlQNTe/u09A3aOk1XsiqEUjbC0i893Dj6LWAeZGoRPm0IxjptsdVwIBmHaamdUcb7VwNDi1IZCppOaTZQOPfwZoOQapXwIE4Y3Sn1k+dwEuRT4hWOo+vzbjwtkKm+8YPpHiOBwS8icA9yVliGV35IOEjLfWOqOg0fCKqx+bKcUudguzbCyg6WJmdsWSZ/JPFcVEUUcGyiwZV47we/qfiHqsL8QyylxdUlCUd9UzyUWIaZE8aqO9gWbFZFMcl3Cb9wnHRHO+tOcF3zkS8ZUqsRsxDdBOh9dcErBxkZHZIcsdRz13hKhNssYneF9YHoAmG6VbVcYVVUonzogjInlD647R77p6vzNFzf5znfnBQgbS89UChHzwwOns74Ag=\"]" + }, + "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/\"5798-ZwyhTetdwpBlYDy0abdq/iZR/3Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "93537316-4adf-4796-9ff7-2060ed9ce401" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.060Z", + "time": 701, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 701 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5dXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dvECbWhzZDuUVlIQKPDr/1djntjOXBCho3uOkyNPlMutTAhT2VJi+T/PAtvbLfvLKaNj8+OHuryeEquWdQwpPFs9QhRScx5OD6ucrBPjRCt7VZ97tuXte5MgY5kxmecZgGeh2cN705Gah/smeu2eg4NOS4/IAGrS26hU0vvidx1PyaM2ItUOlh66jYAYvTEID3NzfP2y/rAHabUAF7dC1qut61B7M67wVyFLO4jJKYaQRLuRh/W59uz/3f1am414Zfb2cNIyzSJaNyKMYxke4zY9G5mqv9RUocOGNdVC9gnLrl5NF59LrzdsBKRyv7DahgmA+r/UKW6WRiLJi1RRLnoEBedcRLkcePn+Pll+JaUnsseTgYWFHeWes9IG0xvbc17phrqzWhBBy5nb/c6OQv8hOBi5reUD/hVvFmw7ddPZmgcYWN0/ffiPJXwuv6fKAfjpRcjLvwrTEF/IXeSoG2sp+yWGYaaIOPDi21W5cCwyWmMkFE/JHMjuiZPJ2vZ9Q8jpS8jqCwrIfIT+zcRqEEKJkRWo4StaVy2BwaIMaoptFS3xZrkxzWtuLRvszfFwqSWNCnXNkV5EU2hJCSHWaWJGqIqYvFYv/o/DnJebOqYO+wQ4Bkl9HWPeHXVCKoTHx2zE+vqn1OJvOaj2fB7We1rp6GfBQUMbcW6n1bDqDkQKeUfv2x0Br06P2Haqd8aotn8OECu6skWaPzq97rro99qeOe4xgpJApR5esoXqlJVqTQtuOLigtrlAlFCT32HEEcUo6RZan+o9pMmfhPE7mWTjPwnkUhuFsNlt6s9ltd94qfZjOYBwpoBO8A9IpoKP+mbH0jrBI+CcpkNv+CQlbFqeiLBdZmaWLpE3SRRNhsmhL2UQtT6RoMwSFi3jwdKSALydl8836qguqOs8kWhZRhtFNoT8aMLEuCJXOeh0KgXbJPlnfgjl4d2JBoxtHCtj/9a3pMGgwK9qCRQtetGyRxJIvSibbRZE0jciyJM4HG2QhGkju0wYj8Kw+Xk0W4NTp9LYYqL3y3ZGfGGU99eT338k=\",\"TMCNL4O/STgj/8zPKm6YSVW9L/nsQvMVHc7ckh0HrcEOvVf64FiAg69BHXggTN8b7QJhdKsOgTrwpx0vhZ+yfzZqoKSGt+t9DXxA8zO3RLk/S/4ieug6NmU0qiW1NWdrOtxWk5ja7Gf4CH0ciddeu5UiMZdKskliT76TUy2ZFoPX778XTNpyVejwTVYs4bCxFEu1Sa3pfQyfGB5pvp6YNBMeKR5wiYyLrbsmM5HVQG6mPI7jyCs3GalQoc60q3zH3C1HfVMxegMNdUrAqNTd5w93mw8fhBT3QHrLPV74dVEmjWCSpS1rkssfsVbrT9+vuT/O/XGA2Afx4NN48Ec8ZEF2d4hP1nT0YTxwAqDEJI2FRC1MEDTSGaJoq5oymDcj9zjSRxs0R+W9yxfeKdkMw4RUIRLJiAGnjjhAVevWAoJAET0SJ+cEGrqBpYvUWiNnkr/+wjtxQPjQMqHdGRFU2MViDmebZ6ItszAVmKrr1CCpfMtVN1g0FJkq76G7ZRBdt0OMQSk7MlSwZSBRgN1BBZ05CDi96NZMa4BT1F4jcmAXZqlh9gbq10YRqIxpmwX1eoMijIvqdNS/SFSUvG7dW12GKLnze5GUrE2RF3nGskqE9wBx0LjM7y8mAAvORj5azJ2GrUPUvTxGKIQwVTxqIXK7USpvlRZTZ9cSKC4ZNw9n2grdtVOkaQZ1EJvfFLh7XsRhVrSpzKNIFAXVLpjXGtYNaCPREW6R7JAXP0749Z7NM5Kb+40jxjKajZFYSa6QdOagxLLW381AxOH8GMsgFlEsbm5WH/9/CJa13iGSo/cnVwVBw8Wz8/yAy9bYA1ojnp91mAOSRrhASdGZQQYd9+h8YA2KWSSRILDYRIKLZSW0EHxHM1g8dLQNkNZY0huL5Ag0JueWtc452h0wyHv9Eaf0oUMibeEHys5nQs/wSxd/xFrnfxSC+nGxbUgSpQkn3l4Xe9rtjjSdEc9JwXbAeqhq7e1V94058h9n2/zPZ2Nu2TAkoKQkRppJ1U3HWgMcmaKczhH62XhA7owmf5HJF2S/Y5QVWVtrLLHIpdKHrKyaXJQ/EiWJJMDSSZ0H/Ui1Z6sg3rQv4hrVm2Qc4QU0zClD1koe1h/Xq83N/jYteug6g9V8u/nwYft1odNYf7vfPNzsN9tPvRdEzcR7i94zRkau3M9yPwvAfMCGjDD5wXkR1B9ssCnhRF3O09TA5Uc2tO86cylR4SoCRZxi8fEmxnq1PqGspYxcOkijGS90GsR38p7TU5FWjHZGsZ8iFjfQ/50ilgvbfb69Xe92NKzphSvx44Jq8lZEWSl4go2rRw1zd7P5sF4NkzcFjkWOnvwRiTf0rvta1+DNv9m9eC6F6Wt4AyMFISLNW4j8C5G5zSW+uSRrLo1MY4c98lc4YtcZqOBgjGyuCBSOCio4mo7DSGEbp5xvSt52r0nvzGClGYXKU5F8R/uVK0kG4nAB/dc5KWaht9uP9x/WbBfBD62VZQxZzEVbFtGwYlt0\",\"Q4+r7pfLKaJ3BjuIbSaKoKroDZgdijthGYI252GlTGvrhvWfJi55HsmENwXKQRs8/k2p08lJARklCTMUOC+IVmKHG7Zvl7HWh6g6MshkT0WfT54k8uzj9lNw8xdUUURtXOYpxkl48sfKh+ExZORzpFGB6oj2fBlL7lFukks7Q3SU2oOun//a8limJWNhFMXRIAtAIRB+ZBkmDPILIYXEggQSZSFDzqetUSp7iEUXMQOivXguGpYwIXLZ5qIUMQhKwKhVaEnP0paHtcPaIkKSpBChAIi90vEvG4gWddFsizDL0qhokowXkazYRYsO9WRWLKoQqHRXwi4gdVm5bzxZWQZ0Qe966c4Ekq8zMhHo6R/rKj4ZiYjf1PJTrrb5Ci9QFXFG4QpVGlJ6BbOIVbHMtZbKxYhEs22dndlupo0+DR7JW08/DeVW1pxOvOnWulot5VbYoccJk1tL5eft/T9zRovybh65s4uJQJ58aGVvNPRNdYRSFD3xZGbPbdPcCLeKaw8VOOcMYJvAXaPdSOGptczkoPr5iI+h8fXixBF7HgL7/uH0ueE4lrPb+qJtGIfnbEmM5hGruM1m57n1pdt1I4zetlo+P1HCFvM8kqV8hqeOX5+4teZymUTp1tyNbFIfsa+lQmMeNiUzx1rgi6qb+robKQzq1mSNJF7L7s8qcS+iJFuysixLVpRZUiSs6CqXF6XLLIrTkIVplKd5EWEFGwqzZxpshcgoZrDoKVVqJ7uDe9Xj7sQ1VCD5depmMAdjBUn1RxzYnFjEcbkZCo9tj2awF/BkZcvEJIEYjG690f54kxPhwITPRm16HmjFo4cK5BLwxkdKwR8N5Q29fpfUSUfqPY5rPxFrVwFLFzz1SLLLMzUj4r7wLM685EyBuTTiPffHMZJBI+bBJ62ZNz106IYHmvoqK+pYpzhxnrhG6gdvvZYEILGg+eiTMI2S+bwk3jvQQ2RBi+Kneaiq/WaAFZsUYZ0kOo+IfTxbIyf/Ui6Iz4g1OMPYXU7kcYFXdVJeG9hVwf+S48ECpmH2LCmWxUriIovCmI0WG8LzDrCpNRIcNc/LmKTGg0wsFlQNTe/u09A3aOk1XsiqEUjbC0i893Dj6LWAeZGoRPm0IxjptsdVwIBmHaamdUcb7VwNDi1IZCppOaTZQOPfwZoOQapXwIE4Y3Sn1k+dwEuRT4hWOo+vzbjwtkKm+8YPpHiOBwS8icA9yVliGV35IOEjLfWOqOg0fCKqx+bKcUudguzbCyg6WJmdsWSZ/JPFcVEUUcGyiwZV47we/qfiHqsL8QyylxdUlCUd9UzyUWIaZE8aqO9gWbFZFMcl3Cb9wnHRHO+tOcF3zkS8ZUqsRsxDdBOh9dcErBxkZHZIcsdRz13hKhNssYneF9YHoAmG6VbVcYVVUonzogjInlD647R77p6vzNFzf5znfnBQgbS89UChHzwwOns74Ag=\"]" + }, + "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/\"5798-KwKIcv4TyO6uxp0gSMRgw6Avd7Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0a9facf7-9599-4789-bc1d-529b3db9c75e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.062Z", + "time": 1317, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1317 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"5798-yrlY7MRMub2tsy7vym0mJJ6gf4M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c39967f6-8e74-4671-95fa-54f278a004f4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.063Z", + "time": 1360, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1360 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5dXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dvECbWhzZDuUVlIQKPDr/1djntjOXHCho3uOkyNPlMutTDhT2VJi+T/PAtvbLfvLKaNj8+OHuryeEquWdQwpPFs9QhRScx5OD6ucrBPjRCt7VZ97tuXte5MgY5kxmecZgGeh2cN705Gah/smeu2eg4NOS4/IAGrS26hU0vvidx1PyaM2ItUOlh66jYAYvTEID3NzfP2y/rAHabUAF7dC1qut61B7M67wVyFLO4jJKYaQRLuRh/W59uz/3f1am414Zfb2cNIyzSJaNyKMYxke4zY9G5mqv9RUocOGNdVC9gnLrl5NF59LrzdsBKRyv7DahgmA+r/UKW6WRiLJi1RRLnoEBedcRLkcePn+Pll+JaUnsseTgYWFHeWes9IG0xvbc17phrqzWhBBy5nb/c6OQv8hOBi5reUD/hVvFmw7ddPZmgcYWN0/ffiPJXwuv6fKAfjpRcjLvwrTEF/IXeSoG2sp+yWGYaaIOPDi21W5cCwyWmMkFE/JHMjuiZPJ2vZ9Q8jpS8jqCwrIfIT+zcRqEEKJkRWo4StaVy2BwaIMaoptFS3xZrkxzWtuLRvszfFwqSWNCnXNkV5EU2hJCSHWaWJGqIqYvFYv/o/DnJebOqYO+wQ4Bkl9HWPeHXVCKoTHx2zE+vqn1OJvOaj2fB7We1rp6GfBQUMbcW6n1bDqDkQKeUfv2x0Br06P2Haqd8aotn8OECu6skWaPzq97rro99qeOe4xgpJApR5esoXqlJVqTQtuOLigtrlAlFCT32HEEcUo6RZan+o9pMmfhPE7mWTjPwnkUhuFsNlt6s9ltd94qfZjOYBwpoBO8A9IpoKP+mbH0jrBI+CcpkNv+CQlbFqeiLBdZmaWLpE3SRRNhsmhL2UQtT6RoMwSFi3jwdKSALydl8836qguqOs8kWhZRhtFNoT8aMLEuCJXOeh0KgXbJPlnfgjl4d2JBoxtHCtj/9a3pMGgwK9qCRQtetGyRxJIvSibbRZE0jciyJM4HG2QhGkju0wYj8Kw+Xk0W4NTp9LYYqL3y3ZGfGGU99eT338lMwI0vg79JOCP/zM8qbphJVb0v+exC8xUd\",\"ztySHQetwQ69V/rgWICDr0EdeCBM3xvtAmF0qw6BOvCnHS+Fn7J/NmqgpIa3630NfEDzM7dEuT9L/iJ66Do2ZTSqJbU1Z2s63FaTmNrsZ/gIfRyJ1167lSIxl0qySWJPvpNTLZkWg9fvvxdM2nJV6PBNVizhsLEUS7VJrel9DJ8YHmm+npg0Ex4pHnCJjIutuyYzkdVAbqY8juPIKzcZqVChzrSrfMfcLUd9UzF6Aw11SsCo1N3nD3ebDx+EFPdAess9Xvh1USaNYJKlLWuSyx+xVutP36+5P879cYDYB/Hg03jwRzxkQXZ3iE/WdPRhPHACoMQkjYVELUwQNNIZomirmjKYNyP3ONJHGzRH5b3LF94p2QzDhFQhEsmIAaeOOEBV69YCgkARPRIn5wQauoGli9RaI2eSv/7CO3FA+NAyod0ZEVTYxWIOZ5tnoi2zMBWYquvUIKl8y1U3WDQUmSrvobtlEF23Q4xBKTsyVLBlIFGA3UEFnTkIOL3o1kxrgFPUXiNyYBdmqWH2BurXRhGojGmbBfV6gyKMi+p01L9IVJS8bt1bXYYoufN7kZSsTZEXecaySoT3AHHQuMzvLyYAC85GPlrMnYatQ9S9PEYohDBVPGohcrtRKm+VFlNn1xIoLhk3D2faCt21U6RpBnUQm98UuHtexGFWtKnMo0gUBdUumNca1g1oI9ERbpHskBc/Tvj1ns0zkpv7jSPGMpqNkVhJrpB05qDEstbfzUDE4fwYyyAWUSxublYf/38IlrXeIZKj9ydXBUHDxbPz/IDL1tgDWiOen3WYA5JGuEBJ0ZlBBh336HxgDYpZJJEgsNhEgotlJbQQfEczWDx0tA2Q1ljSG4vkCDQm55a1zjnaHTDIe/0Rp/ShQyJt4QfKzmdCz/BLF3/EWud/FIL6cbFtSBKlCSfeXhd72u2ONJ0Rz0nBdsB6qGrt7VX3jTnyH2fb/M9nY27ZMCSgpCRGmknVTcdaAxyZopzOEfrZeEDujCZ/kckXZL9jlBVZW2ssscil0oesrJpclD8SJYkkwNJJnQf9SLVnqyDetC/iGtWbZBzhBTTMKUPWSh7WH9erzc3+Ni166DqD1Xy7+fBh+3Wh01h/u9883Ow320+9F0TNxHuL3jNGRq7cz3I/C8B8wIaMMPnBeRHUH2ywKeFEXc7T1MDlRza07zpzKVHhKgJFnGLx8SbGerU+oayljFw6SKMZL3QaxHfyntNTkVaMdkaxnyIWN9D/nSKWC9t9vr1d73Y0rOmFK/HjgmryVkRZKXiCjatHDXN3s/mwXg2TNwWORY6e/BGJN/Su+1rX4M2/2b14LoXpa3gDIwUhIs1biPwLkbnNJb65JGsujUxjhz3yVzhi1xmo4GCMbK4IFI4KKjiajsNIYRunnG9K3navSe/MYKUZhcpTkXxH+5UrSQbicAH91zkpZqG324/3H9ZsF8EPrZVlDFnMRVsW0bBi\",\"W3RDj6vul8sponcGO4htJoqgqugNmB2KO2EZgjbnYaVMa+uG9Z8mLnkeyYQ3BcpBGzz+TanTyUkBGSUJMxQ4L4hWYocbtm+XsdaHqDoyyGRPRZ9PniTy7OP2U3DzF1RRRG1c5inGSXjyx8qH4TFk5HOkUYHqiPZ8GUvuUW6SSztDdJTag66f/9ryWKYlY2EUxdEgC0AhEH5kGSYM8gshhcSCBBJlIUPOp61RKnuIRRcxA6K9eC4aljAhctnmohQxCErAqFVoSc/Sloe1w9oiQpKkEKEAiL3S8S8biBZ10WyLMMvSqGiSjBeRrNhFiw71ZFYsqhCodFfCLiB1WblvPFlZBnRB73rpzgSSrzMyEejpH+sqPhmJiN/U8lOutvkKL1AVcUbhClUaUnoFs4hVscy1lsrFiESzbZ2d2W6mjT4NHslbTz8N5VbWnE686da6Wi3lVtihxwmTW0vl5+39P3NGi/JuHrmzi4lAnnxoZW809E11hFIUPfFkZs9t09wIt4prDxU45wxgm8Bdo91I4am1zOSg+vmIj6Hx9eLEEXseAvv+4fS54TiWs9v6om0Yh+dsSYzmEau4zWbnufWl23UjjN62Wj4/UcIW8zySpXyGp45fn7i15nKZROnW3I1sUh+xr6VCYx42JTPHWuCLqpv6uhspDOrWZI0kXsvuzypxL6IkW7KyLEtWlFlSJKzoKpcXpcssitOQhWmUp3kRYQUbCrNnGmyFyChmsOgpVWonu4N71ePuxDVUIPl16mYwB2MFSfVHHNicWMRxuRkKj22PZrAX8GRly8QkgRiMbr3R/niTE+HAhM9GbXoeaMWjhwrkEvDGR0rBHw3lDb1+l9RJR+o9jms/EWtXAUsXPPVIssszNSPivvAszrzkTIG5NOI998cxkkEj5sEnrZk3PXTohgea+ior6linOHGeuEbqB2+9lgQgsaD56JMwjZL5vCTeO9BDZEGL4qd5qKr9ZoAVmxRhnSQ6j4h9PFsjJ/9SLojPiDU4w9hdTuRxgVd1Ul4b2FXB/5LjwQKmYfYsKZbFSuIii8KYjRYbwvMOsKk1Ehw1z8uYpMaDTCwWVA1N7+7T0Ddo6TVeyKoRSNsLSLz3cOPotYB5kahE+bQjGOm2x1XAgGYdpqZ1RxvtXA0OLUhkKmk5pNlA49/Bmg5BqlfAgThjdKfWT53AS5FPiFY6j6/NuPC2Qqb7xg+keI4HBLyJwD3JWWIZXfkg4SMt9Y6o6DR8IqrH5spxS52C7NsLKDpYmZ2xZJn8k8VxURRRwbKLBlXjvB7+p+IeqwvxDLKXF1SUJR31TPJRYhpkTxqo72BZsVkUxyXcJv3CcdEc7605wXfORLxlSqxGzEN0E6H11wSsHGRkdkhyx1HPXeEqE2yxid4X1gegCYbpVtVxhVVSifOiCMieUPrjtHvunq/M0XN/nOd+cFCBtLz1QKEfPDA6ezvgCA==\"]" + }, + "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/\"5798-nITxp1jaTXAqrAVcmzTgFLoFGcU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ed3f22b4-4e85-477e-8752-49c209083ad3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.064Z", + "time": 1288, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1288 + } + }, + { + "_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-39" + }, + { + "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": 4162, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4162, + "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/\"5798-RqcUh0TNnksWEDlUL8iY/TIys04\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c86b3372-34fb-4fbc-bd07-880dd40ed47d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.066Z", + "time": 1149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1149 + } + }, + { + "_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-39" + }, + { + "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": 4457, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4457, + "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-66X6ldMjC5jvDXElOVL44xPuim0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a7c63f81-8d72-49a8-9fad-5a5fdcec8dfa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.067Z", + "time": 1586, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1586 + } + }, + { + "_id": "86564ca1eb9f7704f4fb15aa9bdb2f49", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/basicApplicationGrantCopy/draft" + }, + "response": { + "bodySize": 71, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 71, + "text": "{\"message\":\"Workflow with id: basicApplicationGrantCopy 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": "71" + }, + { + "name": "etag", + "value": "W/\"47-JSEeyxVGbvBlbz8eSu2TrKQQsa0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "566a0947-00e7-462a-871d-61e2e15a2a3a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.069Z", + "time": 1143, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1143 + } + }, + { + "_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-39" + }, + { + "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": 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": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "76c344d7-2459-4b5d-b98c-7f2101b8648b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.071Z", + "time": 780, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 780 + } + }, + { + "_id": "ed5256f1229d0148eaf24ca6f114c1d9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/custom1BasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 74, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 74, + "text": "{\"message\":\"Workflow with id: custom1BasicEntitlementGrant 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": "74" + }, + { + "name": "etag", + "value": "W/\"4a-mLxUM/DFu+ls66sKtoyUUHdrFvE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e174b9b0-879b-48a6-a8cb-87a76c94eabf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.073Z", + "time": 1232, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1232 + } + }, + { + "_id": "ed0ea38803379310a6d4584db7bfa75d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1873, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/customBasicEntitlementGrant/draft" + }, + "response": { + "bodySize": 73, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 73, + "text": "{\"message\":\"Workflow with id: customBasicEntitlementGrant 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": "73" + }, + { + "name": "etag", + "value": "W/\"49-dK/5fsZX1TCxj+/JJ3RvJPU98hA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7dc9ed41-442d-4438-a081-22cc2f2a00d2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.074Z", + "time": 966, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 966 + } + }, + { + "_id": "9250807cd829b1a0069ac3c032862aa2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/jhNeCreateTest2/draft" + }, + "response": { + "bodySize": 61, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 61, + "text": "{\"message\":\"Workflow with id: jhNeCreateTest2 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-SO0k6wjcjBrc5oWYP2/MlK/Rh7c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d61d78b6-8c3f-49f1-a699-acf29c745885" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.076Z", + "time": 587, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 587 + } + }, + { + "_id": "5f969ec2e28ef93a4c9455be8b49eeba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/pghGenerateRap/draft" + }, + "response": { + "bodySize": 60, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 60, + "text": "{\"message\":\"Workflow with id: pghGenerateRap 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-Ntl8D+lq8Gk9EUagplLEjCeFPiA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "45a8a217-c1b6-4969-8827-40514d82e8a8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.078Z", + "time": 1335, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1335 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f45b5ee3-378e-4f41-87bd-d9ca04b384dc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.080Z", + "time": 1062, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1062 + } + }, + { + "_id": "5c8ff177efcd97230aff3d52070a9f26", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1853, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhFlow/draft" + }, + "response": { + "bodySize": 53, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 53, + "text": "{\"message\":\"Workflow with id: phhFlow 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": "53" + }, + { + "name": "etag", + "value": "W/\"35-laAqnxbsjMBzn7zuR6Ez62JGULE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1e67c6aa-70db-4542-85bb-e9ee2cec6069" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.081Z", + "time": 1267, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1267 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "19c8dfae-20eb-470c-bbed-a1cb15500468" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.083Z", + "time": 1021, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1021 + } + }, + { + "_id": "073d1a68bf7de54cbdd2cc1a52e6d9d3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1851, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test1/draft" + }, + "response": { + "bodySize": 51, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 51, + "text": "{\"message\":\"Workflow with id: test1 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": "51" + }, + { + "name": "etag", + "value": "W/\"33-AYf9yLWXwmbnj5ATraDdir6Go1Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "be04fc1a-3ed9-4e7a-bd78-50906794769e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.084Z", + "time": 1220, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1220 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ad04c00c-5138-4525-95c4-e403a1c30833" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.085Z", + "time": 1350, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1350 + } + }, + { + "_id": "20a44b0494a4c23b0160b22c926dda7b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9/draft" + }, + "response": { + "bodySize": 59, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 59, + "text": "{\"message\":\"Workflow with id: testWorkflow9 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-a+i1JE0J6eWNoAhjr9T//SMn4mY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b762703f-9cb7-44be-9223-12810fbef4f5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.086Z", + "time": 872, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 872 + } + }, + { + "_id": "7b5422ae58eaec212f46b30a1011eb5a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1875, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/basicEntitlementGrantCopy/published" + }, + "response": { + "bodySize": 5233, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5233, + "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/\"4820-VnHTneOQ3jEoTW73jEObxgcjAtY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "536161a3-524d-4037-a414-0a9a4986a922" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.662Z", + "time": 346, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 346 + } + }, + { + "_id": "d227c1518fae6f641df7c93090756923", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/jhNeCreateTest2/published" + }, + "response": { + "bodySize": 3530, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3530, + "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/\"203b-8StCIcqDtnV/0wjIeSAtpsEoABQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ed75731d-7c6f-40b0-9a7e-6a7decd8c81f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.669Z", + "time": 541, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 541 + } + }, + { + "_id": "fce414742059014929931a3b34bb0e17", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh/published" + }, + "response": { + "bodySize": 58, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 58, + "text": "{\"message\":\"Workflow with id: createUserJh 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-yACICTRV7BPCnXqo9rYflcfNwec\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "74993cf6-c874-4ce6-8c6c-2890bfdb5c57" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:20.671Z", + "time": 746, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 746 + } + }, + { + "_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-39" + }, + { + "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": 5996, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5996, + "text": "[\"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\",\"QfU28cFhiWceegOBMR6CnlnqbaAB\"]" + }, + "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-AihYLUzhAfnztkhlPlbJShUBrrQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "65302679-f1d6-49a1-8bdb-0bdb96d2f7c4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.757Z", + "time": 758, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 758 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"579c-uyJkhv7mnbIRTZcJHDfkHz1pVtI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e2ac338-f11e-4ba8-8490-5daa699a1211" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.769Z", + "time": 682, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 682 + } + }, + { + "_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-39" + }, + { + "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": 2710, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2710, + "text": "[\"G5QaAOTyp/lfv5v9EZwFLl03fqlOKz6/ToqMFk45LBFJOGYYbb/2Ob7gRI0qK1XjkpeDpSOEvOz+AyZVIM80vkr9uyL7KrlTpSpkbQy15udMjQwBTzrMf90BtUKBVzX+s9FHa/bntrE9EXI08kwo8PnR+nyFff1Yiq5z/1TaoK2pG/qWUOCVvV/Ha2u0qZHj1ZMbx+X5K9l44vjd0QXFhKMP1HoU/w/c8b9m8Ie+yOYo/UO2XpTVZlnOl4v5mkvraektcJT+gb5WyQjIV11JDGjoGu4CtXTZRSaujMJ0TcPRdqG0FGoe9m/3z4/I5RAU11kPnH3qkspVOV+d5nKxxMirOvennz8fPv21v3+XyXy5lVu1XhPNMH7lN/mDVdJcxfTIUZbBOjVBy7KdPf3D1Ljz5MYrOVMTmmwzuZVltpiWMpPVbJFtZDVZzsrFZlLNkKNd5XoUg17ehVAE1xFHRz+pDGvqSO91bUrQ9dIf7OlSJ3h3lRi/cqQLmVA1bItFhg1otGUo0NEV1xtP678WKYwc6dpq9xo/4DXnQ2lgiUv/BF85KhkIxYDa76+tI3mIr5CduE1HgcGn18QZXsAomd7MFjeryc1qcjOdTCZpmubBvrn7dBecNnWSHoyK1/Njyh7FlMtRsr+22t0xhXkS2jqUom0OOWujyHW6WCdxflxz+8Db7DFGW4yP3Es9WbH4hjFiC/zpyb0xVxqGfIVX7zwDBtcROla+soaWNqZrmviVY/SbigIvghdC6K4osLF1TS7XprJJwWGyNvVjMAWmt4UpzEW6+RanwQ4m1bhrXlP4SzotTw35JL0trBo5742C3YZt85pCwrRi5Z6okrrpHB1IemtgB6ZrGmqXD66HoTAAtZ3m0+kn7ODfkpCizrlPnCZhupbj/bwtlaakMeUtfsxgxMZzcmCv9kfGYYgchpjeFiYWZtKMHEgoJScyJCnifgL2zlkHjqTSppZxN/Bbh3vQCgqkilTOWBhdJY8kVQRDhMTHIFrZN1Yq2IHAVk7linnnyeX29JPK0BS0oQo4pbCDgf3enAl4e/fpY+6NPFdXfVJ7ShpvKXaKDut8/nR3ZJzuHTj86sj1n6WTZ59Wv1MsDIBavT+mdJ6sII6UfvnuBkPvXENbA7YqCTdKGlDJNT7KM8EICsy3pospmqJ4LOXrGHdkUCGXjgTNXccHGTrPBDDAkMc4sGI5TADz\",\"9xRSTIer6gqSJnWgbivv4NrCDpixAdr+\",\"fiVS7LY4a0RdVWJRpcfTwg6C68RaMzWeWJDJw5ZMHbwZa8IOBmDfDeMaTADrWiUDSd6ZdkPCuL0Kgcc6uFX3wp2grW1opBiVR6Q5RIyBV4cg4mIc+nMLiP2VYi/2DCmQAfzgEcd/0Vgo+a8YRddYK/udAoCvLxPAFBlNinFwRlSHWjrKgn344MkA97yU2+VkIWk7UZuD8xlq/mfh+T2VD+8Ojoh+769koN+yz+TpdJpstuvlptygdcaPx1NkMYhMk2mbYL82TKKFa/W9jega/lxdsI0zk4N76WGyt6eA1umLbqgmD8EWZjyO8skEsiO4Vg7wpgJvOeiK2/oH3YI0PcCtLjD/E/+jdtmug7drejjbC0HKA3hIMfS73jUXpjDu1dNnwRDn+Osh3z/odjRGY119CRJgPIYDSQU6NKHLx86A0/MRDpIIjE4Ogwwh13WUA+gqOS4v1yqf6uvM/m8d7hM2/kplaYoDlJxD31TEyrQHCbONW7ApgIKROBgVIAWwp5BG6+rbHa2I0Uq+SAcuur7BU4rZNm2jQ8LGTHptkwCD3g6dJ8f0WMzIqD/pxTJBOJj/Z185MF/alowMMAawbP1ZkfE9gH2Tl7oJ5JiAH1qN6NeI/YDR52VgBD/Yj5gynKyrxLzZTr5TkmraHzBR9owAYHghyAG/KiSgfsynxlNb7cF4DEcy0gTYVyJ0uZCJ7FXL254nj4RGiwXCFvyRenvWsKrtCRMKUM5OITXzysP8tKRAhqYXyBn0GLH3nDabxUzRalWdToeyp12wWT3+/WDvLnmPzoMQy87SPQxXaksPsgs2sobAKb+FPgleAgi3sJOuUaCAAh+jC7QXHhBFzMBcIK7A47AWkmRagbygAtb4QrZWJrtgs42SQXVdR0gs6wITYqq4AoMT1m8tywssvMaHqML1HaG6yzDKfDkKMUCPU7SplRZnjWQBD45wKICtIY0kdcKpHNi6aCYiyuTHW3WgHbi86QgrADAj4iyarDP1GgD5dOKL0IFjMNVhV87TLthQ48Gl9SAjpUNlCoAPhFdVgoULwkQ9H1PAHR0wAOClaw9wMQZqzUUXiHKnfOX4PzwpLj9aRWnMbDLqYwIWYly0oTyC7TPEkFmnYk/A8YpiutouOPYopstFrHF0Fyoxh+OFgKgDaivSYPXguzl7CG46iRw7/dyaSteJXFdtYUJVSxyLiUZoDfaqQ5vA08pONL0dOk8Oc8HF5EvZ5Di6Hc2zG2Z9jRcJ0C7TrCiuPGz+4Y/6THetNChQyT7xaR2KQqzqEslaVjnAGij2L0GBmMydSupp5plJo3g2YrukrKer++jVNpXteTDSXAx4RbGYz7faxWabT6bL1WwZ/VQ4NQBvYrYbOqMvNoueCKBl32b22Wx2r1scshYznRMaw3R6q7s4LjHrKaW4xfzOjMZ/mtB5FLjDGzUVcjx3QclFwXUUAQ==\"]" + }, + "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/\"1a95-PO02/vwRB7j7uNYFVsQF10sN6jQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cd4edbf7-3fc2-40a4-a395-d0a384963d17" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.855Z", + "time": 655, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 655 + } + }, + { + "_id": "94cb7ac27139c37d3db5c25433d5c5c4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9/published" + }, + "response": { + "bodySize": 912, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 912, + "text": "[\"G7oGAMT/lmqna+adcSL1FbeUWjB8OaxRGYpjj4b//94Bwhe8b1Btm9vWGDasqBOmY1se8cuWpZs0HUtrb40fBlyRn+uZJmgFDk/OPw922ZrhrwFDLzoKip2nsJgrBBlnn2v0eujJwOOnPmxGAm+FccTwbWkFnjA4T6MDf5/ijt6n4EOvhHkQbjlrkoRkRU0p6zQdvF104NaDcEsw+EhijdQBE83jE3pa+3tPY7xRnSEWg/fBGIYheDnE4Hxzc3f9dIhkIkzzkalNcXd4drj/cMv6TIXsclBpXNBvwCCkH2zmoSaiFmf6Y2onOLI7SZtnpWyaWdVU5axoi3I2T6mYtY2ap60olGwrMPDA4MCnuC4hcG8DMVj6T9JL3IRzetE/yTjy/A2C9BJBn7vH+MlAK+q9A59izEVf/GTY2b5NXg2K0qCjXl2BDk5Yg5dJwrABLxOWS/KjLFtw2Csw9IMiejDhXvcLQ6f9GHyFJw5n0O7ADuMo5oZWM2l3QIY8BQw7VNpjPU+GFVlS2hG/wh1aO1gh5rvDAXmhTf4kWpI7ak/97p2wSzBMEDC39+BwQUpyTi4xIcX4Z4gM3xzxdODvnwx9dRCpwhic/KVOSEi3JlyrkhjLucf6q6KFmyA7o0D0P+beC+uf9lM59NeJwfhcVcQJMH9ZzGeORmy+hbXD331A9+3wgmzG+2VPpRLfY6CQcsZqwKpxPEsc18QUI0PQ+0Pf6kVTTIhGtXhEVpfbWZZlWZMkeZNUWdlWbp/+q7fzos7SvC7KNK0zPxE4QbvD9Wip2dPiJcWSZi8iiH5zNDiyaPprQU4KI7we+gffKjNaSudf//VkwUDrUdtDeSA83aQqfONj9E/CakpVAU5JSWo3q4rPGGk/wQcHjmkxXRQYukAzq7eBIg==\"]" + }, + "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/\"6bb-saaRVIIJV70L3GG4kJghSs6szwM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "857973df-b59e-48dc-bddc-957f5e9a2b31" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:20.963Z", + "time": 688, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 688 + } + }, + { + "_id": "64e7b956f2df9660f52f83214bdccb38", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/test/published" + }, + "response": { + "bodySize": 800, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 800, + "text": "[\"G2AFAMTKdPX6bvULszpKmKzv4kvJXArCGkAEyaUZscHl+b8mmJ54BSWm3Tu7XkSCROLebHz4hxU28XweSFOdiwlGD4mHA6Hrhh8gH+jgHQyEWKAQ7IXu9FkJK7xPwAbTh7TiY8AGFb9289gSzM6emRT+JbrCaAUWahnmV1fBb99bLxvLp2dTtyrLyW67WDWzGsO/WS83G8snKEjh+MstUI9hpkOgB6mF2npSOjaAYCApExRiliZqEXv34d3Ht9WmArLTYUI+n/s/Cok4X2hthWA6eK4e2kTMRXkkZVL4+VcZBk5bdUDirW8H4+FED8vpcK6Hcz0ca62LohhJfFV/qCX5sB8U6BXoSkEYRE//R2F9+MDmfXTEMB0ouPfRIWL/6eBmmF9/FPq8JPkYGKbrqbOsSaw/F8D5hoKUpd/PXGw6QQVrnZuGmKXxydsgMOAjpTzEmLui9mF/plehzQKFg+UqpZisDPsOBvY+Bc9rOpOQ3Z49YTHP6xTbVj6ocl6C92W8UiKXEfWXF1fBQSFER7hs3BzoYqmUFHrAYDLAA8xMa4VHmJnuee6ahNpKnbfDmVloiQgq9/SjiTn5dM7WeaA928d/NqV4v6MVp1xDfNjF03zVxPDBLVD2c7BOisb/GDHQqTELvnytBAe63N4l+7sYdn4P01Erma79lHZNd9n7fNlSghm3569u/IXq1gYYXGKQw4AL5EGA6y4n+9Wge1Cry+VsNFmtVqvJcjWfLqdTjOuMx6OynK5WejmdLsr5bN73bjVHMsNg8kaHg8Ils2hIytQD\"]" + }, + "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/\"561-M58LmJu4UZphyDpKzmnspQ0muEo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "71bd1bcd-39d4-48b7-a10d-27b168c761bb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:20.967Z", + "time": 688, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 688 + } + }, + { + "_id": "44b3e6574228f053188fa8214183c4eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1969, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/basicEntitlementGrantCopy\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FbasicEntitlementGrantCopy%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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "08ba5f45-1c5f-40c2-abd2-d9e5998ed646" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.015Z", + "time": 159, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 159 + } + }, + { + "_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-39" + }, + { + "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": 1263, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1263, + "text": "[\"GygPAORvzfBP1513DWyoKpxSf6spfYfyWJ3YAmiK4/T7uf5vaTXNr69Vl7Qq5m+iDlQ6Tbx9QhUP2SWSaKRKQkfp6pjfLgz0Et1Qiw4ok9UI9v0Bv0gOC+wB9fuKYGHJocdSsxv3cQRmNyFYqFjq6yV/TuPylQOBmOwS7AG7yxws7G7kQGB3WQxBCIQclXCeRiW3r4eL3HDHud44EPieAsm2FHPphQG7AAJpGCtmsAcs2QPrsMzVDTMOan67i9xKzcN8B3tAXaTrjWDBwUlgmMc7wVYwX9MBvBXXMNTvcJ7kgHmpN6vYfcg65ofutfhlc6M5akq5cGBQmH7EVDFFbwZjBIKg/hD9k5Tb16H2YA9YM6bhW3wgpBU6G11smnCOdoiXLWFOQDAAd7IZPecSR6PwKLFGpG6OTaeLe8WopuNHSjh2TvnXOeI3jL/OFe+YeYSruFdLmcWSieaa1YiHcBKXkTAq4OP58TwJxMwZ7JWFVvACS70QNOUy0pcAznWo31/oxjJbwQwEpq2eKGOouQxGEAis2SaJtAuGCBYKkj2V+HArmB+yJIUOxtDGNJqqpDT1HBVNJnqenIohNUDgPuw4/yUf2n8ylopEPrlh1JO1H1Us9RqWCQgU+CIgyxIwL+xff378Akt9WTDD+ZFAqa5uBaweynYEgvRcm1byFJyh2ohElQ6e+qg6mhhTjeeYvBFA4JZxB8sJTFhddNWBPUCt9+qZqwgWBBMNZZoy9UJwq41l6ipZK2XLmu4dkHDFNotey0a+a8407aaItNfa90+GXPsm+cX/W0Ys/+GXbcjDfH+8rnnZ3SjdvnkZ8S83YbHhRPMyIq1DdwloHspnOMk9Q4iSK9a+p7ktlJiph0A2luRuOlzYQ5Scykmg+EYl14BmGK1EU2CJ4IxX9ObJahX3a5uPJ7mTisQgEpSkS3SgC+olVi4R39YYTgmDyzjXphtOsB/ReMGD6CSNynCqUjS0k0LQznSBtzy0jHdUeoK1X8aIecZSHqxLuSCLPap52IfMLUBlIYCDdu17uiLR0iXf6dxR0+tAQtd61jBNmUwNVbIV1HjXUGRJSWRe+pA6fLtnl5TpF4JZ3lrOr63m1TfWlAvKzQshrZSWmavujJZGtU0Xp8dDf1J1/0bI7lcmiaC8iUh94zlVQnDaCd9Rk4JuWtdhNLy7zfqqpNGdYLztKLMgWcM672lIincXPA==\",\"ThXz7/gd7HvMTR8J/LUc/k+Xba5gJXluTB3GPAE=\"]" + }, + "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/\"f29-Ti/GQPiuNO5HFboYc/ykzyfrMM4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5a91f1eb-3b62-490b-a371-e1c4ebae3c9a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.017Z", + "time": 300, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 300 + } + }, + { + "_id": "f4a350acd9dad1088504ab6898a7202b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/customBasicEntitlementGrant/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/\"4b4a-pmnrp2yeD8H3YfsRhzQPozWFHYs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c9939de6-305b-4ad7-a092-a83232ff958f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.044Z", + "time": 612, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 612 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a2ccfcd0-3be2-4b19-a9d2-4ed7e1329d9d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.047Z", + "time": 629, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 629 + } + }, + { + "_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-39" + }, + { + "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": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d4-42PI2+aZ8dfOb3RilPr4LK45Zz4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c287af4c-7c44-46ed-8b5e-3190f9b56c6d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.050Z", + "time": 806, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 806 + } + }, + { + "_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-39" + }, + { + "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": 1658, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1658, + "text": "[\"G6AMAOT0bfZfv6P5IbRuoMflKvuuPY7DCLnxJPhtGLMzNlCh/P2cStaiSg6MfDRm12QIateX9g8YVW5q0wSKSGkCq2bbwP83/hwNtdNCgOYjDhgDWtysVm/pcVR/PxAaZL+mmKoTppPw7JynsFtvk/BA+9FuckzMQ48/9/PDhtB2flAyuBTaop0b1EwbRfvrwB6J/f1nr79Pbm+70J2fXrcXt/dyXPx18gEe00C9zwSfUpGWFA1mVprUADQBu9kDMu3zp0wbzqpDxGloMUshNJhKbpM85SExoZwHoOUyDOPCIILj0WI3HmH0zmhxduQYjuALYl/+oZBEUihKoruNlCn8ikBo5PbXkEDrGXyboV69yDEczRw73nqZ8m0CNDCu/5l1T/mrl+jvB9JqepeY6FovAjQZH1r3lKvJMobJ9M6x4ywPcHAMMJvBM8pi0ec2kBN0kYN48x0D0HZ5d/8/NHBOAi8L61rIh2oSez9bdmqF55ZmqSt1NoHj+2IvwvSOWjqJnIp2ch05ZR1DjnnveHjIZZO8CFW+n8MFr54VZkVJZg4NOHTI+GKOAdrEmgaqh9RXDpumUVpR5P7ViomhH5UFTdPk95M36aOUbvDisQWHheQPLCoBXPGhkDzoXq0pl5/XFyWBBfCi9AL23n8KycN7L36t0OiqDMDhMm6/p3HIJA4tTLK+R72MAegPOJxI5APHMHE4MYQe0EUagjq04LAoyVu/JtPHLfF/N1A2ax8Hs4zBoWOAsUiovfVahqxGAIJpDTi2T7HDsiiJQ1McNIEAmAJRgRNYOGFs+G+JQ4CknEov4h/A4gi7gV+LbN7YQUUroaZ5wH+pcIZHMJ8C6ifNjnWX5IlvV51w7KIkGZKAV5N6U3RVxdgADpcKnO/QVu8N9TIGk0Lv1TJIgC6HY3BoPxCZoRzarnpk7UDyhKk2KgEARiTlH+T5gyH1PUkduUuVw/MlQCYsvnOKWuDeLtg8JWF7l25lTsIv2HnhyuHbBKsXToYpR/opLE64f5cqNVccI9z00zqHDk2c4GXGjZGgp/ajnUT4lJPQjxVefnr3FjRL5N4xtJoeOq5yiAZV/nyHJn947Y3dQ0U5YVo4I2pLrrw+fvVjbcoae+9ONMhrQhJlsxyPMB1KIVRk6qTC80gkSeXwiUgSGNo9j0DQUYuWRXXf\",\"x9YUExvdrF8LK2hVsMBXaE2+Ag1gusno2HFlmLJpmha+0evkA4WG3gXHcWHw3Bau2A==\",\"vk2BFO0BicPbFAjtAZc+QmNF+2thsC+qT0ysaA+ju1TnMWUfBwLpsXUx1JEs1Ft7+Y3G9HdBi59K25JqaHOJnjNa1GdFD92nC+CnyP1AL3hTMhpcedWj+FXg07Gw+QajFaZn8sMk3Zb0saTNJnyxJyHm76bP05aEwhN5aO/8hAMa5BRIrnrarmjt/aVsgz1TOey0Pdqr+anBB7Rnl5cj0ENKxrazg9MJiROxmBjQ+Yg/pTR0I40V9IrN4B+WXiTtHom1+lgicpdeyl+0id+VgBRgoCBV5v/4yULrzwDytUxRmZfzh13no8ES/0vcxR5kE3Cvaw+4R3t2Pa/Pb29vb89vbq8ubi4uKJ1ZX52eXc7P55en15fXN+OofZdcFC1OftwgoMF1KWpplkIj\"]" + }, + "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-cK6609i/1VMgmFPECTQ8mZbAAh8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "28c7a22b-5c50-4609-918e-b6a6e9c956ac" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.110Z", + "time": 576, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 576 + } + }, + { + "_id": "23f6975c8f4679c70a59621660fb76ef", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow/published" + }, + "response": { + "bodySize": 63, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 63, + "text": "{\"message\":\"Workflow with id: phhCustomWorkflow 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-O81VUN99r87flpqNE/m/+84eo4Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "38ee11ca-ba76-4d60-ab1d-b4b46107f7c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:35:21.128Z", + "time": 547, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 547 + } + }, + { + "_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-39" + }, + { + "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": 3182, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3182, + "text": "[\"G8YiAOQyU319t/uhmEDUccVQktaH2ttyKTkfw5OBiKWMGFqwAGhL5fC+/f7XCZXSCJHkodAIhVJ2Zjbcve+Fb2az++774pYwTaKailsplHjBS+RQIo/hwI5vSkiILL9TdWgNSmxeXm5sSC97O7+x0juKJf3X2mD5eN00wb9phwJZn6hCyPDwWG0YvKM4DM/thvpRP65h697XpT32b7gmWc+0c/Nb3V8aQllrF0ng90BvKMcCY6ImonzqOAEsr36v4+twTMt5XY+ryfJqQflx7ujQHmGv4ysKTPB5/Q4oJuxPdsh0TrtEDTq2ncXxUGIKLaFA36bKN0mm8UxIXDRK5EQQdep6TqvZdL5czA8L7J8Fyqs/StxoSOL/ElCi88cjhcJy7QcKy5bZ8hHaSAHaxuhEQG/ESWG+Vvymw7HiBsAXOCDAKYojpW86WH1wFAeFgwPtRj75DwNfKlYvjpQGmTUZwI9Sa+vaQCXp6Bm+ALfO4erknGYkx1fb6JYHtB7AbU4bKWwPP+oktJECEQin8GgEJWnDF3DKVdoLp+mKtJ8A/OEHVUlxChfoQCJbgIpd24EYcyp2x7+RQWaPenSyrFmaKxo1wbw4yuBje1yMgOy3zT4T0PUCuj5fK5bCTikEHwYK8XwAhR//3G3vi5iC5aOtLwMidprna8W2hsl2gbZKUfnTyXPRilk5dIr/PTL4AnWyinRpCIGsOsgXyM78wcogmkRRIYWW1or7X+zdIXXzDs4fimspoNaVhJxQiqoQHAClYzJEwIAYMWpMUYXftLNGfpekrSMjYROCDxBIG8tHOh4G3m16AWtAoUQADwoBzUDdsq1kcWyEcflascqvEKMGCouNWKGooWnxQIVCq0vka+x74WwcWrfxk50Tbr8A114UnY4GpxMUk5w6ngncOve0seuHh3L7bfPK/NcbP1xdTWk6H69Wnw4T7AWsLS43f25u9w/71Wa80PNlNaXV3H0R+RH/eMPNefMFBeoq+RBRdmjj5twEihFZiRRaEniqxQNRYv/HXYorXBeV+1vY0NkbJL7pAJyjVXSSZYYukDo0qMDipAuD5NDBqkUQmy6sgV7xoYFP8NQpVmiNQgkKixU0ozZSGFkJQzZPKFYYXmREhRIAID0RCqW7EGUDAnlYw+RN6hjtkZ/pkCUNL/e0VSLVF3a8//55rbjPBzn2AnstoSgANOFEnDS+gE+2\",\"tpXPCEbpba3rcgFkaifFSrsy3k7h7KeAR2+A+3Jl6Gp6mC6HdDWh4Xx+WA119WkyXGmaVEtt6ittuuGZGZ1IafeU6R3udKJBjHU9HweLD9P5h+X4w3L8YTIej/M8L5L/Y7fd9Q7AuVXztHW4uqBcCH7Vhkd8X+/c2GDb4uN/UJXs7U94YmRtV05ITzw3NkiJFMWhTO1SlajOMifLhkKdM9KKM2ms0cxT0jZ03/f+jncGjhyuMeqs8Lf3r/DYQCzO/+uyqmxD1wah/3BunYs2WdTiPHr8BkWQ39iQq8hoNPqNkqKKdssuvSOIk7C99qF3dK9PFGNJNrD2FjVpi/6hMpFF2dbj2AbNA6JDWRlDPzlN5QMHYV0BbVP2gBEsQ6WTdv6oRPJEuT8EG/gCT89rxbUPMHjTAS69Rn+wDFLqwzzvCL7MtJ7Kt3tel8i6daS5WEaRgj1FKYiuYNG08WXQIT9l8kGCws2/j9d/7xQKks5DQgdJhyOle30iCQrBFWV9IoVi9ka/adeSRBrR93lgfJg3HeDgzQW+gNrlr9YlChJQd9yWaPEfQX1vX9hWPgKlzhRqPZb2jI4wv3+FAhQ+bHd7hYKYRnKo1UuKrUsRvqCpV5y2O8isxB3VlmkEgJQsjPBKF9rUDZcm0bU3ZzEjMhZMwiyGHKmJeLJGhjgn6cabi6Ri0qURQXGFAqyR9aMKa9rcB+GbbvTFeW38B9Ic3SnOpR1WgkLn3xUKxQcNLPiPN7a2JKEIbcxcOp4hhQTJEhRagGn/jhtPZMAz+GOrqFqtjRSihCePGPIsePRGPnJuvLmIUaYI+4jrTu79GSQFKBxrqd6ecm4D6SQfb3STJkv9zO7Kv2/LzfX+j/vfoNz8+7jbQ+3DuFgoCNqHcy2TWHX94q2bKKD77pMzJCisaA1SKCR/RqMP8Mj64AiSh+PsMS4F7SLhFazQDbaHxwSLFHslHaG2rJ39yH2QiGSHhvNUPyvusph0amMmIcvTJWUCsmGbmHVIzRU5RyYTkMFLzCRk4TfMw3i6k0ymY6IEZD2AygLtkfcgEfevW3eFRZaLY5Jgk3mH/f3XUrg86KBP0c/YWfMnZhKy7JMoXid9ZYmH7W6fiXZsIHDyzAvlvtDuDH1WMfgICoHbyUyhcJTOR8L6ENYYnFX71bJ29n+KyTLAM5SDINdGZzqJz2yq6k+z2dXV3EwxOWjkwpKZ3yUl9ub6udKkMJHJRLgmbyhnGtOHi+6STjRc1+Z7smRZg59qidwAOp/atcg6swVpgNjPfotNoXGVoGsOJb00WYH3Ze7SU9sG4mPgm9fbmqbM5lvQi/8a+F2zcRSGPiYqeyrBlv58eJT9mW57egFRzU+LmWhrGNSVibhatCMXdWLA8Dfa5DaCff8s8HrAZFT33lCOK4HY3KdIozr8nrHFpA3t46yG9RxRdr21FLijpK0DEGCrjoRd6pd5Jx1eMScVsGvDSTG1arCaE0qMzwweLDS7XNxZPjr6g5s2ocAXHTch+LA0TSwrJGJfQKCNd+QokT44KrdZ8S74ppk+2cbY9F3yd/9GgUxldBKPecMGBbI3RFehWL3QSecrQgTu8YymHfeMcjIbzwReUE5n\",\"y76luwypcRvrnI4obCOfMKHxXgBYUu+T9aWHjiX0EI3Tl+86BP/+iKjZxxSWa/+S+UfleZvIRwk4kBDj2Y2fRDT/9EGff5IKWI2fjjNZTHqBrb31XNtjsrZes6TDsLSEZ3L9SWD+EF5swBYDWHca2GCxZOAj7u2Jdo1mlGj0ZRBzLAE+UdtlYsT2nUMRlm4HwI2uJqM7DTTtrbka9fIDUSJIn0RRw/Qnc53Fp2Q4cFZvlh33AcbqLS5oPn/catNlseiFB6smOzyjnE4MtJFZeX0RIdwuXU2m65hOl/pAynDb2afxgzaogduUyXg2pUP1rnwjqY0o8RR5ihgUeGr9VnoKLfU=\"]" + }, + "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-Rd+Vt3U7QPty3dLaISh+dlgbyB4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4f3d6be0-1c0d-42e0-8ef9-1420966c0786" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.147Z", + "time": 538, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 538 + } + }, + { + "_id": "db782db4d687c3030a4a32db889f5a2b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"basicentitlementgrantcopy\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22basicentitlementgrantcopy%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"47b0e373-a9df-477d-986f-4aa64317ebed\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-EaKziTtqOgaRfx1XDcCjOGD4nnA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "56d50280-a423-4b1a-a59a-2459d2eecd0b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.180Z", + "time": 170, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 170 + } + }, + { + "_id": "3aa861dda0ffdf055470594105213338", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1875, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/basicApplicationGrantCopy/published" + }, + "response": { + "bodySize": 1591, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1591, + "text": "[\"G4UNAMR/92r91+/V+Yk9S1ojW1q2V49WxFz7kQIW4HmxLP7/Yy/YB/koS/CBzAZ2YxFF2fb/ue/uvUWFVdD3okWDjWStG1CZTGW0dKN1LDO4/V/aw2hIHFQw5ZOmOZtSRePsS69sfOaaDgJWXRgST9kKhuW1uYHhmD+w82r8iWqicbZ37BqGxHrwEYJx1tgaAiuYp38jP7xS58AC/zzfQa4FQuQmQP7tHZf/8OCXvlPnbyqchutFWW2W5Xy5mK+vMp9wb6NvKpzsG0qmgSgKJntYvsavkRu74q8qQkPa9nwWcG0snYXunz59+fhjDzeRZ/ZJiJ3iy/7N/tm3q0G3XpS/d9rHELaDgCqj88FDlYqjPP1metwG9uNJNZ8ty+12uNqulsNFtVgOD1NeDKutPkwrtdBltYJAg6oJkH20H2HI6FsW8HzkMpb0UiGY2nLwgvSejv/cBMVDpHQrwHdso2p4QZYpPVprKyQ8r1if/oRvC2ska1YSmV+4+DmJL8Zq9nReLlAV39aWHeRcQKvIkD1M2F8bz+ngFCQf/G01JAatEbNO9Kj3svnNbHGzmtysJjfTyWSS5/koutdfP36N3tg6y5GSAF8b4z0r7rENAPgIaR6NiPWk/bUxnnWN/4Nbx+O5njml1lecRG/Djg1PT77g7XQ2rXiznKizjC8RZdFOEsdfIz37j8s+J1RNgSiw7W8nIPqW0X3qtLN8k43x8OEvVeT/VTdczabldrtdrdYrhXQrMBouhsSf5CX7AFYCdNQX9k75PRaX0APaSOPMUc3xh/JGHc4csnzHTFVX+1rTA0H/Uc0xGxg94AOa7zXSA7Lt+XynrRLT+lOZSBOC8bjS3ur7unAyzTAmHgoL634kIqLxmL6w0t51J3c4chnp0utjPh6O9IBO8oQKfRk10WOyganV+BhyW5Qtedwwt4XxgO6Fe7agwcv9t4GgPgnqU74zkMBUlGWORHxGpbtcnB0lIit3dTERJcdN9phR7Bre3deZijIVyzygwZFuDB1YWJaIkrYk+lZRRsoMfegQA2/wsf25ipybMStSGnDXugq2+kbUv/JalQq760k1ZRzsyzi7umY/MrZyWdH1smmr1d4F6B7x6M8b8/OdUkUHyWZIfq62RbvC9oQooTIrULNrLiAkRLtfXEAk0FGO0iJeqdDaotFh\",\"lhYQHQgyMCrK6DHsvfNZurYXNiGNhA7jjToecoXQ4DSAI6EyCmDDM0fG2idtdExihDRAjoKSNIyiG4HhSXkkfe4WnMdepR3KHYuSB/UCqpPXVCDfAWyI09mhqfzgNCMO6J7pH+YsArui9GKBK+R6ItBBThcTgT8nZhAEXdt2coPZfKrVFrgMnsq3i9n1dJvZOQLAQGjNM2crUyOuPnOFKMFAeOqED9OEgCn9jP+y0wy8SxvYA7QxqEp/DjYGzVHWJ3wzF/7aKAsJrbos5EA3KDLsuhihewV0e26KOSrlbrwJEgCii1k/AUXbOZTq7Eb+NFWId7WZ72+6XCRRr/6yxxVyutq0jK6jyXS5mi2BmzWSQGHvYrko2myuClJql9vaAIkdnrtrCFzaGE1j9C0n\"]" + }, + "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/\"d86-JG0W9rJQtetP7oHPCS4/Msu0nMo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0b4607a2-fe09-45c7-984a-de0aaec195c5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.219Z", + "time": 435, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 435 + } + }, + { + "_id": "5bcf0aea348fe61a6ad2d97b09e845e5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "_queryFilter", + "value": "(objectId sw \"workflow/jhNeCreateTest2\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FjhNeCreateTest2%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\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"objectId\":\"workflow/jhNeCreateTest2/node/approvalTask-6649e6d6f2a3\",\"metadata\":{\"modifiedDate\":\"2026-03-30T20:05:39.307505597Z\",\"createdDate\":\"2026-03-30T20:05:39.307503978Z\"}}]}" + }, + "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-OMa52goAK8Y4Oc+Ex3EfA6pTfnQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "409317b1-5b01-4d50-8ce0-ba70d2155aa2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.221Z", + "time": 158, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 158 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5tXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dHGlTi6OH8gpKQgUenf9q7HPbmUsBFDTvcVTk6XKb9akAClsqTN+naWBd+2U/eWU0rH78cPfXE0LV8s4hhSeLZ6hCCs7jyUH18xUCfLSCd/WZd3vunhc5MoY5k1meMVgGuh2cNz25mal/sufuGSj4uOSwPIAOWlv1Chpf/M7jKXq0ZMTaodJD11EwgxcmogFu7u8ftl/WAO02oIJ26FrVdT1qD+Z13gpkKWdxGaUw0gAX8rB+t77dX/s/K9Nxr4y+X04axlkky0bkUQzjI9zmRyNTtdf6ChS48MY6qF5BufXLyaJz8fXm7YAU9ld2m1BBMJ/XeoWt0khEXrFiiiVnYEDedITLkcPn79HyKzEtCT2W7DwsbCjvjJU+kNbYnvtaV8yV1ZoQQs7cbn9uFPIX2cjAZS0P6L9wq3jToZvO3szQ2OLq6dtvJPlr5jVdHtBPJ0pOpl2YlvhC/iKnYqCt7Jcchpkm6sCDfVvtxrXAYI6ZXDAhf0SzI0omb9f7CSWvIyWvIygs+RHyMxmnQQghSlakhr1kXbkMBoc2qCG4WbTEl+XCNKe1vWi0P8PHpZI0JNQ4R3YViaEtIYQUp4kVKSpi/FKx+D8Kf11i7pw66AdsECD5tYdlf9gNxRgaI78d4+ObWo+z6azW83lQ62mti5cBDxllTL2VWs+mMxgp4Bm1r38MtDY9at+g2hmv2vw5TKjgzhpp9uj8uueq22N/6rjHCEYKiXJ0zhqqV1qiNSm09eiC0uIKVUJBco8NRxCnpFNkear/mCZzFs7jZJ6F8yycR2EYzmazpTeb3XbnrdKH6QzGkQI6wTsgnQI66p8ZS58Ii4R/kgK57p+QsGVxKspykZVZukjaJF00ESaLtpRN1PJEijZDUDiLB09HCvhyUjbdrK26oCrzTKJ5EWUY3RTaowETa4JQ6KzVoSFQL9kna1swBW9ObNDoxpEC9n99azoMGsyKtmDRghctWySx5IuSyXZRJE0jsiyJ884GWYgGkvu0wQg8K49XkwU4dTp9LAZqr3y35ydGXk89+f13MhE=\",\"cOPL4G8Szsg/07OCG2ZSFe9LPrvRfEWHM7dkw0FrsEPvlT44FuDga1AHHgjT90a7QBjdqkOgDvxpw0vhp+SfjRooqeHtel8DH9D8zC1R7s+Sv4geuo5NGY1qSWnN2ZoOt8Ukxjb7GT5CH0fCtVdvpUDMpZJsktiS7+RUS6bZ4PX77xmTtlwUOnyTFEs4bMzFYm1Sa3ofw0eGR5qvJybNhEeKB1wi42LrrslMZDWQmymP4zjyyk1GKlSoM+0q3zF381HfVIjeQIc6JWBU6u7zh7vNhw9CinsgveUeL/y6KJNGMMnSljXJ7Y9Yq/Wn7/fcH+f+OEDsg7jzadz5I+6yIHs6xCdr2vsw7jgBUGKSxkKiFiYIGukMUbRVTBnMq5F7HOmjDZqj8t7lC++UrIZhQqoQiWTEgFNHPEBV69YCgkARPRIn5wgauoGli9RaI2eSv/7CO3FA+NA8od0VEVTYxGIOZ5tnoi2zMBWYquvUIKl8y1U3WDQUmSrvobt5EF23Q4xBKTsyVLBmIJGB3UEFnTkIOL3o1kxrgFOUXiNyYBdmqWH2BsrXRhao9GmbGfV6gyyMi8p01L9IlJW8bN1bnYcouvN7kZSsTZEXecayQoT3AHHQuMzvLyYAC85GPlpMnYa1Q5S93EcoDGGqeFRD5HqjlN8qNabOriZQXDKuHs7UFbppp0hTDeogNr8pcPe8iMOsaFOZR5EoMqpdMK81rBvQRqIj3CLZIC8+Tvj1ns0zkpv7jSPGMpqNkVhJrpB05qDEstbfzUDE7vwY8yAWUcxublYf/38IlrXeIZKj9ydXBUHDxbPz/IDL1tgDWiOezzrMAUkjXKCk6Mwgg457dD6wBsUsokgQWGwiwcWyEloIvqMZLO462gZIayzpjUWyBxqTc8tapxxtDhjkvf6IU/rQIZG28IGy84nQGX7p4o9Y6/SPQlAfF9uGJFGacOLtdbGl3e5I0xnxHBWsB6yHqtbeXnXfmCP/cbbN/3w25pYNQwKKSmKkmVTddKw1wJEpyukcoZ+NB+TOaPIXmXxB9jtGWZG1tcYSi1wqfUjKqslF+SNRkkgCLJ7UedCOVFu2CuJN+yKuUa1JxhFeQIc5ZchaycP643q1udk/pkUPXWewmm83Hz5sv850Gutv95uHm/1m+6n1gqiZeG/Re8bIyJX7We5nAZgPWJcRJj84L4L6g3U2JZyoy3maGrj8yLr2XWcuOSpcRSCLUyweb2KsV+sTylrKyKWDNJrxQqdBfCfvOT0VacWoZxT7KUJxA/3fKWK5sN3n29v1bkfDml64Ej8uqCZvRZSVgifYuHrUMHc3mw/r1TB5k+FY5OjJH5F4Q++6r3UN3vyb3IvnUpi+hjcwUhAi0LyFyL8Qmdvc4ptbsubWyDR22CN/hSN2nYEKDsbI5opA4aiggqPpOIwU1nHK+abkbfOa9M4MVppRKDwVyXe0X7mSZCAMF9B/nZNiFnq7/Xj/Yc12EfzQWlnGkMVctGURdSu2RTf0uGo=\",\"frmcInpnsIPYZqIIqoregNmhuBOWIWhzHlZKtLZuWP9p4pLnkUx4U6DstMHj35Q6nZwUkFGSMEOB84KoJXa4Yft2GWt9iKojg0z2VPT55EUizz5uPwU3f0EVRdTGZZ5inIQXf6x8GB5DRj5HKhWojmjPl7HkHuUmObczRHupPuj6+a8tj2VaMhZGURx1sgAUAuFHlmHCIL8QUkgsSCBRFjLkdNrqpbyHUHQRMyDYi+eiYQkTIpdtLkoRg6AEjFqFlvQsbblbO6wuIiRJChEKgNjLHf+yjqhRF822CLMsjYomyXgWyYpdNOtQT2bZogqBSnMl7AJSk5XbxpOVZUAX9K6X7kwg+TojE4FO/1hX8clIRPymlp9Stc1XeIGqiDMKV6jSkNIrmEQsimWutVQuRiSabevszHYzbfRp8EjeevxpKLey5nTiTbfU1Wopt8IOPY6Y3FoqP23v/5kzWpRP88idXUwM5NGHVvZGQ99URyhF0YknM3tuq+ZGuFVce6jAOWcA2wTuGu1GCk+1ZSYH1c9HfAyVrxcnjtjzIbDtH06fG45jPrutz9qGcXjNlsRoGrGI22x2nlufu103wuhtreXTEzlsMc0jmctneOr49Ylbay63SZRuzdNIJvUR+5orNOZhYzJzLAU+q7qpr7uRwqBuTdZI4rVs/qwQ9yJKsiUry7JkRZklRcKKpnJ5UbrMojgNWZhGeZoXEVawoTB7psFWiIxiBoueUqV2sju4Vz3uTlxDBZJfp24GUzBWkFR/xIHNiQUcl5uhcN/2aAZ7A09WNk9MMhCD0a032h8fciQcmPDZqE1PA7V49FCBXALe+Egp+KOhvKHX75I66Ui9x3HpJ2LpKmDpgqceSXZ7pqZH3BeexJmXnCkwl0a85/44RjJoxDT4ojXzpocO3fBAU19kRR3rFCfOE9dI/eCtl5IAJBY0H30SpkEyn5fEewd6CCxoUfw0D1W13wywYpMirJME5xGxj2dr5ORfygXxGbEGZxi7y5E8LvCqTsprA7sq+F9yPFjANMyeJcWyWElcZFEYs9FiQ3jeATa1RoKj5nkZklR5kInFgqqh8d19GvoGLb3GM1lVAml9AYn3Hm4cvRYwLxKVKJ92BCPd9rgKGNCsw9S07mijnavBoQWJTCUuhzQbqP87WNMhSPUKOBAnjG7U+qkTeC7yEdGK5/G1GhdeV8h43/iBFM/xgIA3EbgnOUssoysfJHykpd4RFZ2GT0T12Fw5bqlTkH17AUUHK7MzliyTf7I4LooiKlh206BonNfD/1TcY3EhnkH28oKCsqSjnkneS0yD7EkD5R0sKzaL4riE26RfOC6a4701J/jOmYjXTInViHkIbiK0/hqBlYOMzA5J7jjqqStcZYItNtH7wvoANMIw3ao6rrBCKnFeFAHZE0p7nHbP3fOdOXquzHnuBwcVHPdDTxIo9IMXRmdvBxwB\"]" + }, + "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/\"579c-6mjrxVbQxjuyp2G82zg4b02MZgg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a9b68394-88b4-4501-a8b5-f56abc717726" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.237Z", + "time": 1118, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1118 + } + }, + { + "_id": "ad4e157edf8a3b18458393d28b1ada73", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1855, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/test1/published" + }, + "response": { + "bodySize": 796, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 796, + "text": "[\"G2IFAMT/lmqna+adbC/xINy5xtrWpG2FiG8HF9DAxyka5v9yYHzCf9Ht52tmY23NhhWlpZdd2FHDEv/ZpNBSmW6mF2IJ5ZMtzgBnocGUuIKAN2ea1q8rCHRMOPC9EW5Rn9GzCx63LX5r+9gT9M6cEgn8i3SBlgKJqU/Qv4ZgfvveOG5NOl5btaBuWVVmYdehhn8zjq9ak44QYM+J4xkIZZge4OmBG6Y+nJr6DVHQ4JgJAiFzF1JSevPh3ce3dVsjZudD+3w6lT8CkVI+09YwQQ9wqX7oI6XkVRbHTALfAKtAI+8OHWF512ej1UTNJ0s5WcpJJaUcj8dTDq+aDw1H5/ejMYoAXchzisFC+SPwj/iR3ftgKUEPIG/fBxudIw/QCykFHqEXUrCGrZD3QO0tBHywxAIVGuf3J3rl+8zYDm3NKVzaxtD35vbE3l4ubelETAaraut4y34ZLhTJWqy6M6mOMUSXKPikLbFxp/TJrqOn5u/0M88mHiHQ1D6dZ2ik3HWUEiBnG12rCPzjMjtB//ojUOsFQlkhkLo7OhsdXEGo2AWfoIdScJ6L/B5asPBqrLFE3g0Nm8h74lUX/IdMhew3gLiJnb+E+cH+ZB7/mRjD/brk/C4cIJmNnt4BlcbCCU0mWWhAHtYIcoMS4FtKEcjuJvid20MPNqFQnDCTq6lSSqmNlLONXKoFm0+p9XQ2X6lqtpovqmqlhK13EHLElWFzNEVFXQGw630+31KErgxite5MTW88NKx5HKUxSslUWzgnaHTfmGYhcM4k+hwzFQ==\"]" + }, + "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/\"563-t74YYZgD/2x4r/4twwuRjvb4HKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6b8b5832-e7f5-4377-9dc7-d0d2c677ad86" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.309Z", + "time": 1046, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1046 + } + }, + { + "_id": "276d4a56e99cf40bc5df44468494f715", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/custom1BasicEntitlementGrant/published" + }, + "response": { + "bodySize": 5761, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5761, + "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/\"4cef-EYto5Y8AiaYxnfaN3gCrI+E2bRQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a4d10626-8b92-49c2-ae4d-c175a79ae4cb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.311Z", + "time": 546, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 546 + } + }, + { + "_id": "e1ea565cc7d655477fe08fcf4cf7e122", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1857, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhFlow/published" + }, + "response": { + "bodySize": 2155, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2155, + "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/\"1b9c-iTu+Vbfi2yRdHzvxiseDNj2KTak\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "16ce49bd-f27f-4b2f-8bb1-d11c327e014a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.354Z", + "time": 1000, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1000 + } + }, + { + "_id": "87e01b7cf80babf3224aeccfc3670dd2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/47b0e373-a9df-477d-986f-4aa64317ebed" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"GxIJAMT/XzN/teXcNU5pKsv0X0p5yjPBAgaY6fzfWut9t8bZ+XeeTJKYjZ7jkkhUESkdIq/TvFZs2vC1JZplPwsc9Ip+LNaZZ9Qe/ABvaWAoxGGEhNFQWOXVjJf5MqNSN9kqz3VWFpsmWxFtVst5zhVrSFgX3zhtGkNVz++9G9lHwwHq1x+JvfNd07s91BmKP6OiYOpbG03sH3jgXe892XjtxiOSxD/PO6i5RKifeKAAdUbthsFZqF9n/Bs4EtQZ8TgyFGaVnw3SDU3K8ZFnP98OiRGX44ySAA2NqSkaZ7c3CB/5eWs8a6iG+sASJrywkb2lHir6LVtJQp1hLQ2+1HWfhAlfTTBVz2Iw734Z1FJC1x8wj0an4/NCFg+l4KxonF9lpMXjDack0T3Yh8V5oXE2mHD9RPaRcGBvONgttzYs4rNe8eLGA9UVwFxbvLhxA7t0oV7o954bcwg0gdMmRn2CcBXXGgImSq94cbPtDxNuPDURYCBJZD0RKQ5LrO93wRCrbsBYv3iM3hc8P/M2RCSJyAfUcPfTTV+p3zIUercP/h/Fh9H44w1FJjfEHSlEDN+t0BTZE8U8/SWwF3dxmbSG7cJZ8cIPqO6AyhPUEi2RD8TrJZiUQ7+0SpjwZttHEwox2luuVQv2heocIyJ3Hcst+9T2v0Zo+ur9m7fCgsRfNc+8uBEds4fWiKIMxSh6SZI9+RTJR8ELxYKQhKAGHz3ZpLGVbDWuzb21+gtynN9OVL2rOndjKaWzDD5lIR6Ok7I8q53VH9cSGa8VmcOwjeNUzvVMFilfsWQZeYLVgByEWDThqpbr48AlPmaaW0yrRA+z8ECsMUywV5bSnyRRPhWGUNHAkTRdAsDlj6b5FbCYLTbZbJUt8s/ztVrO1XIxWc8XZbnKy+InJOqoSIrULcqi+ImUAA==\"]" + }, + "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/\"913-DAxNCMInw5myO/dh+V8Y3lISe14\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f0a13ec7-7a7c-4ce9-90ef-c6bbc9607f90" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.356Z", + "time": 296, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 296 + } + }, + { + "_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-39" + }, + { + "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": "[\"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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-fYeqpSthZkHBvv2qYWmwz8fZ2gQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9d64e5a4-b6f7-4762-ac38-68ec56442260" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.358Z", + "time": 1104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1104 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"579c-IDGf6KUcFknB+02M/ZC8M4KdgmU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5866e37e-6c7f-4c71-9ad9-3283e2ee6b07" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.360Z", + "time": 1103, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1103 + } + }, + { + "_id": "5dfd054b6e239112093f787ac5977f55", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/82db6f64-5aa7-4b13-b1ce-e87e988b5199" + }, + "response": { + "bodySize": 616, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 616, + "text": "{\"name\":\"jh-ne-create-test-2\",\"type\":\"request\",\"description\":\"\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{\"fields\":[{\"id\":\"344817b4-9384-4ff7-a312-1e52f4c4f7ce\",\"fields\":[{\"id\":\"ab1f399d-0c05-4eae-9b50-bb77bf99c459\",\"model\":\"custom.givenName\",\"type\":\"string\",\"label\":\"First Name\",\"validation\":{\"required\":true},\"layout\":{\"columns\":12,\"offset\":0},\"readOnly\":false,\"customSlot\":false,\"onChangeEvent\":{}}]}],\"events\":{}},\"id\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"_rev\":3,\"metadata\":{\"modifiedDate\":\"2026-03-30T20:04:01.608Z\",\"createdDate\":\"2026-03-30T20:03:38.172835624Z\"}}" + }, + "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": "616" + }, + { + "name": "etag", + "value": "W/\"268-E5svjVZjSNWD+4JzxPzL9c2sq60\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "97d31c83-4d59-411f-a29c-aa2d4d8e858b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.386Z", + "time": 150, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 150 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "text": "[\"G5tXAOTXt1lfv9bbg2MNOZx79qoKnWUuqsLcqSrHfgFvExvZDhRV+WutN6NiTIyL3Q1DeSJhpvt1YPcHNxETREX4+k3PLH2YnRCQZFSAxjP7KNnhCZK8Y2HPuzvlbpFNYZ9dHGlTi6OH8gpKQgUenf9q7HPbmUsCFDTvcVTk6XKb9SkBClsqTN+naWBd+2U/eWU0rH78cPfXE0LV8s4hhSeLZ6hCCs7jyUH18xUCfLSCd/WZd3vunhc5MoY5k1meMVgGuh2cNz25mal/sufuGSj4uOSwPIAOWlv1Chpf/M7jKXq0ZMTaodJD11EwgxcmogFu7u8ftl/WAO02oIJ26FrVdT1qD+Z13gpkKWdxGaUw0gAX8rB+t77dX/s/K9Nxr4y+X04axlkky0bkUQzjI9zmRyNTtdf6ChS48MY6qF5BufXLyaJz8fXm7YAU9ld2m1BBMJ/XeoWt0khEXrFiiiVnYEDedITLkcPn79HyKzEtCT2W7DwsbCjvjJU+kNbYnvtaV8yV1ZoQQs7cbn9uFPIX2cjAZS0P6L9wq3jToZvO3szQ2OLq6dtvJPlr5jVdHtBPJ0pOpl2YlvhC/iKnYqCt7Jcchpkm6sCDfVvtxrXAYI6ZXDAhf0SzI0omb9f7CSWvIyWvIygs+RHyMxmnQQghSlakhr1kXbkMBoc2qCG4WbTEl+XCNKe1vWi0P8PHpZI0JNQ4R3YViaEtIYQUp4kVKSpi/FKx+D8Kf11i7pw66AdsECD5tYdlf9gNxRgaI78d4+ObWo+z6azW83lQ62mti5cBDxllTL2VWs+mMxgp4Bm1r38MtDY9at+g2hmv2vw5TKjgzhpp9uj8uueq22N/6rjHCEYKiXJ0zhqqV1qiNSm09eiC0uIKVUJBco8NRxCnpFNkear/mCZzFs7jZJ6F8yycR2EYzmazpTeb3XbnrdKH6QzGkQI6wTsgnQI66p8ZS58Ii4R/kgK57p+QsGVxKspykZVZukjaJF00ESaLtpRN1PJEijZDUDiLB09HCvhyUjbdrK26oCrzTKJ5EWUY3RTaowETa4JQ6KzVoSFQL9kna1swBW9ObNDoxpEC9n99azoMGsyKtmDRghctWySx5IuSyXZRJE0jsiyJ884GWYgGkvu0wQg8K49XkwU4dTp9LAZqr3y35ydGXk89+f13MhE=\",\"cOPL4G8Szsg/07OCG2ZSFe9LPrvRfEWHM7dkw0FrsEPvlT44FuDga1AHHgjT90a7QBjdqkOgDvxpw0vhp+SfjRooqeHtel8DH9D8zC1R7s+Sv4geuo5NGY1qSWnN2ZoOt8Ukxjb7GT5CH0fCtVdvpUDMpZJsktiS7+RUS6bZ4PX77xmTtlwUOnyTFEs4bMzFYm1Sa3ofw0eGR5qvJybNhEeKB1wi42LrrslMZDWQmymP4zjyyk1GKlSoM+0q3zF381HfVIjeQIc6JWBU6u7zh7vNhw9CinsgveUeL/y6KJNGMMnSljXJ7Y9Yq/Wn7/fcH+f+OEDsg7jzadz5I+6yIHs6xCdr2vsw7jgBUGKSxkKiFiYIGukMUbRVTBnMq5F7HOmjDZqj8t7lC++UrIZhQqoQiWTEgFNHPEBV69YCgkARPRIn5wgauoGli9RaI2eSv/7CO3FA+NA8od0VEVTYxGIOZ5tnoi2zMBWYquvUIKl8y1U3WDQUmSrvobt5EF23Q4xBKTsyVLBmIJGB3UEFnTkIOL3o1kxrgFOUXiNyYBdmqWH2BsrXRhao9GmbGfV6gyyMi8p01L9IlJW8bN1bnYcouvN7kZSsTZEXecayQoT3AHHQuMzvLyYAC85GPlpMnYa1Q5S93EcoDGGqeFRD5HqjlN8qNabOriZQXDKuHs7UFbppp0hTDeogNr8pcPe8iMOsaFOZR5EoMqpdMK81rBvQRqIj3CLZIC8+Tvj1ns0zkpv7jSPGMpqNkVhJrpB05qDEstbfzUDE7vwY8yAWUcxublYf/38IlrXeIZKj9ydXBUHDxbPz/IDL1tgDWiOezzrMAUkjXKCk6Mwgg457dD6wBsUsokgQWGwiwcWyEloIvqMZLO462gZIayzpjUWyBxqTc8tapxxtDhjkvf6IU/rQIZG28IGy84nQGX7p4o9Y6/SPQlAfF9uGJFGacOLtdbGl3e5I0xnxHBWsB6yHqtbeXnXfmCP/cbbN/3w25pYNQwKKSmKkmVTddKw1wJEpyukcoZ+NB+TOaPIXmXxB9jtGWZG1tcYSi1wqfUjKqslF+SNRkkgCLJ7UedCOVFu2CuJN+yKuUa1JxhFeQIc5ZchaycP643q1udk/pkUPXWewmm83Hz5sv850Gutv95uHm/1m+6n1gqiZeG/Re8bIyJX7We5nAZgPWJcRJj84L4L6g3U2JZyoy3maGrj8yLr2XWcuOSpcRSCLUyweb2KsV+sTylrKyKWDNJrxQqdBfCfvOT0VacWoZxT7KUJxA/3fKWK5sN3n29v1bkfDml64Ej8uqCZvRZSVgifYuHrUMHc3mw/r1TB5k+FY5OjJH5F4Q++6r3UN3vyb3IvnUpi+hjcwUhAi0LyFyL8Qmdvc4ptbsubWyDR22CN/hSN2nYEKDsbI5opA4aiggqPpOIwU1nHK+abkbfOa9M4MVppRKDwVyXe0X7mSZCAMF9B/nZNiFnq7/Xj/Yc12EfzQWlnGkMVctGURdSu2RTf0uGo=\",\"frmcInpnsIPYZqIIqoregNmhuBOWIWhzHlZKtLZuWP9p4pLnkUx4U6DstMHj35Q6nZwUkFGSMEOB84KoJXa4Yft2GWt9iKojg0z2VPT55EUizz5uPwU3f0EVRdTGZZ5inIQXf6x8GB5DRj5HKhWojmjPl7HkHuUmObczRHupPuj6+a8tj2VaMhZGURx1sgAUAuFHlmHCIL8QUkgsSCBRFjLkdNrqpbyHUHQRMyDYi+eiYQkTIpdtLkoRg6AEjFqFlvQsbblbO6wuIiRJChEKgNjLHf+yjqhRF822CLMsjYomyXgWyYpdNOtQT2bZogqBSnMl7AJSk5XbxpOVZUAX9K6X7kwg+TojE4FO/1hX8clIRPymlp9Stc1XeIGqiDMKV6jSkNIrmEQsimWutVQuRiSabevszHYzbfRp8EjeevxpKLey5nTiTbfU1Wopt8IOPY6Y3FoqP23v/5kzWpRP88idXUwM5NGHVvZGQ99URyhF0YknM3tuq+ZGuFVce6jAOWcA2wTuGu1GCk+1ZSYH1c9HfAyVrxcnjtjzIbDtH06fG45jPrutz9qGcXjNlsRoGrGI22x2nlufu103wuhtreXTEzlsMc0jmctneOr49Ylbay63SZRuzdNIJvUR+5orNOZhYzJzLAU+q7qpr7uRwqBuTdZI4rVs/qwQ9yJKsiUry7JkRZklRcKKpnJ5UbrMojgNWZhGeZoXEVawoTB7psFWiIxiBoueUqV2sju4Vz3uTlxDBZJfp24GUzBWkFR/xIHNiQUcl5uhcN/2aAZ7A09WNk9MMhCD0a032h8fciQcmPDZqE1PA7V49FCBXALe+Egp+KOhvKHX75I66Ui9x3HpJ2LpKmDpgqceSXZ7pqZH3BeexJmXnCkwl0a85/44RjJoxDT4ojXzpocO3fBAU19kRR3rFCfOE9dI/eCtl5IAJBY0H30SpkEyn5fEewd6CCxoUfw0D1W13wywYpMirJME5xGxj2dr5ORfygXxGbEGZxi7y5E8LvCqTsprA7sq+F9yPFjANMyeJcWyWElcZFEYs9FiQ3jeATa1RoKj5nkZklR5kInFgqqh8d19GvoGLb3GM1lVAml9AYn3Hm4cvRYwLxKVKJ92BCPd9rgKGNCsw9S07mijnavBoQWJTCUuhzQbqP87WNMhSPUKOBAnjG7U+qkTeC7yEdGK5/G1GhdeV8h43/iBFM/xgIA3EbgnOUssoysfJHykpd4RFZ2GT0T12Fw5bqlTkH17AUUHK7MzliyTf7I4LooiKlh206BonNfD/1TcY3EhnkH28oKCsqSjnkneS0yD7EkD5R0sKzaL4riE26RfOC6a4701J/jOmYjXTInViHkIbiK0/hqBlYOMzA5J7jjqqStcZYItNtH7wvoANMIw3ao6rrBCKnFeFAHZE0p7nHbP3fOdOXquzHnuBwcVHPdDTxIo9IMXRmdvBxwB\"]" + }, + "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/\"579c-Bbe7Nh5ROr6FcEc1WzV0SaV2HFU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f55f2f86-056e-4632-9432-eceabd9cb675" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.387Z", + "time": 1075, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1075 + } + }, + { + "_id": "7736cff9c86c4f3fd4d30ad36da33417", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/pghGenerateRap/published" + }, + "response": { + "bodySize": 2367, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 2367, + "text": "[\"GxceAOTydX5fv/v2imEibAxdueskOZL+SvUrwlqDLkbStCQej+7/ECWJ+SaM2L9/P3OM+5c5hq5FecEQz9EWrIRZJAVd7n3IzKa2P7ZhhQDB+Jp62/SoJHK0+8MUbpsGei0sMtTiSGWuo/3iPHKLPldhJW+B8HL75rBBGY2XID/r284S8ka0nhh+d/SEfMzQB7Ie+ZdeCCD3+G+FfxyV5VyWYrecLJZrWbAG2eD13/fIMHCgFOog27AR71HTS3gTyDIk50MchByDi4QMTQy1IR8jjSYUzx85avf0FyLQs+hGEzmbzstmXi+XO0xfGeq2NXI8wUfJ4I8cG6XNnsINJRzhDyQ/GPfYtOZ58PyPS9jKIfSVBoDZLsmjEOAvj/mF42cZ/FB7UXxap3FC11Qgtyp+7un4pcJy+XE/GGQXZ28zBn1i0KfhaaVTpSstk9trumj8LG87SwP37+L9SfF7++LnflO3bWWSxn7APPRJOKA1Zivhd5jI4J75nsJ74ZTYteQHt864vAeZktnwVGoqcdGlxWvx23Vffu2dkZ3Qh97fvXmbMdgZ2THo4TuNEA4VvryQChnYg/B0K47ERVPAHWVDaKzfwmilCKQCELjBCiuD50jhgqd6rZOB8udCtR7AVN2up+DOAXezRqg2OuLw6hWZAjXYz1EobeTbK/8m1jV538QW+gMA8Quug+Zcoi787jStTisN+tCigAsKED052G4qEnmUvBfhAL+7ll3+d5y60iaHKecUMTh6cm0KEHjS3TmzIhvm1tjBEIV4qRHvM6gQ27dCRqdgqSF2zg7bDTTG3YypMEd9jnVGKlmDvm87S9rQAhlWb7y3naVhrTB4gioLiMoU3S6Hb5MrSapQtVUe5F8h41UqfzQQ0ta3RpLPpweJuzWS8tMZfZXRJZqsnIpIh8c0ECYK9cLvIS8sIy1neTmmOFBrJfnHkRO26J5DiwxOmtePQTbzSFmKfFhbJuZRm/QGAFfoz2gORZsCACi/caIJ3KwrYEDksWVo+CUQEC6QurPEocIWaaBC0HKSROUlTmDZBTMBq7Q=\",\"5X8vSMJwJyzXcH+5E5Yd0YWuMc6l/YKLb24J5qnpAwMaejYXinJVeOaccdBUOZXew+u/73MokQEnP4cK4QQoD0D+wUVLXzNBo7Ro2wBSOO+kMgsfpXVQRGWHDQEs/WmlMSWWtBUhR2JTyFZbD0xKMHdjoifoW8/lbDwz8muDJraNatsj6TTxRYya2bqZjGW5LmdrTIyFMGU9VxxFzhm3ENFvh9GimSzGk7KU9bhJE+/Zmv2eXK50YwYVTtWk9OsC+6VvhcPTFqCML30uJrvlVMq1lBPd/9f+HYOBv6115olS5mHUsW3z4neSVJgpa5XBCa+SeX4nyWFJV+aNPb/NnKqQq42waWSrbIdjAAYVCgDgv74csnDQmmQW//P6IEL0HLI9aA1AXVnAl0PG20Vmplq0XI9L5j4xvWoRDAn63g6yISMiet16K5SsUL0tawDF+dPm3MRSgIjBjBpVdrjoRcXY8cqd2kL0kyTWMt1DwZH6n0Gv6X+qw5u1M2nkqvp3jj4UMHFau5drwwDWXznPXPuX2Fcg90afC79/wGbU8/nX6Ea54/gzR6V+ZFsLm1r30bFt19nO312fb6+vh6JJus4k+9yuC0tr4M3Z7acPvS8KSV8ZJjYnEu2NkYQche6QoaiDcWP04tABuZuAn0wW0ZMrxs10Mq/X69FivZiPZs1sPtqVNBs1a7krGzGTdbNAhgcuwjzyXjHHIg8uEkNHwnu119vCJOmuXA604SbwSwA4KKWvDOmJdPDI+/RCR1qyIe+RtLytzwl6fEFelvMFww55OS/ZcRAEUgdANjvTEhlqI+ntPtJ53ii9b2mrbQx7VQWXn0P5jTPWil17oGNdym+opUAF/Z1JFdb0/5knciSxvQ/CG7ciJ1OFZBsKQrU1dFZ1Z08e75W0R+EekeHktXV12PtVNzERihzfbA1NDL9bSHqP/MtXhteRQjtM4+sDHYVV0nEqoWuxwhiWVG59y/FKgNSPcd4E4cJ7zLY2+k4YCc+ouACYd6nmC9pWdN+Fc+Z56aN0Yz5ENbnvpXut8LvlUFKdqRkkqh4U9INlyVJiGFWUst7jFAYWWtB3Ml4tXVklNp4DWAazeTlmssjnKStlghPwcFmXnlfPagyup8LM8xQmk0ViMRnot1qsptLw8Sp7j8qfvVhH4UdZDTpFMUcz+zR0MjZ6chiEtkLytWhFUEbbsHb9tY3vnjU5ZEgvVrmtfhsRfMFFxm88DA7U9UKOGCr9SP4dltv5yvAT1wuW5DY+XLtkosjNrin5bboQPXI8PhiLDI8xFEUFFykB\"]" + }, + "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/\"1e18-zku6yXQo/za/jY8EprVWNc9dY7k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ecb2f3ce-be3e-45ee-9e3a-775a25259ace" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.417Z", + "time": 1046, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1046 + } + }, + { + "_id": "38df16bc423d3c3cf6bd5311166fa8d0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/createUserJh\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FcreateUserJh%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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b1f6fb17-62fa-45dc-9396-298610205d92" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.424Z", + "time": 243, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 243 + } + }, + { + "_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-39" + }, + { + "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": 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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4774624c-2f00-441d-ad56-963a66f2d1c0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.436Z", + "time": 322, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 322 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"579c-HeNz5eDbvKUjM5jFNp3Oe8sP+dI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5505f2f3-23a2-4642-bf08-3629cf92dd84" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.440Z", + "time": 1022, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1022 + } + }, + { + "_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-39" + }, + { + "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": 496, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 496, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.030898146Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.978420392Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}}]}" + }, + "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": "496" + }, + { + "name": "etag", + "value": "W/\"1f0-4wNxS/UKr74kM5jyy7ppS9f4fzY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0a944733-a4e1-4d79-9599-2af8faa17aaa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.459Z", + "time": 290, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 290 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b768cf43-936e-409c-93c8-81c7a30feb15" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.518Z", + "time": 245, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 245 + } + }, + { + "_id": "eda35d0ebdd87a055465b624393b8d64", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"82db6f64-5aa7-4b13-b1ce-e87e988b5199\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%2282db6f64-5aa7-4b13-b1ce-e87e988b5199%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 490, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 490, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"objectId\":\"requestType/e58d2089-3e92-4a0b-b0fa-3ac6d4251877\",\"metadata\":{\"modifiedDate\":\"2026-03-30T20:03:39.343152735Z\",\"createdDate\":\"2026-03-30T20:03:39.343150216Z\"}},{\"formId\":\"82db6f64-5aa7-4b13-b1ce-e87e988b5199\",\"objectId\":\"workflow/jhNeCreateTest2/node/approvalTask-6649e6d6f2a3\",\"metadata\":{\"modifiedDate\":\"2026-03-30T20:05:39.307505597Z\",\"createdDate\":\"2026-03-30T20:05:39.307503978Z\"}}]}" + }, + "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": "490" + }, + { + "name": "etag", + "value": "W/\"1ea-OZXPViCQZJd8xlOMPgUeym0NR2U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6e48c420-9dc5-40c4-b3c6-a5131af34686" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.544Z", + "time": 227, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 227 + } + }, + { + "_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-39" + }, + { + "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": 280, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 280, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:16:56.423Z\",\"createdDate\":\"2026-03-05T19:05:22.729337346Z\"}}]}" + }, + "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": "280" + }, + { + "name": "etag", + "value": "W/\"118-aUzlub7rSCmlWz62X1BGXLgx2gA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "21c16dec-7a93-4f4f-9c3b-2677e34b6735" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.551Z", + "time": 797, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 797 + } + }, + { + "_id": "3aafa82472e539fd6a712b8d9cc7bd52", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/testWorkflow9\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FtestWorkflow9%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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "df74bba2-424e-423c-b998-db041a2d1728" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.658Z", + "time": 690, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 690 + } + }, + { + "_id": "c8cd3f9d1a78d07ddc59b3f60d1e7096", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1948, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/test\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2Ftest%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 432, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 432, + "text": "[\"G3UFAGSZrqY9c+lBDNL1fTet0FN/sdwBW9JuqbflcUIBtzTRl0SSiyzyEwwDDFS3NvjbiwWwhGe/MFH/wsVyv9hBpQX8mjW6ZkL19gv9cjO/66CCvg615IiuS54cp2iuabF2PtbS1dSlnA0KWDaT3O66BsflZtrPlsfBLm93T1UPg8Wyy4OhBC0O9ey+3k5dzEQ5UqdRCQqY513d1bsaql9IbXZZ7zJUgB7VeXGe7zFUkirR0pNPlgLrKxTwfHpi/Sx6b6/w/1+E1EJcMMbEkRG9NypZUIlgjqWxKLIGA95IQqgSw5xKExGWiAlYZEmbeKSWqW9Vk+Ns6rjx5Ey9OEpNIt/kGrUF17DX72f9eDab58Uu5u76NpPUhBYETqt8KC0mRk92UEPLi8FQNacYwoylWVQxYgE2UgjhFf7/P/4B\"]" + }, + "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/\"576-UecSfSfKU1Ce+KvuMA+I/RmBEE0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5751f3e7-facb-43a2-bbf7-94d3f303d111" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.671Z", + "time": 1181, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1181 + } + }, + { + "_id": "f7955396f9bd506aa3055825c37ddcbb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1969, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/basicApplicationGrantCopy\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FbasicApplicationGrantCopy%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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f1af9f0c-5206-4a18-83b5-27043029a7dc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.677Z", + "time": 1010, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1010 + } + }, + { + "_id": "fc77b9327bf9a2f3dd812f538924e5d9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1945, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"createuserjh\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22createuserjh%22&_fields=id&_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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4c938972-65c3-4f0e-9e5b-4fb90f49cb06" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.686Z", + "time": 983, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 983 + } + }, + { + "_id": "8a5182a42d2ebcbb1f0409c2f5d1737a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/phhCustomWorkflow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhCustomWorkflow%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 272, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 272, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"2108a1e1-6be6-41e2-b356-b929114d98f5\",\"objectId\":\"workflow/phhCustomWorkflow/node/approvalTask-74cf85c35437\",\"metadata\":{\"modifiedDate\":\"2026-03-26T23:11:22.098315616Z\",\"createdDate\":\"2026-03-26T23:11:22.098312097Z\"}}]}" + }, + "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": "272" + }, + { + "name": "etag", + "value": "W/\"110-KUMUIj0tz9RR2qA2deJyWzMMIGY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2b9d99b5-8283-4afa-81df-b3070e50e5c2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.691Z", + "time": 971, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 971 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d15f2958-4462-4c13-bdd3-e81d7c98edae" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.699Z", + "time": 1163, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1163 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "01c6d7b7-3fba-432a-a28b-032df47cb9d1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.709Z", + "time": 1271, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1271 + } + }, + { + "_id": "0681cbb2e49de69e8d9855d44139a181", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1971, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/customBasicEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FcustomBasicEntitlementGrant%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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "98db4858-1cd2-43fc-82a2-54f6bd350f91" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.715Z", + "time": 1563, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1563 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "98560b97-18e4-4609-a3e6-e9807941b843" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.734Z", + "time": 848, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 848 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1435711b-5c83-4d03-8487-209278ab940d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.744Z", + "time": 625, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 625 + } + }, + { + "_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-39" + }, + { + "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": 365, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 365, + "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\":{},\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:55.352333038Z\",\"createdDate\":\"2026-05-04T21:58:55.352331941Z\"}}" + }, + "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": "365" + }, + { + "name": "etag", + "value": "W/\"16d-HOu1EOS1w7ri0hoKEtVGJfXSzvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "948ccd5a-bbbd-44ee-8745-ba30d85d3bc3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.755Z", + "time": 744, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 744 + } + }, + { + "_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-39" + }, + { + "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": 339, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 339, + "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\":{},\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:00.455685295Z\",\"createdDate\":\"2026-05-04T21:59:00.455683732Z\"}}" + }, + "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": "339" + }, + { + "name": "etag", + "value": "W/\"153-jYzVpwWxAYcpXoINVle9wseBP3A\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7b2f947b-b74b-4619-9620-4114047acd8f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.757Z", + "time": 795, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 795 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0d7b1991-948c-44eb-a223-2011d8635c89" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.765Z", + "time": 1107, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1107 + } + }, + { + "_id": "76918af39bd7b1c1d1f1f23f85292c9c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1950, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"createnonemployee\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0ebd691a-f6a4-46c5-bbd4-3b35a007c1c4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.774Z", + "time": 1104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1104 + } + }, + { + "_id": "0b5ed69ffd9f3a102722c7c5928238ed", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/e58d2089-3e92-4a0b-b0fa-3ac6d4251877" + }, + "response": { + "bodySize": 1231, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1231, + "text": "[\"G3ILAMT/9jn/6/fOeaWxtkJKr+jeVcwKBlCT7OPn9/f2/l6NBx+exKtBSEtLMNP6IktYrbOIbtnrObyrgQWmPXj2sRozJEbDxHAy5vFfz0lgH5IaBHQKCW520lql003q3K0lDVXpJb1KppK66rfSRq1Z7bTbEDA2HNlUZ1r1cj51dsIuaPaQD08Cc+vestzOIQswzh8Nj3lD4qddsg81RIEXxzPItoDvD3msPGSBvh2PrYF8KPAy5qAgC4TPCUNi3PKDQRiDVFHnPA70+RCYaBNVYMIA9TLdV0Fbs/8Af87vU+04hcxU7llA+z0T2BmVQwY3ZSkFkAWMyzru8zpLQPtr7XUvZzIe+34VyLpAOhUC70Rof1z+nMUNlbeGMut+a6TP6ZsVo0CQyIbR2Uv1rKf9xlCZgdKDrNHo7tuS4aP1dGlv0wLbBqs5Ne1tmkHP99Veeuo40x+OFvSMoAk/Q3Utm6iBUst42tvcrw3tN53KAgqSokDeZ0Kl8bb/9GDoYtsWC2tPX6b3GsfvPPUBUSDwh9Y8DNRx1yqfMiRyO3f+H80fE+0+N1VgvwNDQPhiKVWBLbFsF115djQslyflMJ+sob/9QAoHT39C+qGWYIPwJxP0ykdcGgtofzTNg3YFfVRjlW+DtWEsbKukkXhwJFTfPEP7Xym0aP306JgktOBi2y7e26Q3Ro/MEbzMk6RoS5CsykVQLhAuLDsCJWM7Y+CUcelcskn1mt0tk26YTnNaiF5ue8GdWYyxlKEiC3DYnZjLqz7nd+9jRqbjJOZhRL+VnrU5K4OYX6loFfmE6gNiIqRLvu2NuL9lLOl1lrGllCpEWHVhX3cSLkUxPglMQ7UFZb/C9wUDPWNToemqgG65be18oAqP4dxT9a4QeUSRVFw5gKnOfnRwkNWS/T0vxqdoKIriAVEJOWd6O3V9hkS5TIPZtqNPeSl9bfJoymWaKffuG5eoeAQ7Z51/BEl6eBL0iJogvRweF8jTdUa/n0QQ1ajOuOAQtBn4kp/zgKSEWLnq05iWlpYouCmzyfz5k35XBrw=\",\"pbrbYKURzUSamu8zEMkp3bT//6fV7aXg9Pj3H1paol+//vyh4irY7C2Zu5TSZOqHvx/rZpmkPdmQkT7ij92eKF1w2kkLiAJjDipVUONKNiL3XahVaq2kUk/qlctaRTZqstkutZvdewjUmHUffmK1KxtNWe+W2o12tdWtNmr3iBE=\"]" + }, + "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/\"b73-2wdR4JiknwzmWtNf8LDTwWSQxLg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d32e5bf5-673b-4b96-901a-3f64104521d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.778Z", + "time": 1575, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1575 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "20f7922f-3f59-4e5a-b8be-f778d242583e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.865Z", + "time": 1093, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1093 + } + }, + { + "_id": "74f4e51ff771f4ca62d1197dc5976e43", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1972, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/custom1BasicEntitlementGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2Fcustom1BasicEntitlementGrant%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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e62f44af-f9be-4c23-881b-b27b45c62518" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.871Z", + "time": 1381, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1381 + } + }, + { + "_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-39" + }, + { + "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": 1176, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1176, + "text": "[\"G3sIAOS06fenqzVnJnLpu7/04jLOY0UgMmZbxPT37vyzf5U1bfMOJ61NgRV+bU2MxrJJXcK9gArs0bsEI8zmGo/W+tcU9UTqA0g3PWBNN4II96cnrLTQNQ2qeOzU0Y5gM7at32CC8eZOEKGTW3EHJqh+9Vffx7ytEOHTrd9Y2zqrum5er+zYqe/s1TyeGHtn3lYW+CxhHm9gAluEdjPtEB9gpCD83CDweizLBFt+QWU8te/UU9u0l/QIwTlBXz8XH0AvaR07xMc5QZtpqTvEvx63dGi2V/60bANiS8tOA8qz44PsDCCfPnbqa7oR2xoT3ZFvtoOlTmxDpda8XmswnftG1rYOE8wVIgTvU6q+YKCmUSev0DvhMFgelMg+2GBgghwOASDCB2XM65UtJaJE2pvtGBAf4H3/2HWHKOQEW2s7DYj8nOC2VSZYevP3fV7LfE/LFxUm2NaPntJ6pZQcSXgyOqX63bq8gYGa5PR99Hm9wgQmMcSpPkCUUiGOftB5/jNCVEhNBk/VomuGozY2YdBOYVCaiKx0WVk4pzlgdJnCnPaDvtkOVtLKUhngyBecodTZ6qaVw6a4Rq10wlCyQ8mldEaH7Jyn0B/b0dm2axUWKwHPPeNlmpeUFwpSoPzI50fBRrLeeJdJZPTJetQpJMy5ZZS2Fu2CED44Cv+yU2cJY1JrV6UKK5RCFa2bVxiaJtQ1CfSqEFoulGvS5FIDJf6c+pUGYyp+fJVReoXB559/2akLLpLNUktvs0HuckItecMglUdrHVdGWU9BUetvT29Y8qLZPyIhubNM83rFVn5PXqHkpVTKqqCpzaE2tWEw1NBQFTyTCbJYivvy2MfcdGMZMa33onq5NMHCDHo9Uqckokg2CNN4qRylI4G6qoq5GYO5qSKSs8ERJ+kPVTtZytsx2NiYIxsaZwJi8u3SQPXQLhfdAGUzOfhsCoomM2rLA+aSBUrKptrKZTCKFvGL233rI61DI0SXbW1zv0Hdr29o39OV9G6zRj8Af5hL2UtjDFbSCrXXHFPNGZukFEzItgaC859zfu5YBM/Wc0wucNTNKQyGKnqRlTaNN0UBJviv00uBWnqjkWoaCeIDvjau/zgNggiSS4tcITc/Sx6FjUZfnLd/wvQ6zlP4FIlS/SxV5C5qeVHaOaWkN3/CeQI=\"]" + }, + "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/\"87c-adE2Qj4EEPZjbo/m4evANNm8XWU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d2fd4f34-3b58-4e45-b6f3-78742a736656" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.353Z", + "time": 499, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 499 + } + }, + { + "_id": "603d935292c8355f70f4e2358c6d0265", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow9\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22testworkflow9%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 62, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 62, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"roleGrant\"}]}" + }, + "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": "62" + }, + { + "name": "etag", + "value": "W/\"3e-7JOLt3MrCebkhF2Fxe2gfa5rsiU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a277c628-f609-400d-9ab5-fe0b2cae5a01" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.354Z", + "time": 1118, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1118 + } + }, + { + "_id": "618a9ca800e614aea18cfbc958f0d686", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1951, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/phhFlow\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FphhFlow%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\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"objectId\":\"workflow/phhFlow/node/approvalTask-bf52ce203a81\",\"metadata\":{\"modifiedDate\":\"2026-03-28T00:26:51.612871456Z\",\"createdDate\":\"2026-03-28T00:26:51.612870099Z\"}}]}" + }, + "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-TuH8opVLpIioeeRqGHz3D7lEikI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "97c732d1-7a75-42ec-a474-70f75cf3374a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.358Z", + "time": 524, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 524 + } + }, + { + "_id": "d23a51976b010b435c8df9b33be914ba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1949, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/test1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2Ftest1%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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8a2a1c84-7ce0-4818-9fe8-cdbae628dc4b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.364Z", + "time": 315, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 315 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "effc3e99-32a5-4114-a334-50cb4406f879" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.370Z", + "time": 1213, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1213 + } + }, + { + "_id": "225ac80948c830c83b3c3c2579077821", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1945, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnedisable\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "100c7e13-023e-40c3-b508-30b1398e8f3f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.379Z", + "time": 500, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 500 + } + }, + { + "_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-39" + }, + { + "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": 265, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 265, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:17:02.496Z\",\"createdDate\":\"2026-03-05T19:05:28.771987512Z\"}}]}" + }, + "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": "265" + }, + { + "name": "etag", + "value": "W/\"109-Hj8NXoPU85JFaqSL4rri/yE0etM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0cf053b3-280f-45a5-b851-bd2a6ceec016" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.469Z", + "time": 411, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 411 + } + }, + { + "_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-39" + }, + { + "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": 267, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 267, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:58.955545728Z\",\"createdDate\":\"2026-05-04T21:58:58.95554458Z\"}}]}" + }, + "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": "267" + }, + { + "name": "etag", + "value": "W/\"10b-rI5DIp8lSEN1YyYOc7+yDt6g+CI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7e6ad996-b9cf-4be8-b647-3627e8613693" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.484Z", + "time": 794, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 794 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dccf4404-f71b-4a22-b592-7e31b1e9cb81" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.488Z", + "time": 1186, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1186 + } + }, + { + "_id": "ab2ae2bd635ea6507f20573336dc967e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "(objectId sw \"workflow/pghGenerateRap\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=%28objectId%20sw%20%22workflow%2FpghGenerateRap%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 271, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 271, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"69c4d900-ff3c-400f-8d18-037693ade1fc\",\"objectId\":\"workflow/pghGenerateRap/node/fulfillmentTask-f49f20d19149\",\"metadata\":{\"modifiedDate\":\"2026-04-03T14:54:59.543283524Z\",\"createdDate\":\"2026-04-03T14:54:59.54328226Z\"}}]}" + }, + "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": "271" + }, + { + "name": "etag", + "value": "W/\"10f-cHQJM3s29WDDOr+K35yq9fC8Kto\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e39b5e06-eeb8-4084-a156-1c31fa5226d2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.494Z", + "time": 395, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 395 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a4282b5f-3aa3-4262-8bd5-25f5154c9ce7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.503Z", + "time": 898, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 898 + } + }, + { + "_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-39" + }, + { + "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": 719, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 719, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.060158915Z\",\"createdDate\":\"2026-05-04T21:59:01.060154113Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:01.978420392Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:59:02.997659345Z\",\"createdDate\":\"2026-05-04T21:59:02.997658111Z\"}}]}" + }, + "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": "719" + }, + { + "name": "etag", + "value": "W/\"2cf-HT2DSmeNqE8wzGyy+wWWMQtWTJU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "08d41ca0-0c6b-42da-9d97-f9fbbc13c2df" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.556Z", + "time": 819, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 819 + } + }, + { + "_id": "ee8f37cc5b58ee712b10db3bc39b4114", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "workflow/id eq \"phhbirthrightrolesrequiringapproval\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ce03fecc-29a9-4787-99f4-a7301fc09cab" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.589Z", + "time": 474, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 474 + } + }, + { + "_id": "76e3900251e28e4e3cb708f5ca8611e6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/2108a1e1-6be6-41e2-b356-b929114d98f5" + }, + "response": { + "bodySize": 716, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 716, + "text": "{\"name\":\"phhCustomRequestForm\",\"type\":\"request\",\"description\":\"\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\",\"requestType\":\"822e832b-865a-4b9a-9b35-8c9765c6a515\"},\"form\":{\"fields\":[{\"id\":\"d99789d4-49d6-418b-b2f3-ad3e6ea0efd2\",\"fields\":[{\"id\":\"ed67d5a7-0d13-4bd6-82ec-a44929009d7b\",\"model\":\"custom.teamNumber\",\"type\":\"string\",\"label\":\"Team Number\",\"description\":\"mlb stats number\",\"validation\":{\"required\":true},\"layout\":{\"columns\":12,\"offset\":0},\"readOnly\":false,\"customSlot\":false,\"onChangeEvent\":{}}]}],\"events\":{\"onLoad\":{}}},\"id\":\"2108a1e1-6be6-41e2-b356-b929114d98f5\",\"_rev\":5,\"metadata\":{\"modifiedDate\":\"2026-03-30T18:03:35.309Z\",\"createdDate\":\"2026-03-26T22:53:38.532641208Z\"}}" + }, + "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": "716" + }, + { + "name": "etag", + "value": "W/\"2cc-y4gkOC5wUjgT8AvFdcMDN1liVzs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0e4a81a4-2fad-47b7-94b1-912107f8d0ec" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.670Z", + "time": 1099, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1099 + } + }, + { + "_id": "8bda7aef98a5139609d8b2718cd91b5a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"test1\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22test1%22&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b0896920-7c9a-4f1f-a5e5-aea550808ee7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.685Z", + "time": 1105, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1105 + } + }, + { + "_id": "0680509ec11f2dbc40f56bbd0442f29e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1958, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"basicapplicationgrantcopy\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22basicapplicationgrantcopy%22&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "263f517f-e3c5-4811-af18-8751deb33e94" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.694Z", + "time": 681, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 681 + } + }, + { + "_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-39" + }, + { + "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": 494, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 494, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:16:55.471Z\",\"createdDate\":\"2026-02-24T00:52:45.670896494Z\"}},{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:16:56.423Z\",\"createdDate\":\"2026-03-05T19:05:22.729337346Z\"}}]}" + }, + "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": "494" + }, + { + "name": "etag", + "value": "W/\"1ee-9085tN4Yt4AAHNIjvswdDUciXFQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a48a9744-225a-4b9a-bf5d-96545a346a66" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.863Z", + "time": 612, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 612 + } + }, + { + "_id": "9590a8ce644799fea11405d97d7a4730", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1964, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhinternalroleentitlementgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "607d2266-d575-4877-9574-87e40a3950fe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.867Z", + "time": 493, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 493 + } + }, + { + "_id": "7e2f4b87c7b07dcb48c55f74ce284bec", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow5\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6daeac35-68a7-4d85-bfc3-71fb5489e7f2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.877Z", + "time": 604, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 604 + } + }, + { + "_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-39" + }, + { + "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": 1915, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1915, + "text": "[\"G7UPAOTyl75fv5rtkWTK2ui0xDvOi/faRVpiWiwygO1mPFzNpVHvxWtSJnt7TyXkzRUYZfsqU18ej6BI6EbICr2vRONcVQdq/96DnwYHJIHLHn6CTDuGCq62W8x8xP3EIxQwX18xVDDyGuL5UEBaRL/11dwNGSp471cmMh9FLJxWcFDHE1QnmG/g/5ic6bzv+wKG5l+Os2veFY+UMi54/ssMSwHtMO6gOkHbcZ8mqH78+S1dggpIKRlTw6hZeTQpeAyysWjaEJpIPsbWQQG7IXEPFbCx/WB12R04v6Yd19N4mscuX0IBmyhsCxU86Q6cRUBF3csfd+M0e+OUEa388ScQdXuo5nHPSwF8dvlQnWC9/HfJE1RSFTC07cQzVOVSwMiU3uT+GqqW+omLkhZ86IfZ2XDID7aUL3kzjbWhOi3Lz0IKXCRtvGcVMCW2aEzp0G90i5pDYPbS29LDUoiPBc86+EYFNEoFNC1HJL2JmIKlIIPy3pnDVKcst00/7Mf8PAMv6VKzgJEv+f86/nXxsaylitQGjZIooHE2YFNuHEZuN+TaGFodDiyUKrbWs8RU2gZNowx6wwrLjW6sa7nUuj1sdUdd/4TIkyr4VWCF4jV4tKOuF2SOPf8y6k5+tuIUijaNs63y6Fpn0VgibFR0aMglmUIZeaMrnP+A+36CmxpaTD7LqTt0aU89LXYdcbUdMke4/Eqcv2ZOnEQ7jOLhfhATjwceBcfGyFwoWThM4zIJFbztmSYWjNvBxFlcD/sx33QoYPbY+0AFv87r+q/yjqzr6eJOXZ/fqet00ktdX9z5UdfTCn+66lz+q1l+h+WeQa1m2bVJuoYYmaRBo1ODFNUGmzK1lEpXNsYdOEotNxQko5VGoknkMGxajYaSVSU7ozUgtL8apm7uhvyB04LqN7rJowisNiPUs3eVWsGfDk0VUansTWYoynQcp/vXD7mlfT9rhHw4x+lQQWVS3mTGSwS1TT4eBwhp//E4pLyZtwZQ+QF+s7D8vGcJ66lhBeu1eMLzVlT3Zj7215ylfpFrRZ0PNLqjuDuIWw==\",\"oh3G3YoR9pGPO+7TZ+r3fKPOdV6v45CnoedVP1yen0X0R7gMPol5qM6KdP0X8TfpWnGe4/pbt8RZ5S8+uxCnOgshxHotPmyHYyVKZv5/FphKt2OqWgwpVXRzaK3UOdN2OD7Hnp/B0kCrtPveiACJdOtDzomUZXL4tEusJ8jPF5SvxStL5p5tlzhl4lneXfnMKMRZHHlEnt5y6vtrMXdzjehmwd96iPN5O+wvt4LbH6RoMAkaWVD/j4QoF3nISA6zP8W5O/BFkUSa3ZMUbcWgfwTzQ0JbehltICyli2goaiQrPRorlSZtYlIKJMLetJIudR46wQbAZZwEnC5ICNGi1g9xlmWTbNNwCGii8Wh8qzDEUqF0UQYTgyXPBxa8tSFIsugoejRNLDFIchhlI63j4LWKB2QOmvuQ5v5qILnInlfZTOMsgilEqfe2cq+BBZbOb1KpMaRGo2l1gz7ogLZpjPJBk3RWi9I4p9p1QQBLeJTTjXpaWWleJWkXWQaDtnEGjVWETSNLbEIgXUb2pfaWooQPnOfBU8chvxwoQXVqNdAmw4s//NUAqfvA1GOgBOahQrwdGZnGTphZkBiZEj48bwDLE47dvBWJZhJDYTFMBHMkHOpxekVd/3nMfuzf0ki76Udxa++o689+3jAq+njCenQBTrWoAxQZIQB3GfO0uC0vboj1Wryi/wCWVi5mGE0U3RvvEQce67zAsizN/uOi9raxusQmSIUmxYTBR49BS7fRlFJoNlDA3yMfoNKugB3PlGimzmatIXVtx6p8rwpUqRyWGpX9qFRlbGX0SurwHYrRLw18Q4tSobQfpauMq1RYWS9taaWU32FZAA==\"]" + }, + "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/\"fb6-4zK5lXuixtCsZHh7Z3OTU6xteKY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0d82eebd-af56-47ea-bd64-62e80d1077ea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.883Z", + "time": 695, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 695 + } + }, + { + "_id": "833cfd6a37903677eec774dcec314c72", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/ddd56024-02ef-4c14-8bce-7b8bf4649b99" + }, + "response": { + "bodySize": 625, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 625, + "text": "{\"name\":\"phhForm\",\"type\":\"request\",\"description\":\"\",\"categories\":{\"applicationType\":null,\"objectType\":null,\"operation\":\"create\"},\"form\":{\"fields\":[{\"id\":\"7efdd73f-2a18-4861-ac45-e9c1f26f1d91\",\"fields\":[{\"id\":\"998bfc8d-6fbc-487d-8c77-bb5fe5603d96\",\"model\":\"custom.phhText\",\"type\":\"string\",\"label\":\"phhText\",\"description\":\"Type here\",\"validation\":{\"required\":true},\"layout\":{\"columns\":12,\"offset\":0},\"readOnly\":false,\"customSlot\":false,\"onChangeEvent\":{}}]}],\"events\":{}},\"id\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"_rev\":3,\"metadata\":{\"modifiedDate\":\"2026-03-28T00:24:43.459Z\",\"createdDate\":\"2026-03-28T00:23:50.138413755Z\"}}" + }, + "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": "625" + }, + { + "name": "etag", + "value": "W/\"271-9tKtk9q7xsQKCxBYIaSVr0U1zLk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4f95380a-3e0d-4593-a195-efb2e2c5a96f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.887Z", + "time": 592, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 592 + } + }, + { + "_id": "fe5302a28669795d0ce57525a5afe38e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/69c4d900-ff3c-400f-8d18-037693ade1fc" + }, + "response": { + "bodySize": 908, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 908, + "text": "[\"Gx8FAMTKn75fv5p9SZdMUQGUUttrAp1sMlg4Mk5jGDidwAAHhP/Rvbbh7XrWB14W+HmehgEv0EAHls01N3u51icSlFP9AdlvRnRbgsVuvRGuxa+TSG4HjunfjmCRyI94AA7vSP/yburHCIvHY9qyMCbGeqqPa+Yie3/vLetGT5/rjh32lMBhdHCopz3sDGsE6mNDX8fDMHCM7U/qJiq1kw61ibpD/4cJC0cY0xZ2Ruhp8HvYHzN6DwvSMnehk8K3uhbK5F602jfC1FWrlcs7WRfgrO9uSevGeCeKzjuhdGVEW5RGdE5RpYjajhQ4tqOnARZx3bpWvX/rpg1UaDi2ZXCcxdCFxQeixxz7BMMYBA1wmJxAGqozhqoOO6UDLRzx8ALYGf72fyHuYRXHGMKeJli1cIQNhlCF4dNhgfnpXwdK/x73w0QJFlM63BcTOf8mDv9ggxv2xPUJPwzjRD46xgcbF9d0eMcK7LwsJwsHeZCCLDyFohCmanOhQpmLWutO+LyUeZMXVS4pDYJXJidlKtFIGYQqyYhGUhDeFKSkb1sTijQ6ETv3U+rj+tnr+3tvcc1zJFrTX71mhhi1Mco+u+FALbQwhGXOo5ROOOg3xWm0GvHl6DzsrB6khQr+smBxzIdL7NOHR+/PHj979PIhu8UuAwPPPO/yjeNYcf37e2+vZnK7yzeO43Fc/be3ro9XrrL5ODLGWB/Yj91qqzUpyF2RxF3NIGOM9dj0nh73NPgrnZKv3pCGGRxNx9YSjpbicVyO43HsVeEGlmXhC/izpumUb/JchCA7ofI8iNoXtchlZRrpPBWhA8dZot+wsuLY0uS8mxzsjB3x9YduIliUeWlELoUsPhbaKmN1tdJ1+R18JxlbGSjlE40tmlVRlkaXjSq+Y1kA\"]" + }, + "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/\"520-IpEDFT9itQRb3CyINqI6lqkp49c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "745b994b-1530-4c28-b761-8f0abd1030b2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:22.894Z", + "time": 967, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 967 + } + }, + { + "_id": "dce127f2932798737c2e5ec3afea9f9f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"phhbasicapplicationgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ba257715-7696-42a1-a913-079f19fda9ce" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.963Z", + "time": 606, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 606 + } + }, + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fb468d22-3a44-4e86-84bc-4e188da34cd1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:22.988Z", + "time": 582, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 582 + } + }, + { + "_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-39" + }, + { + "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": 942, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 942, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.030898146Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:56.942847422Z\",\"createdDate\":\"2026-05-04T21:58:56.942846391Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:57.945624619Z\",\"createdDate\":\"2026-05-04T21:58:57.945623532Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T21:58:58.955545728Z\",\"createdDate\":\"2026-05-04T21:58:58.95554458Z\"}}]}" + }, + "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": "942" + }, + { + "name": "etag", + "value": "W/\"3ae-UBpV0bQK3+wSCSrCRMJlJHeRQFc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dbaeb1f5-5e63-4197-b2c2-fea96690a0aa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.254Z", + "time": 330, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 330 + } + }, + { + "_id": "eabd812ca800718847a571cb46acc41f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "workflow/id eq \"custom1basicentitlementgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22custom1basicentitlementgrant%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 69, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 69, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"entitlementGrant\"}]}" + }, + "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": "69" + }, + { + "name": "etag", + "value": "W/\"45-pZuWgrWap6nr+DW5KtZxdjRI+KE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "465a2732-94d2-4dff-8fab-330dee6e1d01" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.256Z", + "time": 298, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 298 + } + }, + { + "_id": "eb2d851e7637fbbd7573483cfbd56efe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "workflow/id eq \"custombasicentitlementgrant\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22custombasicentitlementgrant%22&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cd5bd20e-cb3d-4b92-800d-d7ddf121f0a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.281Z", + "time": 395, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 395 + } + }, + { + "_id": "a4ddf351712dc385b5569cbedcd3af48", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1948, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"jhnecreatetest2\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22jhnecreatetest2%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"e58d2089-3e92-4a0b-b0fa-3ac6d4251877\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-AP2y2YOs8PpbyZ4IXnpeqWexUnE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a71432cb-a891-42f0-aa59-842e68642392" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.358Z", + "time": 323, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 323 + } + }, + { + "_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-39" + }, + { + "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": 924, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 924, + "text": "[\"GwAJAMT/X0t/teXcNWZUoyzb+c/zMzxbfhFSwMz8/LVyn1H8895WWtlSWvSvraAKWtrVqKv0SD08wRM+stMhzrsCDdKZ/fETjIYC9SXVfVMWfUttUfaNLpoFcVGXbb1sNXfUrSExnsKnvqGBoZA4pr87H55663d/Aw9u/Ia/6bDhvxUk/v0ZqFOW+Bt4CzWXiOtHHihCnbD2w+Ad1M8T/g6cCOqEdNgwFIYYz09W4zJ/SK4fEmNQdBmWiYP7/+7erCkZ76BOMPEDP48msIbqyUaWMPHeJQ6OLFQKIysWgjrBpVT5QtZNEiZ+MdF0ltlwmPoxUEsJPW4B8ybRdnyaScWNFL0TvQ9zEAmmiSBnCdODDp251zjTTLx8JPdAOIBSgN1ynYZF7EcV91caqJYIc7i4v1IDvp+Ye/0ucG/2N4GhKZxusZEnCVex0hBwUXrE/dV5NUy8CtQngP4sUUST4RJEifXdRdLEqjUmVi4mkfeRwM88xoQskXiPGvtsuuwL2ZGhYP3O+L8x7zcmHK4oMexOBJKcsqjQlDhQFFeRz5GD6EPLpCXMCu/Ewjxg3IFjlWBmv5LoQC06gqbs/ZItYeLr0SZjCrmwt1yKltSi5twXgIi+6KIcC2r/K4dGLt69fiMKmQU8VFfR+yvxxNHDSiRWxhFNlDJIlvqYKKS4UGwoTkQYeAjkinvddDpwJ3vtNCrkE9zm0VnfncbLOZdloJRF4lCqKM+js4b/qcIoj4ouhsG/O3XeWyaH4hVQUAiY4gSPgM6EIDjou/+8/h9L5GLMbGzxtrSHeTe0NSiB6cXk/DtLjBoVQ0v7JfyFrNG2vdKN1koMnEhTpQFW8mgpfgmL2aIuZlUxKz8t5qpqVFVOqnL+AxJjTeERv6UslrNPi4WaL9S8nlRNs1rO2rL5gZwB\"]" + }, + "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/\"901-CyaqKOxKxOpSeSCqa+VTipfIVoA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "96f58f0c-ef81-44f2-9f86-d3fbd6ae1062" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.380Z", + "time": 481, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 481 + } + }, + { + "_id": "9c5003104796a15fe33199c0006bd65b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow7\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e4dfbbe5-ab8d-4dfb-92f9-4f386b8fc1b7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.406Z", + "time": 364, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 364 + } + }, + { + "_id": "86f530aad6790f246058a707dd7c654f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1853, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleGrant" + }, + "response": { + "bodySize": 1406, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1406, + "text": "[\"Gy4NAMSvfbO+frveiREzVuxEZLauSOgk3DIwQdbmWFxL7++tbJMfswOCNL0bIClAVkT2lRywEG5GTmW5XmpYWj8F9pstjIZE8JZfBOUSBCYjTP9e1QyJEgfTZ28ZAnG15VpFyBYrX9feQf5p8bfmpCBbpJuGIXFv73xvslXAZ75X8vYQmP3Q13CfeFf9jl6blUrGO8gWJn7mXTaBNeRa2cgCJr5yiYNTFjKFzHgTIFu4kcq/7ms/ARO/m2iWlpvh/eFngRwJ6HkB3JpB6+LrBhMXVdE7Wvuw+0f3gDeqFAG2AQ0t80rjzGfi2Va5jcIB1Giwuz8bw50eukqvnlJgc4wwO6dXT8mAvzfUK/0x8NpcM5rg9KOmP5NwDScSAYsylF49fZkfJj4Nap20IKIIeCMzeqMhwONjI5O4K52yGAcrS8vbPSHwjnNMKAKJr1HjrZJ2+q5sZkhYf8X8Z4qvGxNunqrEyo18Fx0KSxktaZWY+4azpG+RA926ylX30Je8owNxoIgDZ4RQtk4paCCHfaBGruVSWMDEd9kmwwpzau9+1rVJKiodyAIQ0Ve7lv9bVz5crK2/stCk04/v3tMIFj5tzpJfPaUL1h61R8FlnCSiNJVkTr4kFRLpheGctESErptYIHS3NZ3G1bPPnH7Edpr3kVhav3zuXiklykDIEgZcleLluXoeoVw6Ml0t6sOgdDlL7y0rh+KvuLaMn+A6pkYIQ8b75T9elaNm6jGrusWOSiTM0YG8hiIcr6uliIDPMHyQHDlYIroI607jB6z3F7mBbNGotIVE7zA8tNF1bxHDK9S9HDmgBKnx/BY5wLecJ0cOdLX1ZCJtOCXjNjaBM/DspGI0G8eakjfavxW8ZRrbmY3apOmZvZVKyvoNBHaZw02WdpGe0b0LvrnyQRPvqMLdFkvbUmGLq8sxieteumm46ocI3vI7rpcc4tY0FfgGeV7J+WPBH3V5BZ6Ji32MtXR0IJBvjaFYJFESTgEJd9XCtqWcO3nhllx1hfCYflhBxAKiw9BlUxvd3tmZXeY3fBMh/2Sh7t3hPcT/YNSIc4EbAQu9eEmL6HNYMSQuVaDiq9IBtRU4BB9iBZL051xQhSQb/p2h7JFZP7QQty8aFRG78Q+8XS7EdTVvPYMODg4ohcx0/z49jHDuXfgV/avdnrJbGMIss6b//+nlJ7spmPrhIzo4oAoVHj1qiS63Lg==\",\"SdPpNjluH1aJdCSZSJgn1RUe7RV+/OQe\",\"ioDz6Z3XZm3U0vJHSVviOvkf51r3Pxf4G/gScjARmEfZHsblvzy/i+QUSJetFag5Ka1OjOAJJOn9noRhfzjt9Ced/vjrYC77UzmZdaej0W8IzLHEVb7LuDOcfR3M5GQqJ/NufzQYDsaz0eA3SgE=\"]" + }, + "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/\"d2f-hvKYzkZiu8xEZ/yS1Bax5CKMrEM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bfb6c54f-999b-414b-aa6e-784599e03afb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.479Z", + "time": 519, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 519 + } + }, + { + "_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-39" + }, + { + "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": 984, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 984, + "text": "[\"G00JAMT/puq0cm9GcumMKa0j82WRIFAAVx0/7a96/7/GmXm7TkKSGjwLIm06EJ0u4Xo5E+t6HfiqMkG9rm6x78GbX8maINBUVabI0EJGypaBfLY2wZ/M4rYhcGgFgVKVM5rJXlaM5mU2nI1lNu33iowmxUCNpsNef9QHh3Xx0ildalkYuvGuIR81BYj3T46183+lcWuIFlpBoKmqAzK0kJHUYyB/oIlLn13Yz0wc355WED2OMK+olgGixdzVtbMQ7y2+a4oSogVeucBm52uB84ljye5o8+iT4GjQyVrsMyCg1HMZtbOvXwh39L/UnhREKU0gDh1ObSRvpYGIfklU7BAtLKXss7TO4tDhSQddGIoGG+Z3gxhwqB0UCBuilXg408UNZXCWlc6fhqTI4zWmxKE/wkNrThXOAB32K2kXEgfhJg520SENEbsNyk4POGAdAsz+7PSADcLSvjpVN55KvRE0hVPCmvQShMs4wghiolSz0wNZrw0dDrwsI0Bd4igWE4kVR9rim3eCImYdA7FMdpy913j6p2WISByRNqhh9aiAJ2mWBIEshOxnXzXabw9kJOMGuaMEkYXPlCkZiRPGifMxkGereQlUCpPMWXZFEDKjOmDXFFHncIl4oK4/QUk2egnl0OFyaaIWRWJmL9pPOkFdsPYIIvrNsXIo4P5XDnXu3VxeMQpJ/FknrtMD9kfWE50ikjLsrSKdRrIq91H6yOyCcUrFBKHqF17aQmOcZBWu0R5adYd4cb7TKIwrlDtcSqmWIVUWssNCUikfK5zY++OCLF4ougwjNLZUOGdIWpRXseLGKCdiBaAzIfnbXPFL80f22u5jRY62rVgJ0xqORRJkTZAAPWdKnxy7V10I4r1Nn8kJZyhYmxNZ14l2aQxHTVEq2USA9hOm/CL0u/1x1h1k3dFDvyt6YzEc5YPR+A0cu2CJFfgh/aw/eOgPxLArepO8NxnMJoPJbPyGlAA=\"]" + }, + "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/\"94e-svx3ULK11EYO4PEB5FlGcWSDEks\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9a48837f-4639-4f2f-b02a-599a722d1299" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.482Z", + "time": 516, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 516 + } + }, + { + "_id": "125e659d29b2db9470f4c57da4fc5809", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"ddd56024-02ef-4c14-8bce-7b8bf4649b99\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%22ddd56024-02ef-4c14-8bce-7b8bf4649b99%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 482, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 482, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"objectId\":\"requestType/0ece99b4-5039-4bd6-b31c-de14bcf45f11\",\"metadata\":{\"modifiedDate\":\"2026-03-28T00:23:50.832333048Z\",\"createdDate\":\"2026-03-28T00:23:50.832259126Z\"}},{\"formId\":\"ddd56024-02ef-4c14-8bce-7b8bf4649b99\",\"objectId\":\"workflow/phhFlow/node/approvalTask-bf52ce203a81\",\"metadata\":{\"modifiedDate\":\"2026-03-28T00:26:51.612871456Z\",\"createdDate\":\"2026-03-28T00:26:51.612870099Z\"}}]}" + }, + "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": "482" + }, + { + "name": "etag", + "value": "W/\"1e2-Nrjj+1HM5qvzwscboFRvn9KRivk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "82a8e6d5-7608-4a75-910a-2507e76f04bd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.483Z", + "time": 294, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 294 + } + }, + { + "_id": "d069b3cda2ae43b8a62b77ae54f31bba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/entitlementGrant" + }, + "response": { + "bodySize": 1423, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1423, + "text": "[\"G8UNAMQv35lfvzuvQAqRjjBF9E1HiTaJerbkCI5cLa6l93dWpskAwAFBmg6QFSBLYPvGj+ULO+Vm5RbrfI0q4ua04m0aGA0JttHEsgkC6154ZSME6iTM+l5VDIlfmtFZUMdBICw3XKkA2WDpqspZyD8N/lYcFWSDeF8zJP77XU5UxQr+zP9R3hMCdSEGGD7TH/c7emWWKhpnIRuY8Jm3yXjWkCtVBhYwYW4je6tKyOgT55IM2cCCXvN1WicJmPDdBLMoORr9O34uyIGAriXAs860Ob52N3FNFZyllfN9gfTy8MbmLEBExKFz5hrOIiacbJRdKzgQGwPsXmd5eNGuvzQ/xcB2SGD2TfNTNPDzrprrj55X5o7QDM5AqtMrJ7iWIwWBCGUEzU9PK8OEU69WUQqis4BtKk8sA7W9P57LSWLbMWVWnRq7e4nnLacQkQUi30FN2ygd9l2ViSFRulvif9N8Vxt/f6oi0x0SBAmfKmkVGRPLSeq3wJ62tfLQKQwnZ2lYDjR2UP0QWkcqAQc2CASNcseXkgImvEtlNKTAoAasvE6SLicvbHsIET+7KOq/dev89ap0txqaevzx3XvKoQJ320na/JSuWXr0FIHKVGVEVQrJsnyJykeSC8spi0my7bEuEkB2u9JquAb3zOo9xTNcJ2NRugVzB5ZzLmWwyAI5rE+28lI4b/+7MmSmlLgNw/gbWThXsrLI9kqKK9gJKQBXQrwnucU/Xh5Ilsww67Il5so4LN2J1rXE++DkLAp8k4shcGSMFNirKullg+dWxQmlc9ephmxQq7iBRGfUHrrpqtPm4U3qTgrskRVmvN8Ce1UxG5+1UmBPtxtH7jXoSwDrMoGjjRrkQoa/hWwPs1adO/31naWKqnRrCGwT+3tIqBDM2lZsY8fozjXf3zqvibdU4HEDWPdcoJ+sGzGRq068rzmGyMd2FKCn4CdWHlm5qNSkNhuYyOvhSlxgQLXn+C2KjH6BrOpMuGSZ5+jLYbrnfKVQUITEakhU6buY3rEKZnkm16irEYu60nHapBhw/EmD4JJfMiRulA==\",\"p59vS3vUFGDvnQ8FSNKfK0EFXHb8OlveIbN67k6f8IVjNHYd2uEDbeWL5kr3e6+hvb09ij4xPX1Kz31Az7bL3lr7X+ielGwzE5aYNf3/TyentKM31fMXtLdHBQq8eNEQ4eXZRmkh7TqFzfPCEY8hEwjmOXWBFzs57g12kAWSNdvEb/g+QP6ZuPBqs9JbfCdw8OdXAtbFd06blVGLkj9a+8pIxiV1JJOLXT/2SuCv5xvIflfIgIvZUV/5fMchB6RNZTlxBMateBaoOCqtLCVNuClr+xr0u/1xqztqdYdfe0PZH8nBoD0Z/4ZA1U9a2EeOWr1uqz/52pvK3kD2eu3eaDYejnqj8W/kDA==\"]" + }, + "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/\"dc6-TUwYHT4FaJb6kFIA2GYhK6/QJjM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "df2ff025-9ff3-4212-9464-efe630638dfd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.558Z", + "time": 448, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 448 + } + }, + { + "_id": "f34f88a7ca52808d5513f81c5e9c2b96", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1965, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"wfentitlementexampleisprivileged\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3d02ae2b-2b81-4e6e-8bd2-2dd326871ecf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.575Z", + "time": 284, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 284 + } + }, + { + "_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-39" + }, + { + "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": 478, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 478, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:17:02.496Z\",\"createdDate\":\"2026-03-05T19:05:28.771987512Z\"}},{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\",\"metadata\":{\"modifiedDate\":\"2026-03-05T20:17:03.495Z\",\"createdDate\":\"2026-01-30T18:27:54.68190238Z\"}}]}" + }, + "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": "478" + }, + { + "name": "etag", + "value": "W/\"1de-mAnXbYOMySaa8rJ66jPiHxYXhBU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "217741e5-7cc5-480a-9604-37c44510b54d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.583Z", + "time": 297, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 297 + } + }, + { + "_id": "ba268bc5ba314a270416e936592cc480", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow8\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0a2d2257-345d-4434-823a-7cfac34afce4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.588Z", + "time": 283, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 283 + } + }, + { + "_id": "d083e1930213df31ca9a1d1c784d466f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow6\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_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": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "aca94c78-2a75-439a-8e32-34e00d6abb82" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.676Z", + "time": 207, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 207 + } + }, + { + "_id": "f01bb711f81e79c60c4e419689c59bc5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"2108a1e1-6be6-41e2-b356-b929114d98f5\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%222108a1e1-6be6-41e2-b356-b929114d98f5%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 272, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 272, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"formId\":\"2108a1e1-6be6-41e2-b356-b929114d98f5\",\"objectId\":\"workflow/phhCustomWorkflow/node/approvalTask-74cf85c35437\",\"metadata\":{\"modifiedDate\":\"2026-03-26T23:11:22.098315616Z\",\"createdDate\":\"2026-03-26T23:11:22.098312097Z\"}}]}" + }, + "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": "272" + }, + { + "name": "etag", + "value": "W/\"110-KUMUIj0tz9RR2qA2deJyWzMMIGY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b370c8e6-55ac-4188-8ee1-13437172646b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.773Z", + "time": 208, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 208 + } + }, + { + "_id": "28fc5d07a0576317ceb2d52e715136fa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/0ece99b4-5039-4bd6-b31c-de14bcf45f11" + }, + "response": { + "bodySize": 992, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 992, + "text": "[\"G9sJAMRqqb6+zL5xk1x5prSOxCkiQYVid47WWu9vteztvIg0MZmVF0M9kajiDQ+dSCiZ3rBpw5dLtjT9WeCgV/SjTDdvUXvwP76SFUGgLcuHdUvg0AoCfcppNsuGnVE/nXWGmRp3snSQdxQNhlleDEfFYACOugmXjdKFlpmhG9e05IImD/H+ybFs3H9hmiXEFlpBoC3LI9MsETm+HS0gEg6fl1RJD7FF3lRVU0O8b/FdUZAQW4R1SxDwax+oAofSvjXAzbmU747ud34YHHUVCQrfFkUAugqdy6Cb+vsb/o7sXDtSEIU0nji0P60DuVoaiODmxEOTg9iiDs/sma63OLR/0l5nhsTgTvsNECmHqjhgaY1uxMOjK94pfVOzonHPFWl1eBMxckwI9WFvThXOLu33S1n/Shx0pAC79dCGlW0nZacHHqgdAszj2emBG9SlF3OqbhwVetUEgBFOD2v1ScJVOVIQcAMdZqcHQG+G9gdOFgFgLHLkORkpQbRtNz9J3AvHIQZj0+yP837jyNLcB0SOQCvUcL3Ta0/SzAkCplny50W02q0PZCDXhCQBbhCFZKVclSkZKPoqJ4VHT45dt2VWGi6ypmav+ICZDqg1wTyUJZkX9EIJdLLq59D+cm6CDoUc7a37qiX5o3IQfyiJIcJToWc5JLK/tUILezeXVyxNjtDVToqnB+yf2MNqJOCh/MQkSXIt90G6wHihcookAWH818k67+1nrXCd7WGtPiAnaJeRmSYj4ulijEcZSzhkEXpLZXneOJvbb79JozxNOIdRGw/KmsaQrJGveLKcPMEbgBch7dkm+6PcKIf3PGGWW7z9eIZ5DWJNO9grxPjJUS91hGM/J/bxtiwfHBCQBAbI5gESWMRAWLpozvXrm595REwAo9yYFGP8jNxDhdM1FQWp5PkNnM0pC/VHSPrJuNNPO8n0od8XSSqSpDseTd7AURBGcvCX/bSbDMZJks7GyRtiBA==\"]" + }, + "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/\"9dc-ftoi0jjK7bfaeZS+hsM1x30mOH4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cfb12567-0351-461c-a1df-51d4d8dc7cbf" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.787Z", + "time": 282, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 282 + } + }, + { + "_id": "140675828bee07087fb099da36e15c9f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"69c4d900-ff3c-400f-8d18-037693ade1fc\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=formId%20eq%20%2269c4d900-ff3c-400f-8d18-037693ade1fc%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 491, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 491, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"69c4d900-ff3c-400f-8d18-037693ade1fc\",\"objectId\":\"requestType/35daadd6-bc63-47b5-a0e5-7756dfbdf229\",\"metadata\":{\"modifiedDate\":\"2026-03-31T15:46:55.833704448Z\",\"createdDate\":\"2026-03-31T15:46:55.833703422Z\"}},{\"formId\":\"69c4d900-ff3c-400f-8d18-037693ade1fc\",\"objectId\":\"workflow/pghGenerateRap/node/fulfillmentTask-f49f20d19149\",\"metadata\":{\"modifiedDate\":\"2026-04-03T14:54:59.543283524Z\",\"createdDate\":\"2026-04-03T14:54:59.54328226Z\"}}]}" + }, + "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": "491" + }, + { + "name": "etag", + "value": "W/\"1eb-nsdQkdylVJz91w6JWqGqVON6ZC0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b6131e84-6c08-4355-9c86-c56cf6dba52a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.874Z", + "time": 195, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 195 + } + }, + { + "_id": "5191df4e92cb2ffde8b3ed9d6c1b9c01", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow1\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"e9dcd66e-1388-4872-9790-66df2f44deef\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-vHI8zD9xXTlbXAhbTpad9L3LBSU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4ea5bf08-0a76-4062-b006-dce223cf1609" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.875Z", + "time": 193, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 193 + } + }, + { + "_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-39" + }, + { + "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": 1211, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1211, + "text": "[\"G0EOAOSaqtPK/YxyFqphTGkdmZdNgkAUtyT4fWMtlMvJa1g7ZEkmTUxm/w4m1kwaHhqPTvQQAiridNuRDYqjKuupMP4Plj340IUYEDiM83n2f8f/PGaLgB4oKAkcWjmZVFVXZHlV9VnZtlUmyrzKyj6fVkU92W6xBQrGxnMrVa9Ep/HK2xF9VBiAv75TWFn/02u7Av4HSuZrc4Gr+4B+N+tnQKLw6XEJvKQQpnMcRAD+B1M7DNYAf/2DzwGjAP4HcTMicPjH8hMBbYn0Sr/Bf4C+FiiMcNL/YKkAbXo1FVFZc/cB4QbdQnmUwHuhA1JQ4dhE9EZo4NEvMEs58D8w9ep/EushCio8qKA6jW76X+83Al5QkIsgSB6TjoW7bVm8UARrSG/9hkZaj7cwJQo9pNowM8cSZxsVdufCzAQOZenBbvdzWHK1VHK814KQpYa5ODnea4b6+M4cyyuPvVo/egATnKlkjMeEG7SSCCDKHHK8V+uzocKeF30EmJ8oCB/Hy1PtlKt7ZolD1jpZX7Imva94dLgIERKFiGvU+g+g7nsQeoHAQdsVf+7EqPxmT0Rsmpckuu4ioGD4UYkUEVsStKm8D+jJH3IlyQhriTVknx843aEXPuFspaVoA9nDBCOy7peOFFQ4X+ioSsGjvd0NzeyLkLlCRO8Ny+1K0f7XFFq5c3V+QTJ04zlkU3W8R36QPW5EUWW9PIreJMmp3EbhI+FF0JZ46qIWzLwwujebRuJa2X0jr7Wf53EnOm27zl1eSmmUUUOW4CFL5ZGdT0ZRJKphKseVOms1CgN6hXyBTiADOhGq5zLbfeP0BvAeObvcQoFpD6OUutYKic5XmdI7hQWogrEfjOY0NiUqJiVlSWBPkWKCKvHLSI1PWDAb2iUKM7VEc76j+yjqHKolGuJkiDkaOQ41Lu3EIJRGsAfPhdIFGMUi+UwEc73+duFNq2PIXLJ1G4OQHtD5sSw7jzaoqKy5XaQP6gN9BkDZWXLFVMtl1YkqHxMkRXScyzhHfyntmMo9mg2eExhspzRWpXAXtf7bdvbY0XsVSU8=\",\"VE/U/AEWaKYguZM00kY9rSHJnDSYLwwxyqGHPRwj06EQjCmy+8WqlN4TlU1Z1HoDRiHFTJOeZ5Sa+S5gE1ZnkyJj9V1e84pxxraabfYCFGYBqfEbqyxnWV7dMcYZ41W7VbEyr5q8qF8gJQ==\"]" + }, + "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/\"e42-ZijG2C8+yDCiyurcs5te6930o6c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e77c34c2-1aac-4310-a75d-5d1c39bb9ad4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:23.887Z", + "time": 245, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 245 + } + }, + { + "_id": "9d189733ae377b9e88782a9116cabf74", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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 \"testworkflow4\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"3eb082e7-68f2-409f-9423-26e771259dc8\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-l+ootFO0p3A3tb/9VU+ejicl6mQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "27ff9e22-dc52-48a5-b2ff-c7531bd45fb1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.921Z", + "time": 185, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 185 + } + }, + { + "_id": "a923aa9a6aef4b35c962c3fb503b689e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1950, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhcustomworkflow\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhcustomworkflow%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"822e832b-865a-4b9a-9b35-8c9765c6a515\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-YqeuY9fBCNIQ7VxFehy2Z9cfvoM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "71ad00e5-2f62-406f-8ca7-f17efda710b6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:23.986Z", + "time": 159, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 159 + } + }, + { + "_id": "7bc7d2595b09de1740298fb6be6c2b18", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1964, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhdelegateduserdisableworkflow\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"fdf9e9a1-b5cf-496a-821b-e7b3d5841252\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-Yy8CBTGS7RdfjkCzspEReWKWcRM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "852c160a-e112-4059-a3b4-289183353f49" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:24.004Z", + "time": 154, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 154 + } + }, + { + "_id": "ec59c6b27014cab69d297b222e19c551", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/e9dcd66e-1388-4872-9790-66df2f44deef" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"GxQJAMT/puq0cm9GOZVmxpTWsflKSBA4gNL5+WPmvlL5/71VU9EsLfrXKqiCRtNdp0fq4Qme8JGdjdp66WUAQxi58cf/oBUEaKYWqm0pK6q+z+q+K7NZN8uztlVDOdS1IhrAkU7hUw/lSBCIFOLTl/Pvg3FfT552N37DU/xZ0lMBjl/9EILikUK8IvmRAonjydMnRMERFq80ygDxh4UbR2ch7v7wNFKUEH+IP0uCwF7kxVDow3YKYRwcqSp6NfHEJADyBr2QUTsL5xvCKX1M2pOCGKQJxKHDjo3krTQQ0U+kbAziD1bhxl1eN3HocKmDnhsiw/3sp0BUHCq9AdtSaD/OC664pwzOssH5UkWCuRJIicMdoMNgdhTOPB3WXqV9kTjgnxLs9g0ZdtbMynbWNdBaI8zpbGddDfD+qdpRx54G/W1oBqePLfkpwtXYUARClAG2s37aGTqseznEKAgnjr6cStxIrO04JlLE3bI1MQqrZ9nmfcTTB00hInFE+kaNWztddinNRBAw7kuvX4q+l9r/rMtIwY12JwxJl7IpUzKSJhq7xEUgz7basioOq8xZVsEHnDswpQmuSJbEL0x1Ehjku5hDh4PJRG0KtbC3r7FWjJ+WhS8AEXs2Rjn26P5XF5pYPT44ZBIquGvtkjvr7J2ih+dIwGPiE7UMkq2cRekjiwuNPUOJCCMvXlqTLpOswrXYDatapJNc1zE3bh6I86WUhjIwyCLh3U7qy4v+5/C/0x6Z7F9sPwwGiQeZO2dIWqT+lYhW0J8Q/YHtCGE4G3XzN1oIxciUY+ZjSyiV8bDoV7Q1EKG8lJQeEkdyqdix0m/il9JoZdsr7WQMx0hRKjlqgKNBVMEvoczLNsubLK/Py0I0M5G3K1XR34IjJRXRn99SZ1V+XpaiKEXZr8yqsuyLqitukRI=\"]" + }, + "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/\"915-OogZu/XeTsl03kPDveC4AHiogh4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d85c3dbb-58ed-4c58-b7de-b2fca1c871e9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:24.074Z", + "time": 169, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 169 + } + }, + { + "_id": "c4ece9722fb9d20c2d3fa1aa4e34b5ad", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/35daadd6-bc63-47b5-a0e5-7756dfbdf229" + }, + "response": { + "bodySize": 1048, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1048, + "text": "[\"G4kKAMTvp+q08v6M4tLZUmo5mZNNIoEoTue+tV/vdzXuzvzvyaQh4mOISSIRTZJY43UqpZIjPaFiTV9FtC1DlNJ2sPoPwx78zQk1DIV2sSz+w/h/zEWgFhJGQ2Ew0kRaj4tyPh4Uw0k5KqjLo2IyGY11Veqq359Bwrp07LSpDJU1nwXXckiGI9Tjs8SXCx9V7b6g/mA0FNrFcpctB0p8QS2yxGvgT6jeVCLOl9xQhPrD3DWNs1CPf3htOBHUH9JPy1CIPzFxAwltYluTJ14qd8H/AP0kJFo0uT8MFWBEZeaUjLObH4gX7FcmsIaqqI4sYeK+TRws1VAprNhKK9QfbLxmH+h6ScLEGxNNWbMY/uv9flADCT0IgmRrdCWupmXxWorOisqFCY1MBbz1OUtkCHzYmn2Nc4SJm0uyC8IBz1Swp7ZtpMTioGJ/y4PQIcLcX+xvuQG3H82+Pgtcme+9ApjgzIhWnxFu4MgjEFGWxf5WrC+HiVuBqgSwliWIzyKlRDt9tjWGOHSMxmaKMen9JLDnVUzIEom/UeMfQD13Q/WKoVC7r/p5FK0JP1uU2DW1SDDuTqGr8LMKTYk9CZy0X0cO4g+5ElrDSeGsmOcHLB048Ak2lZbOBzKHCZbkOy9jJUw8XtXJhMJW9qlN1cZchPYAEd1GqhwJ7W+10PaNs+MTQZeTOIZOOva3xAdXD9fooozDo5jOIrmQy0QhiboInBJJDGrdIpDlve20GtfRblu9RDllfxpl7crkHi7n3MtAl+Xq0MTy0vM0GpU0UQ4DG7cqnauZLPhKkhV4QnoCbYRwbHHlO89XQt1Lwry2JMU0w5JJjDUgQXvtOT9LDEB1En2/0Lv3MPqM0pIi5bot72+JJ1hpwMWV5NzXD6u/CBXJxHMOWSJQa/2gF+tnTWWuvmWNQqw7pf5IHKTsAkae846cn7MMtm8w+JewrnqftKu6lmg4kaYk4GtPn9Nvod/tj4vuoBj0rnpT1R2rXndtMug/QGLwNfKTv94fXPXGqttX3f7acNLt9gezYf8BOQM=\"]" + }, + "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/\"a8a-QW0wliZ5IaPDWXXT/r7WXDIjuxs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "817ebdf9-fbe7-4f32-a1f4-d83e6483da60" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:24.075Z", + "time": 221, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 221 + } + }, + { + "_id": "f5e39efe8b47550c75b3a572b9d493c5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1940, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhflow\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22phhflow%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"0ece99b4-5039-4bd6-b31c-de14bcf45f11\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-Kq3x+ZYLezTJz39zQ3Jf+ON2qwk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d87325cd-40e6-4cb3-8d66-87a69d5c46bd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:24.077Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_id": "2d1db9e4372697dd9798d127038ffade", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1937, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"test\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22test%22&_fields=id&_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": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "173dc89e-64b5-4d9c-ab28-90b1b9ecf2de" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:24.106Z", + "time": 159, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 159 + } + }, + { + "_id": "194ac1e77d9411c49dba928d7165951b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/3eb082e7-68f2-409f-9423-26e771259dc8" + }, + "response": { + "bodySize": 912, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 912, + "text": "[\"GwIJAMT/n6o/rZw7o9YY038pBYmnBBdwALtz/H6u91kt79/NPFlac3068TRHEokqIp0QIVIiJZMaNk320kRj9NUCB73SfVbc/vgZWkGgojHvS+qStp/LpM6HORnqskrKlrquKJtBTT046hR+9q1cEwQC+fBvb91yXtn9P0fbjT/zLxw39K8GR2sQwlAykA/fRH6kRuT452gHUXD46YnW0kOcMdn12hqIX2f8W1OQEGeE44YgsIs8H4r2c3yEsAqOqop+TTqxBEDdrCcZtDVwvsF/pOetdqQgZrnyxKH9CxPIGbmCCG5LziYgzjAO97/U9RyH9l+11+OKxHCf/RKIikPVG3BsjM7i84Urniq9NWy27qoiIVwpxMgxHODDfF4onHXaXz9J8yhxQE8BduetDSd7bMte3Higt0aYm9mLGzdg9G/UC/Xe0awPgaZwBthGnyRcnY2GgIsyxF7cvI6H9jdOzoEF0ciR5WR4I4i2672QJO6hbYjRWC/727wfOHqmrQ+IHIEOqPFsp4e+ytWWILCye79+KTpstDveyEDkxrgThWSmHJYpGcgTnV3qiyfHztqyKw37mTXsBh8ww4GVJphLsiTjQt1OApMcmjm0f7NdBR0KOdo7r1VL8mdoMRaAiH6bWY6J7n/N0NTV+zdvmQWFr94u/eKGLYk9rEYCHotPdJMkR/IpSBcYL3T2lCQijD06aUK6l2QUrt29NeqJcoLPQYwrOxJxZzHGVQaWLELvUWKW5/VzuXYtkYl60TkMlsTzjNauSBrEfMWT5eQJXgd6EsI6G7fjgiajyEwxZpZbXKvUCPNaMdYghPZKYvwTOcql4mQtWFOQSh4C4OGO5sgXoMzLNsmbJK8/l4VoBpF3adt0eZc3Q/0THHVT1ERq274o+p+IEQ==\"]" + }, + "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/\"903-e6Sik0R0hO2VUCkj71QuFseUHtQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fa120566-2dc4-4699-b6e8-6622e4489ca2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:24.112Z", + "time": 166, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 166 + } + }, + { + "_id": "c2a67b99df3cfc4c55c29ca9b9679801", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1949, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"phhnewusercreate\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "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&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"8d0055b3-155f-4885-a415-4f1c536098e8\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-vDgRX6r99d3E1AZX02Sj+VW/eJo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2eff38f8-af94-4e27-8f97-d133c350a64b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:24.137Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_id": "9ddf862c5e19f6be0957ea86ef1d5466", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/822e832b-865a-4b9a-9b35-8c9765c6a515" + }, + "response": { + "bodySize": 1008, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1008, + "text": "[\"Gw4KAMT/1rTTlXlnTNFoDMctraN+N5gEXMDU5efv97q/p3ji/6YKqrLI3VpU0GgaEZY4HY51gFNRZ0f4hWRF9saF2TuMe/ALV3JBEGin0/3OebO4o38P//MeNi2BQ1UQyOOY8iQuojxLZTQqJjKaFEka5eVknKVlJtNhCg5t/KWpVK1kMacba1qyXpGDeP/kWBk7q+dmBbGDqiAa9T+n/kLg+La0hBhxuHJKC+kgdijNYmE0xPsO3wvyEmIHv2kJAn8vPxe4PViK7jvB0eIJ7TBugI5aldIro08/4O7or1OWKohazh1xKHeqPVkt5xDedtRKGWIHzdros7oe4lDuSTlVzKkY/wF/HUTCUY2IwNs2OhMPc7R4pHRGs9rY2Y30WbzZEDj6iWxYmtMKZ4dy+1OpfyUOskaD3XfYho/tNspODyywHTHM9dnpgRlk0qU6rW4s1WpNtIAzwNr6DOFapohASXScnR6cDoZyB1bWXgWpwBH+THSjYdt/U8iQYtuMGxvJpqf3FUt/1DmPwOFpjZp/BtXxJOcdQcCFQD+XqlV2cyA9iZt5hwrBU/bKKunJEstx9dGRZT/n8lQ17GRGsyV/MNJ3B4+CQppXS7BBWM4EU7Lul14O5S67uVdUmMnet1+1YV/YDgmReHao3LcKXP/LQ6t7N5dXrIVB3G3HtdMDNiP1yDUCyzxWiuEUyb7ce2k904VlLpRkbad/rdRBYztJV7i29lBXey6nue5GMTcFSZsLITzK0EMW6HAiIcqr8vltOgYyXS4xhlEbJyqMmZPUiFeqsoo4ocogOiHdS6ZoqDyMXuleVVjWlmoj9rCqJHNNFXJ71RA+OUajOojHfgX3t3iSi6tuUZANk2r/qjyQXLBMpuEA+BWcA3Uk+bRDmuoApBOEApjMXC2Ez8BtRb3yz1FBPHfqbj7nWJCXleSAnwBiD34L8SDOokESxdlDnIhhLAZpL08nb+AYh4w+89tikcZimPXSJE2Go+EgeUMI\"]" + }, + "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/\"a0f-Kd6MUfBHNb4OWLWEcLxoNF+/hSU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "854f3439-b6d0-4dcc-9c71-a503300c0e99" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:24.150Z", + "time": 214, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 214 + } + }, + { + "_id": "66d6956a74d70d4f9d70a0540829efe7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": [ + { + "name": "_queryFilter", + "value": "workflow/id eq \"pghgeneraterap\"" + }, + { + "name": "_fields", + "value": "id" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes?_queryFilter=workflow%2Fid%20eq%20%22pghgeneraterap%22&_fields=id&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 89, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 89, + "text": "{\"totalCount\":1,\"resultCount\":1,\"result\":[{\"id\":\"35daadd6-bc63-47b5-a0e5-7756dfbdf229\"}]}" + }, + "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": "89" + }, + { + "name": "etag", + "value": "W/\"59-jLi+VtwcliIBr0Tya6zhkTXnmLk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "06ac04d8-cce7-41e2-ade8-54b567993607" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:24.301Z", + "time": 173, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 173 + } + } + ], + "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..3e6756d57 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:18.590Z", + "time": 182, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 182 + } + } + ], + "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..1ce2e5b0b --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-export_3902289005/0_xNAD_1816912135/openidm_3290118515/recording.har @@ -0,0 +1,1740 @@ +{ + "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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:18 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:18.817Z", + "time": 182, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 182 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:35:19 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:19.027Z", + "time": 100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 100 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.019Z", + "time": 167, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 167 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.020Z", + "time": 177, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 177 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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": "672" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.022Z", + "time": 168, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 168 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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": "642" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.024Z", + "time": 164, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 164 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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": "657" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.227Z", + "time": 89, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 89 + } + }, + { + "_id": "d39b33105378f498860fba818efad420", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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/staffNe1AccountCreation" + }, + "response": { + "bodySize": 3217, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 3217, + "text": "{\"_id\":\"emailTemplate/staffNe1AccountCreation\",\"defaultLocale\":\"en\",\"description\":\"\",\"displayName\":\"StaffNE-1-AccountCreation\",\"enabled\":true,\"from\":\"TechSupportPortal@fcps.edu\",\"html\":{\"en\":\"
Non-Employee Account Created\\n

\\n Welcome to FCPS!\\n

A non-employee user account has been created.

Non-Employee’s Display Name: {{object.custom_DisplayName}}
\\nManager Name: {{object.manager}}
\\nDestination Work/School Location: {{object.custom_LocationName}}

Your UserID to log into computers is: {{object.cn}}

A separate email with just your temporary password has been sent. You must change this password before you will be able to use the account.

  • Login to the FCPS SSO Portal
  • Set up your MFA when prompted.
  • After MFA is configured, click on reset to change your password and follow the prompts.
  • After reviewing the notices on the pop-up window, select the blue button, \\\"I agree to these policies and directives.\\\"

If you need further assistance, please contact the FCPS Technology Support Desk.

Thank You.

FCPS Tech Support Desk

\\\"Do you have an IT question? Ask the FCPS Tech Support Portal, where you can search for solutions, services, and submit tickets to solve all your tech-related issues.\\\"

\"},\"message\":{\"en\":\"
Non-Employee Account Created\\n

\\n Welcome to FCPS!\\n

A non-employee user account has been created.

Non-Employee’s Display Name: {{object.custom_DisplayName}}
\\nManager Name: {{object.manager}}
\\nDestination Work/School Location: {{object.custom_LocationName}}

Your UserID to log into computers is: {{object.cn}}

A separate email with just your temporary password has been sent. You must change this password before you will be able to use the account.

  • Login to the FCPS SSO Portal
  • Set up your MFA when prompted.
  • After MFA is configured, click on reset to change your password and follow the prompts.
  • After reviewing the notices on the pop-up window, select the blue button, \\\"I agree to these policies and directives.\\\"

If you need further assistance, please contact the FCPS Technology Support Desk.

Thank You.

FCPS Tech Support Desk

\\\"Do you have an IT question? Ask the FCPS Tech Support Portal, where you can search for solutions, services, and submit tickets to solve all your tech-related issues.\\\"

\"},\"mimeType\":\"text/html\",\"styles\":\" \",\"subject\":{\"en\":\"Non-Employee Account Created - {{object.custom_siteLocation}} - Effective {{getDate}} - {{object.custom_DisplayName}}\"},\"templateId\":\"staffNe1AccountCreation\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:35: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": "3217" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.230Z", + "time": 169, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 169 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.460Z", + "time": 120, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 120 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.461Z", + "time": 123, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 123 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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": "Mon, 04 May 2026 22:35: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-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:35:21.462Z", + "time": 122, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 122 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "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\",\"displayName\":\"Frodo Test Email Template Four\",\"from\":\"\\\"From\\\" \",\"templateId\":\"frodoTestEmailTemplateFour\",\"defaultLocale\":\"en\",\"enabled\":true,\"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\",\"subject\":{\"en\":\"Subject\"},\"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\",\"description\":\"Frodo email template four\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:35: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-8d07046d-578a-4312-9e01-ecd80c790718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 654, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:35:21.463Z", + "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-import_3803419662/0_AD_3050885125/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/am_1076162899/recording.har new file mode 100644 index 000000000..2dcef91e4 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_AD/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 16:19:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:19:46.119Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 16:19:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:19:46.447Z", + "time": 107, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 107 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/environment_1072573434/recording.har new file mode 100644 index 000000000..48929b9d4 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_AD/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-39" + }, + { + "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": "Tue, 05 May 2026 16:19:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c41e99bf-1b83-42df-8c4f-98b997852d63" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:19:46.560Z", + "time": 100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 100 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/oauth2_393036114/recording.har new file mode 100644 index 000000000..dc3348fec --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_AD/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "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": "Tue, 05 May 2026 16:19:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:19:46.299Z", + "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-import_3803419662/0_AD_3050885125/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/openidm_3290118515/recording.har new file mode 100644 index 000000000..7ad2b2855 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_AD_3050885125/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_AD/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 16:19:46 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:19:46.492Z", + "time": 184, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 184 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 16:19:46 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-d1ca4632-accf-4533-9e16-f755a7b1e5f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:19:46.668Z", + "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-import_3803419662/0_af_3559436575/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/am_1076162899/recording.har new file mode 100644 index 000000000..f79122567 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_af/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T19:52:46.338Z", + "time": 153, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 153 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:46.680Z", + "time": 105, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 105 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/environment_1072573434/recording.har new file mode 100644 index 000000000..b673c8619 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_af/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-39" + }, + { + "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": "Tue, 05 May 2026 19:52:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0bc710d1-e7e6-4bd3-a743-0a6e71201041" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T19:52:46.794Z", + "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-import_3803419662/0_af_3559436575/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/iga_2664973160/recording.har new file mode 100644 index 000000000..af179868c --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/iga_2664973160/recording.har @@ -0,0 +1,9932 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_af/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "98e9870d9a09dccc2f491469cd37e878", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2264, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2264" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"custom\":true,\"displayName\":\"test_workflow_request_type_4\",\"id\":\"3eb082e7-68f2-409f-9423-26e771259dc8\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:44.548070781Z\"},\"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\":{\"id\":\"testWorkflow4\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 928, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 928, + "text": "[\"GwoJAMT/puq0cm9GUemMKa1j6yvBBRzAPfz8sXS/Uvn/vaumorPOXxe1jSpoFFmWOB1OcMIjm43aeullAEMYufHHt1AdBHIaJE1GdVQ1fRYVSdtHbZHlUVZRXadZ2XbDBhzpFH72Uk4JAp6c/1oaO+4nZvllaXfj93z59Yy+CnD86ocQFPfk/BPJjxQIHF+WFhAphxv+0lQ6iC2GZjo1GuJti68peQmxhV/PCAJ7kRdDoQ/bLYSZ4EhV0auIJyYBUNWrofTKaDjf4G7pb64sdRC9nDjiUO5Ee7JaTiC8nZOyMYgttMK9p7zu41DuUTk1mBAZ7me/ACLn6NIbsM2ETsR9wRUPlc5o1htbqkgwVwIhcLgDdJickw5nlXJ7v1L/SBzwTwl2+4EMO2vmy072NdBaIMy52cm+GuD9C3XSXVvq1crQDE4fm/FThKuxpAiEKAPsZP+0P5Tbt7L3URAOHH05lbiRWNtxTaSIe2BlYhTWzbLN+4KlP5o7j8DhaYUat3a66VFO5gSBiVnq9UvRaqbsel96Cm60O2FIupTVsk560kRjnXhwZNlWW9aOw3JmNKvgA84dmNIEVyRL4hemOgkMsqrnUO5iPvHKFGphb99jrRg/A1NfACL2bIxy7NH9ry40sXt9cckktHDXWidP9tmYoofnSMBj4hOdDJI9ufPSehYXGhuGEhFGfqzUJl1K0h2uxT3QXYt0kutKDCZmEIgLCyEMZWCQRcJ7mNCXF/3PYX+nPTLZv9h+GAwSjzMwZkJSI/SvRLSC/oToD2xHCMPZqBmMaCgUI1OOmY8toVTGw6Jf0dZAhPISIXxwpJa6GcTbNnyEr2jHnzMlLzs5QoAjP1StLyFLsipKyigp79NWlJkok50qz1/BkX6K5M+vLu6zVJStSOqdqqyTqknT5hUhAA==\"]" + }, + "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/\"90b-FBeuIhYA1CafHx+PfDrKjUpvqtM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:51 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ad7bfa88-4417-4ac2-8557-1ccf35933a3d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:48.518Z", + "time": 3189, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3189 + } + }, + { + "_id": "671df05534586babffbde9fbac6c2157", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 3097, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "3097" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 1107, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1107, + "text": "[\"G0sMAMRqqb6+zL5RxpKFC8+U1pE52SQSiJJ07tuvhXI5eQ0jp5BMmpjMzu5H3Kt4w0Pj0YkeQsDGar0uExhxxI2e/Id5Dz50rHqCxLBaFdMd//NUfEQK4DAaEjM9GgnRjItSiLaoZzNRqLoURd2WCzGejOYzmoHDunTktGmNajo6DW6gkAxFyIcnji8X3tvOfUH+wWh7nY7p6ypS2LD6GcgcL4E+IUuOuFhRryLkHxau752FfPjDS09JQf4h/QwEiQnLTwWeEpTKOqcJoG8ExwAn6w9zBejUmoVKxtnTB8Rz8h8mkIZsVReJw8Q9myhY1UGm8EFWqiD/YP01eF/XQxwmXptomo7EeNL7LSDHHHoWBKnB6ERcrsvihSo6y1oXVjQyLeAtyZkjhygNc7OncXYycWOl7FLhoH9asKdt2Uhju5Wyvc0UBKwZ5vJsbzMZ9PnO7OnTQK35vloAC5wZbNDnCNevQAQqyny2t+nrs2HiZlBtAliUOQKfi5TF2+mnZ0cXB5ywsYFsSXpfCeTpIyZkjkTfqHkEqPuuVfdBkOjcF3/uxGDCz6ZKlDQrSdjvoBAYflKmVaKU+J3WXEUKbESupNawkTnLtvmBkR088wljLS0hDWILE4zJd7505zDx6KNLxhVutE/bUO2YFwFLQiTPUZanfUW0/1VCa9ZPj46ZBQ/3gNPavU32TuwxNYKXeX4U/UmSU7lIKiTGC78zIclOLV4GZePefFqNa223rN6znOW6F03nmsxdXc65lqEqC3joFOW1/9nCqKZJxjCycaXGuY6URbzSZJU4of1BFkK6V7rmjRYHhfeasMktTbHMYc0k+5qQsL2anJ84ZqCq1P1KbS51S6LqpJQs8W0SKaYQmV/RUGMLLDobumSOpfkk29zhHUWjHfNJlglFiTkeJQ6ql/aiV6ZDcICOlOkcMI5j43MR7X7zxUewqY5gZZLNMwYIPUrmR67Oypyz1AyqBwFH0pu00X7n/NTEpo32B7ciV5vzU+YFCDnYpKektGp85rYHLD3vQjWqJsVIFCNxWc6lqKSo\",\"1ib1+B4cLQPyz28URVkVpbisKllVUszWRFWXYlqOJ/fIGQ==\"]" + }, + "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-UYOTeyp9T/PYyDV0E2kiFAQG99I\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:53 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "20950c73-a57e-4703-bd4c-e2021f889b4a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:51.730Z", + "time": 1987, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1987 + } + }, + { + "_id": "8f5cf208bf76aa5f1293fa3aa0aea754", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2244, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2244" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"custom\":true,\"displayName\":\"test_workflow_request_type_5\",\"id\":\"af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:14.317988333Z\"},\"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\":{}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 932, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 932, + "text": "[\"Gw4JAMT/puq0cm9GcumMTmn1y3wlJAgcQGk6frpfuf+vOPPeVlrZUlr01FZQBS3FHXV7pB6e4Akf2ekQ512BBunM/ngHo6FA9Zim9Xxc1AtaFON6rov5kLiYjhfT0UJzRdUKEuMpfOoxNQyFxDG9/PjwWVv/8xJ4cOM3vKS/Nb9MIPHvz0B1WeIl8DfUQCKu3rmhCNVh5ZvGO6iHDi8NJ4LqkP7WDIUhxouTpVzW8+SGITEGRY9hmTi4/++uzYqS8Q6qg4nn/NWawBqqJhtZwsQ9lzg4slAptKxYBKqDS6l2X9ZNEiZem2gqy2w4TP0EqJGEHreAdZ1oNy5nUnFPit6J2oc5iATTxJCzhOlBh97saZxZJm68k3sjHEApwW7bSsMm9pOKvU0NdMcIc7zY21QDvp+YPX0auDa/N4mhGZxesZanCFdzQhEIUfrE3uZ5Z5i4GahOAINZooimwiWJEvvpRdHEulNMrFpMIu8jgb+4jQlZIvEvauyz6bJrsi1Dwfof4//G/Ls24W+TEsPuRCDJKasKTYkDRXMWu4ocRB9aFi1hUXgnFuYB5w4cqwQ3+5VEB2bREbTl1y/5EiYetTYZU6iFvW1DtKIWDQe+AETsxRDlWFD7Xzk0tjw9OhaFzBIeurP43qb45OjhJRIr44gmKhkka10kCikuNOcMJyIMvQVyxb1+Oh24s91yGhXySW7LqKyvTtPlnMsyUMoicahUlBfR2cP/TGFURMUWw+DfA1XeWyaH4hVQMAi44oSIgM2EIDjsqw9e/Y8lcjlmPrZEW9bDohvaGpTA9GI5P0mMGXU7qIcuP+WfaKDRS/SarNGWvtK11ko0nEhThQJWANH0v4Rhfzgt+pOiP7kcLNRkqCbjcjqb3ENiHCoi4reMi1H/cjhUg6EaTMvJfD4b9Rfj+T1yBg==\"]" + }, + "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/\"90f-tzjrcEUykhIzCzol8orGF8J4uLk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b3dc942c-87b5-4346-b263-25b12b79ff7d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:53.723Z", + "time": 2006, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2006 + } + }, + { + "_id": "2485d5b44cd731e7ae4b889002810141", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/applicationGrant" + }, + "response": { + "bodySize": 1387, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1387, + "text": "[\"G4oNAMQv35lfvzuvQAqRjqB1EX3TUaJNop4t+QRHrhbX0vs7K9PkxywBOE37A2DFLIkcsLOkbsJM6TdZTF/t5i8kegGqyGYtjIbEywMOfemVjRCYk7Dse1UzJHJ60VHRsyFw4/zlunI3kJQWHqtgVv9E7r541zAklk1tkQVeauGJcRayRXDJrxgS18pT9mNpj9oS7L3zoQRJ+nMhqIQqmFwl75BZP317+cZfOEZjN6Frgojuqx8SPvMboVd4nUI0a01vo729PYo+MT1+TE99qaN1V66une3+Kz2Wkp1+d4dZ0///9OVJN3pTP31Ge3tUosSzZy2RXmFdlY7QbVLYPi0hVLoJJPOGusSznVz3ITvIAsmaq8Rv+C5A/oG0jVJgX2iINO7Lf1GhcSFgXXzntFkbtaz4o3cN+2iYjI86muncQn/0vDa3uBCY4C7yu4ofgrSpqgT+er6GHMwFwmrLtQqQLanzIf+0+FtzVJAtNpQLZdgp5ujA2RBoNOjbwvSAwvjw2YRPh1yrKrCACYWN7K2qIKNPzCUfsoUFt46McyFgwncTzLLiajR/QiXIkYCeRyKsYdobXzckeaAKztLa+d1iIpQKkbNAmKEOw1NoOeuYcLJVdqPkQG0Msoef8Qiny2SpONXAdUxiTkzFqRoYGT63t5ChmZxx1NCzFNdxoiQQpUyl4vRrb5hw6tU6oiAjC/ReNrgxWDviYyVLE7tOiVlrWg7xDZ6vOIWILBD5Vmp6FdtJ31WVGBKVuzH+F8W3jfF3pyoyuMnuQBAiZaWkVWRNHGeF3wJ7ejVeqKYwm5ylg1vQ3EEziGhb7QQd2DEhdMutXxoKmPAuVdGYwg724SekLX3hOkCJ+LcP5dSLBVaEFh5/fPeeOPjx7zorKk7pktGjUwQr06QiLQmSXfkSlY+EC8c5q0nYDt0MGgC7I2m1XNN7ZvWV6hl+52JZuaWRppZz7mVwKAM47Exu5aVyET4fe05DKd6G0VApz7mK1ZfWXkl1hXZCKsCDEP/z3PIfrz4IS2aZdWyJXJmHpZpkayRI/KaYs+jw\",\"iyBxtFqLcgSNPgVX4BhFciUFpP/NiQeVc5epgWzRqLiFRO9AJ0bpurcc5mPqXgrskSNlLb8F9mh1TkuBPd1sHZkQIbGsY5mPtCFmhOFWAGk5xmzUhl9/pbdSUVVuA4GrxP5uxP+XPaN7l3x347wmvqISD1vJRucSm6c9iolc9+JdwzXoVdLgvUGUsKJww6H5jMlvmrSlRTxoRg117aPynimEGXYknOs6ymUyc77Iw1tf81Wu5qi0wjLd+FLx8CkM+8Nppz/p9CdfBws5nsvxqDudz35DYP4mqfBrRp3+9OtgJgd9OZl0p+PheNKfzya/kTM=\"]" + }, + "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/\"d8b-dYropAJvLKnXj7qEqXcxPsQh5oE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d7278420-7c23-46a0-b082-cf72bb1f399b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:55.735Z", + "time": 198, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 198 + } + }, + { + "_id": "90ad0bbcfca5571503af06c3d1ac754e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 250, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "250" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1904, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicApplicationGrant\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/applicationGrant?_useLowLevelApi=true" + }, + "response": { + "bodySize": 712, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 712, + "text": "{\"id\":\"applicationGrant\",\"displayName\":\"Grant Application\",\"workflow\":{\"id\":\"BasicApplicationGrant\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.applicationId\"],\"notModifiableProperties\":[\"common.userId\",\"common.applicationId\",\"common.requestIdPrefix\"],\"customValidation\":null,\"_rev\":19,\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/accountGrant\"]},\"custom\":false}" + }, + "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": "712" + }, + { + "name": "etag", + "value": "W/\"2c8-jlMMQQRhlYUdOcMnUVj9nMwKR/c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1570ee65-3183-4e6c-8e83-baf5e36cdf98" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:55.947Z", + "time": 702, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 702 + } + }, + { + "_id": "5fb093680eba221cbfeb8b083dc80d21", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/applicationRemove" + }, + "response": { + "bodySize": 1399, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1399, + "text": "[\"G40NAMQv35lfvzuvQAqRDrmEvuko0SZRz7YcQWBcmbSW3t9ZuZspACggyqbAoABZAts3to7UV7pa2Ye5fJ1PFBK8TKKL1TAaEs0DNv/MhV0zBAYlzPleFQyJb7WiE2DHQcDPllwoD1ljZovClpB/avwtOCjIGmFXMSR6f5dL1VjBn7mX8r4QGA0xwPATuu73nlfnIFnD+M+8isaxhpyr3LOA8TdlYFeqHDK4yLWkQNYoaa97W9ZZAsZ/N95Mc0ZD//h5IHsCepwAz6rS1vi64MQNlbclza1bDaSXozcuJQExEg/dc6PpLGb82VKVC0UHcVMB7V4XdXjRabB0c86BbR9kDkw352wQS/vqRn90PDdbQTM6A6kqr5LkWg40BSKVEXRzflsbxp87NQ9WEJ0EolNl7KYCaXt/RKqkiG2HqKw2TXf3Gscrjj4gCQTeUo1WSsd9V3lkSOR2I/xPireVcbtzFdi4IXdVoPKUmZJWgTmxHKV98+yotZWHLmE02ZI25sBQB0aIMJZSqXhg20DQLFu9lBYw/iHmwYiicmbvdVZ0JXVh2yGK+N3Fyv+tjXVP89xuPDTt9OPDe6qhCi+2o/Sbc3pi6zFLVFLGoBE1aSSr8iUoF8guLMcME7Yds3CqDBojyaWma3gvSn0GXgVP0zHN7VRIQ0spHWXokKXssDEpyktw3u77OpBVBMVjGNWxlam1OasSKV5JuEKckAC4E9JLsp3+49kFtlQxzaZtibUyDUuYkDUViPqGmJI44KdD4mQ21+AAujImURUTRM/OR+GQVQ8nTsitfYoVZI1KhSUkWhv20EsXrekOb1O3omeH5Clz+c2zQ9Q5KXp2tFlaMt5DAlj7Ms+klM/wzOpvcdnHLNSCTn+kNVNB5XYBgVVkt8vofrNldOuJdxvrNPGKMjyvKeudMiyOdSsmcNEKu4ox0ApWaa8TGaQopIXVJ0yeetalSRoYQvWw8VFrryIXZrYj2bnJowzTO6VHR1ERZGMNiVPlzYwbl0yYCoiYVoXXopkwRY2PeRvdjCGxVo6+fV86oDoDO2edz0CS/jwKypCG05dzpD0y89cJ8hlfOARTLnzTf4KWuxSAzEz2Fjo4OKDgItPLl/Q6MfVsJuHtNf9B96VYTh1hhVnT//90c2YzOFO8fkMHB5Qhw5s3NfHl2WRpKc0q+uXrLLWOJeOJ5gV1hjd7SR532EMSiKVZRQ==\",\"vuOdh/yT/Hs1nd9bfE3Q3dcfBUobHqw2c6OmOX80gOooxuVbYqQ++1Hgr+M1ZKcrMEyzy5FMf6n2d1WfWMY8Fyg4KK3CHX7+0iHzXei2u8NGe9BoD752JrI/lv1+czDo/obAEE4G8DMHjU670R197Yxlpyc7nWZn2O60x73O4DdSAg==\"]" + }, + "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/\"d8e-2epE+vGBgEI5GKpzfcp3fZfHjN8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a95d7e4e-fa84-4295-99a7-3e355abe8162" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:56.664Z", + "time": 230, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 230 + } + }, + { + "_id": "b6682f45f95606d2d86e3fec4567079c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 251, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "251" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicApplicationRemove\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/applicationRemove?_useLowLevelApi=true" + }, + "response": { + "bodySize": 715, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 715, + "text": "{\"id\":\"applicationRemove\",\"displayName\":\"Remove Application\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/accountGrant\"]},\"workflow\":{\"id\":\"BasicApplicationRemove\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.applicationId\"],\"notModifiableProperties\":[\"common.userId\",\"common.applicationId\",\"common.requestIdPrefix\"],\"_rev\":13,\"custom\":false,\"customValidation\":null}" + }, + "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": "715" + }, + { + "name": "etag", + "value": "W/\"2cb-llJwXMM1sHBLo+jhFgluVXpduT8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:57 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6adcc6d9-775b-4cb3-9907-a18e8d61cf01" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:56.900Z", + "time": 762, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 762 + } + }, + { + "_id": "8862f238dee5c4790ec65284f2fa4ec0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/createEntitlement" + }, + "response": { + "bodySize": 1707, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1707, + "text": "[\"G8kQAORaar6+m02TJxxyqTitObXqxoPNyiYngQ5WLqPw436t9/s1bnsfFZmcmCVMLIrlK5UG0WKhRmxYs1fbM40MBCZhxXp2aA0q3NT4UuiFY8vVgQj4osCdEg76oGtChc9S6YFbjOJ2T7WOqDrc+rr2DtXfDtc1sUbVIZ8bQoVbf+eXinPlfKGtlPuiwL0hZlp6g033x7q0W83WO1Qd2viFrlsbyKAqdRVJoI0rxxScrlBxaKmWJlQdOuy6b8o6S6CNP2y0m4qywfbxe6AaCTT7CUhqKrXGbyecuKGO3kHpw9lAJge8NSkJVCORwT0rg3OQjc/22u00DiKNAHvyizqS4RYsrJ5LIDkGmIFh9VwMItK+WplPgUp7UjSFMwua8pSEq3CCEXBRFsLq+fPasPF50CVbQUkSyE7K2I1A2ymfMimpYskpVKYNh7t7TaBraiNjEsh0Qg1rKR33Q1ctocLKH5X/QdGpseH8XDMZN+gdFYg8ZaZgNJMkCmct3yMFWNsq0ZQQDd7BhTlgmgP2EMGcSiWSgboMBGY5tctwgTa+byu2qlDO7JOfFa1kW0gOCCL6Rbbyf+vow1VZ+aOHtjz99P4D1KDCh+SsdfUcrsh62BKRlmGnEZo0klX5yjow2IXCOZUTbLtqF7QjjUiSM7jC+8KZO+QTvI3FpvIbJYWWUuplSJeF7NCYxPK8dCnh/5jIRKloDiN1bGXjfUXaYeIrXl4OT/AS0E5IPhr95h9tH2BLYsysbXFrpVqYlxN0TQqE+hZM6VIgjRtUHgCgRpWzJcLQAvfOnBZiVlgUeDC4q+pk8z2V91dtg6rDRvMeFeZ2p0+G9BvyrWZd+R0KvG4pnFHV/Z25NfkVnY8+GKBrKPBWh8w7FXhiqVuxTHXO54ZywBqk230VtOMCMfmp1pMyzYnUR8PRhQMciOY9QYscBxuqvNtFYO/A2EoSv9mEpjQq4MPEj4Unwk1ENhyKIRlK+dz4NIObPlxpcL8ksKDPQ0ZyJ2G9fvXl4/dP63VPKPWQu5CQqMpR/xOi4yiF3O0EdBxfsa6t\",\"ILvMDkPtVldgNGvYEFRp6pHyqhiNgi25GwFSDmTBgPwpoEzW/EW8xLExcQIRj3D0IiAZmtRQa6eacIQTsBCuK9w0NbnC2tyE3N8XfRu2hAoPOsC/7wsPoCuQQvAhFggK/l4KKDBaIn9uSktbZjIkyyCgEwVpjeTTDeJPy/uswOOq/v0mbyOFvMBerzvoAG2ksDLwAMo4vqksZ3fzu70lh3Mexq+tHsBVxyg1tdxR1EJZgXan8+O4nqjdlvK3lrxAuDfA15YmqS2LvWZlBNx99eLbXQFdEvIXOvMdZnGBCvA7/w4vU29py+xGbi0ZbdqPMl606nV6TZIq7SqbNu6zYpQpR7fUNcOgikuFKTSTgPc2elJPWWBvmVIo/wcraUrJllkfdcZXYrZuF2X8BdacJwMANpK8Ax48eAAcWoI7dyBTPA6C7cl/qX2hdYduscJk4P9/eD5dcrB11oMHD6BAM1JGcg6kYhsBcaJRHaWwr1xiEug8v/fGllZvKvrU0Tr3F43FFsX/af8uuRS4Y/PUH+1+JyrXVpXAdaADqsEolcxtXWpibfTQAKZd4OHGW3DYH04v+pOL/uTbYKHGczWeyPF8+AfFdAlO4ueML4azb4OJGo3VcCpHs8ViNugPh38wJQ==\"]" + }, + "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/\"10ca-tG6EKBuXlA0wdSiesU6ya9bILuw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:57 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f96faa53-e914-401f-bf82-fca877d118be" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:57.670Z", + "time": 190, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 190 + } + }, + { + "_id": "47c87fa7a91d2f631db0f28c1df6be63", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 246, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "246" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"CreateEntitlement\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/createEntitlement?_useLowLevelApi=true" + }, + "response": { + "bodySize": 688, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 688, + "text": "[\"G28EAMTPpb2n6/z3U7CCcNoJy6eU0rAil/HubAEL8P7KxLlQRjbVqvMEHHXTbrSBDevLq3DGD1j6Bq86d2HirWxQavFjI6hvIBMsQo2P4Rc+Sz5sRKANjaSElo/9kWHxzKqEyuw0bvnYJ9gbjOF4DB72H+rIgcfJbwZALZu+pr7WddFpcG9x3Eojqjtd0bgIcT8fwgUseLBnj/LVwrAYlqNH0VjZ8RIJHvYGKaxxZFic+kjVc6mlGweOMcTkQJb+dZocmINf7y2NzCoMOx6zga3iaGQyQd43pF+St8phj6XfP9Vr4lg7VNXNqY+0Jo5vJmqpje3LQbK6X9+vmhyvfAIrNhrU0gkESNPRBI3vUw6y6es9nXZ7P3J9KWoHekCs5g3beWN45c2k6f6rF9/va7opevycn37AFBws4Cf/Pe5K1ciszrxzRnn1yWinUt1QThlKj5tlTVvl8CNxJKX7zg/A1xxLf+sByltJBF3lUDWlTOs/7EQuRWaVpuDAN85Z/CaZ9ICsooE1rHm7pizz5znYtpTjynTvHiniIc3XmZ11m1afxnnBPNHtLd37TY5yVBW1LTnIKM7IQyAJkggxOVHnmwA/r0HR8CF/CJPM0g8H/hzDwjELJ9h/EEsRU5YyEnZ9v1oYnUaSQ/ZnTw9h/Xo4aPyPfIJ99NTKBDv3h8QF\"]" + }, + "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/\"470-od43Ue8EwfEtCwLK5kKeWeUYRF0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "918b98a6-3e69-450b-b7d1-82a2f504ab09" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:57.874Z", + "time": 799, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 799 + } + }, + { + "_id": "c58d8d78e21c1eff00e101912f313dd5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/createUser" + }, + "response": { + "bodySize": 1463, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1463, + "text": "[\"GywNAOR+r+rX773rsPxM5LFx5uradGBzimklcA6UpbK0pt7/W5lL2o4YczAgUACoCBSwrrEV8qWclbMYXB30QrVq0ilUbdAalPhU48fSp0CMAnsjrPdaV4QSj5wD4eilsFpTpQPKBle+qrxD+aPB3xVFjbLB+LghlPh872pyIlTUe3pe8okosP/DcEs06cn6vV3YlY7WO5QN2vCebmvLZFAWugwk0IYLF4mdLlFGrkngApQNOk4dL2ldJ9CGzzbYZUnB6Bnxq6AcCjQ9AwRsmPbHj1NMPFIH76DwPP/HQJY3KyWBhkMdRufCyFnPhqO1djdaDvSpkT3whEcgHKcLF8ca2I5IzKnh4lgN/PvCXJi3TIV9eNcYmskZARt6hsa2HAsJlIaOh4vjl4NhwzHrIgqYlATmRyahNAoEvX01BIjthJi1hwHuPsB0S3WImARGepCaHpd01Wdd1oQSS3+Pnwuxsfx4rCOpphWdsAEEIaWsFYyOBHPLadGnQAyPr/I3FOaDd7AUB1J0UJ8Q0uQpQQe28AO98hAvjQXa8KouozWFGewDj0gbamHZz/y4JpCIR4UL5f/Wved/RenvU2jR4dtXr4FDCz5tp8UXx/CP0CNTBCtTNxFtCZJ9+RA1R8CF5YyFJAkzb1i7fG8snZFrdk+cOVE4zftCLEu/vMwspVTKYJEFODTK5VX+gtg9+G02qvLF8zB0PdHS+5K0w/xKFVaRT6gI80SILPP98i+t3BW4V0kkY0slLY9hlR5ka1SP+J1/Sj8F1oG45Kc8B2oRojxWxAmSVgGMUmYLXwWH3XoXycWQkXTDZB9JLga4F9SBGFScKseEGyanxh7c/qBIsKky4QGNE7/cVACgx5giAH0LvuYVocQ7zeD8VtiBRiExew4KQcKPnwIU1uHw3wVpYYtMvsA8DyxHnFuTx/kR4YuN60zhaI8fMt06EHcVttvNnWa9V78wsAM0bt6UNmatbqu9iPwYZhzswCJIJJsq77dmq0yhvdHdYSWna7ciRg8oFNA6O/nYEtAkoUy8M594JiqU3MN/DLRyNKz8ht4SVzYE651CCaoy+gKFAhT+vq2JH09tGYl9+WJNh247LYXQoekEdEBhS2FqL2yR1YE4H/41NV+22tnZgV67MXVAbuWK+aYO60wVjq5qOFvcCFbDDoamJNijScgVthcpNTT+COVLoAPUTskWWXq65gPFaA==\",\"3U3Iwx/0gF6sDsjVXdCzceSa4OVLyCI2IK93D5b/9T0RajeihD0mA///w8vVeWRbZW3Y2QGFODJRWSFSog0gsb+xGbOUkwtMAp2Pr7yxhdXLkt7m1c/8+CnwN9Mdyv5AYC/KwZ+tXAWlq8vSzVUCVKgoaqMbItQ8Evnbb3DQG0y2euOt3vhjfy5HMzma5KP57DuKpg/3/MXxVr+3NZh+7M9kfyj7/bw/6Q2mw0Fv/B1TAg==\"]" + }, + "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/\"d2d-e+sBvUVHm5BgBzO8b0470cHW05w\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "93348b2e-0af3-4392-bac1-15ebc73b3c63" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:58.679Z", + "time": 205, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 205 + } + }, + { + "_id": "b7436ac68b0d6b2d425b51bee2e9a3f0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 239, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "239" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"CreateUser\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/createUser?_useLowLevelApi=true" + }, + "response": { + "bodySize": 712, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 712, + "text": "[\"GxkEAMT/bGqn65+X3QUGjdhyk4fTltKUguFjywWRLymNaOJcKCOZciZGgmcAjTax+EiNpr8BvvADFsrbmpscmgsEHshN8HQucAMMSo2v5J+BBQrdCEOfuiPD4DmZoTE69Fs+dgFmQe+PRz/B/EcjXGqc+j6Axm26hv5G2xJOFVJg4c8YcOM0K1x72Y8Hfw1jIOj5vXg7MwzW83FCVti28RbnJ5gFwSfpGQZXnRB5LLW0WLCIl2BBhv6fKrJwC/J5Z165sfTrHfdRg3KwaDfoCu5Lwm8Xt6XFAUp/f2hSYGksqmq56oRSYHk7UEsyDs8HF8uiKapVlNs5DWrpXgH04ahLwXeVFm7TNSc1tbupZ0UXLBQVr1/+KBQtWYGRp+GnTtXCaJf+P0X11tD7mb+wHF0Izk8Whmx8H7BQZHF+mVhuX7lDZOF6xQ01X9aFBdUy30E1WRQWuVq5sUyBRZ+oFl0Rutq2pcfVEgVae/mwnlPYlhY/Awtldua+ADJJy9HqDKFIBG1RrXL+d/9E8gGqiauc3Vg2IdjznWN00ybo8ILukUHyNfQuhehG16OCcMajJKZHj6jMdFrnd53ecbcpTU2ap8wD3d/Ts1tHcceyorYlizyq4sgCk1QXyGJq8Flm6lNXyAqTjx/94EbXrQ/8RfzMEh0HmP+nCufCVzBPnik0JuR+xc4BM6XDgRaAGbtD4Aw=\"]" + }, + "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/\"41a-VbFnQ3wYeF4sWhVm37YyxOwa63U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c01acabf-6f26-4a61-ad41-9725d52ea35d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:58.891Z", + "time": 796, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 796 + } + }, + { + "_id": "129a09db962bd9f7c06f5c8232d33c61", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/deleteUser" + }, + "response": { + "bodySize": 1527, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1527, + "text": "[\"G5QNAMT/36vW1++bu8XyCVFxOt7tado6rcgnB5snm4kECqA0DYtr6f2dlW3yP2JO0w4IFAAqAkVg39gJeZNuVs5k/Pbqz6RuY2UC71cnGA0JzR1HfhfYQ2A0whr/qZ4hcZ7sRw8eCpsd9ypATti4vncW8suEm56jgpwQnwaGxO2989XJUuGv+XbJR0Ng/MMQw3XijfV7ujUbFY2zkBNMeM13o/GsIVvVBRYwobaRvVUdZPQjA86FnGBbav1XXRcJmPDeBLPuuBjeIn45yAMBPTKA79BoT7xdYuK+KjhLrfPrf/TzeNNTEmAc0DA0tcZZw4Q/d8puFQ7IqcHud9GGHz1MlOpzCmwPEeb4VJ+TAX+fmlq/9Nyax3cNownOUBrqM2S25ZFEwDI6hurzl91hwrlXbQQYnwTskUkpDQH+L18NBcT2GBtrSRPcvcXzHY8hIglEfkSN10s6773qRoZE5x7k51QMxj+dq8ikaaGjbIgKhaYsl7SKLOaWJ/nvAnu6fpWPrmEmOUub4kDpDhwTQlk8paCBbPiBLnnsl7oCJvw7dtGwwkzs/f6s2pAKyyrt7Y4JEe0Kl5T/Ww/O37ade9DQ/D9e/vsftdCIT9uTgvqcbll61BoFl3GYiOYUkh15E5WPJBeWp6QkIkzbemXt3nBajWtqL6x+xHKa99lYd279PLmUkpcBlyXk0MjKc/n8fXrASzPK5aI2DFIPtXauY2Vhr7iyjJ3gKqZKCE3muPVX3qQzcs8hUmWLQ0t7mKMDeQ3kYXsnn9JKYAzsPT/aHBFFSH/M9EnqGNgDVzwRambj7YoDnXO34wA5YVBxB4liWz2M0H0x0+EQXUBuN7kCCGuMDKje/ITX54py1hjY05qN3VIENZ5GkjtCp8rmkSmtek+wIUAHXHAPrI1ZD7344DVUQXx/FtzoNwyJe+Up+bn0M00N2HvnQwOS9GUlqEEECP/OTUvTZh3rl1vQEuxzo3OJOSB8MHGXNeBizaLBfD7dK0/70rWmn6mOy4fOxGxWzObL6J/KxNHP1DUB+ag362UNzFYVk1JOUXY=\",\"ww3d0kDQ7Ori7UzQlAQxMVa/Y2JcA9l6yJcFVY6GjRv4JfvehGCcbSCpCWUf00AQNbi5G9k/XZouss92kdF7fLc3a0B7ziMnHwP7X26vNe1Rg1mDNF+aNnuRSiaSPeNLucqD7h4hb6/HfOoD35z9pfNhDLus8bmu6J5sMwlSTxxFJz4jKe42XkU9nzeYL1M6DvOXas9NybSZql7whmM0dhvy8AdeVxgiDTWSfoB+/vlnin5k+vFHylgnQ/q+8q+5R9NoJ6uwzazp2zd6OT+P3vTZnH7+mRoImQnJDKQ4Ewixj+YZ4ZSTSyQB6+K/TpvWqHXHL92AzxeVhO5+ACuBG8/3kNVCYLRml0eR/2r5Xu3OtGPXCfQclVZHePBomLSj38KiXBzvl0f75dHb6kwensrDk/ykPPoMgZGclMzvPNqvyv3FydvqVFYHsqry6rg6OFucHR99Rko=\"]" + }, + "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/\"d95-mhLsYRFqFzf2Z43/PytNCuPuCuA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d4ae21b9-10d2-4826-af00-6d76a3f84f7b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:59.692Z", + "time": 194, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 194 + } + }, + { + "_id": "562a80804ca769f5a091eb78c89c4078", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 239, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "239" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"DeleteUser\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/deleteUser?_useLowLevelApi=true" + }, + "response": { + "bodySize": 732, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 732, + "text": "[\"G0MEAMRPm/mn6+T9Amgt88vNK26/lOJVxOIha5rJ2KQRJq6J8iSvnoXRFus+/xv9bICVGk1RKoWy12bJYN0E+Y0C50dXeAcDxwMn/hlZoFCNMO9TPTIMXoBpGlfH5sRjHWFWNGEcwwTzH6VwqnHy+wBKf1GX1DfYQnBQWCILfqUARw6bwnWQvh3CNYyAoBen0u3MMDjO44RN4drGW3yYYFbEsEjDMLiqhcDXUkWrBYsEiRZk6P9BkYVZ4OWl2963eTh23CStVAqL9k5ncJ8Qf/t0yi0aKP19Vy6RpbQoivWqFloiy1tHFdFYPw8+5VmZFfskt3sCVNG7Amhu1KngO+UW/qIuOzW16qlhRnssFGWvX/7IFK2bUkaa3E+eioXhLv5/ptVbYxNm/sIy+hh9mCwMWf+eY6GILM4vF5bbV35ILGhLvdvx5S6zoB3509FLZPnY/9bRjiwyi63Y+zY/g1Z0V9v2/8lBR6Ivan6+YnUPpc2/Xs9LPOUWPyMLhXzFQwJU0LEpBZI6SOn0ogMloi2K/bYd7H+iHt423+YVClZ855T8dBF1/EEu0MDBnPduicm3vtHsBFVVRUkWpsePKTcdFPzNdIfdSstUwXnA7Oj+nuZyncSPeUFVRRZB1ojKNURSfCSJSWeziq2v7rEpTCF9DM63vj4O/EXCzJI8R5j/5xN29wkcFM6Fr2CePlcoYZgK09ZD5CX2l0ixMNMyDBs=\"]" + }, + "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/\"444-a+4emqEpBQe/xk5JTsTk52UmQ4g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c199b7e9-a4f5-47c2-81b6-ab094a42dc41" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:59.893Z", + "time": 813, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 813 + } + }, + { + "_id": "d0d197b5b8d959a98d0ca19fd5b31b4a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2264, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2264" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"custom\":true,\"displayName\":\"test_workflow_request_type_1\",\"id\":\"e9dcd66e-1388-4872-9790-66df2f44deef\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:41.545487871Z\"},\"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\":{\"id\":\"testWorkflow1\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 940, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 940, + "text": "[\"GyIJAMT/puq0cm9GOZXKmNI6Nl8JCQIHcDo/fyzdr1T+f++qqegsLfrXVVCvaBRZHqnDCU54ZNNhzdfUgAY5sVX++B+0ggANaq7alrKi6vus7rsyG7ohz9pWjeVY14poBEc+hU89lBNBIFKIT1/Ov4/GfT15+rvxG57iz4KeCnD86odIKB4pxCuWHymQOJ48fUIUHGH+SpMMEH+Yu2lyFuLuD08TRQnxh/izIAj8i7wYCn3YTiGMgyNXRa8mmZgFQN6o5zJqZ+F8Qzilj6X2pCBGaQJx6LBjI3krDUT0S1I2BvEHq3DjrqybOHS41EHPDLHh/+ynQFQcKr8B2yLRfpxXXHFPGZxlo/O1igRzJZAShztAh8HsKJx5Oqy9SvsicQClBLt9Iw07282U7axroLVGmNPZzroa4P1TtaOOPY3629AMTh9byFOEq7GhCIQoA2xn/bQzdFj3coxREE4cfTmVuJFY23HMpIi7ZWtiTKyeFZv3EU8ftAwRiSPSN2rc2umyS2mWBAHjvvT6peh7of3PuowU3Gh3IpB0KUtlSkbSRGOXuAjk2VZbViVhIXOWNfAB5w7MaYKrkiXxC9OcBAb5LubQ4WBpojaFWtjb10Qrxk/LwheAiD0boxx7dP+rC02sHh8cshQquGvtkjvr7J2ih5dIwGPmE7UMkm05i9JHFhcae4YTEUZevLQmnU+yCtfcbli1Rz7JdTFmxs0CcXYppaEMDLJIeLeT+vIiOof/nfbIZFRsPwwGiQeZOWdIWqT+lYhX0J8QEbAdIQxno272RvNEMTLlmPnYEqbKeFj0K9oamDC9REoPHLmlrgVx95ce0le046cE8UtptLL0lXZpDMdEUSo5ooAjRVTdL6HMyzbLmyxvzotBNJXIi5Wuam/Bka+KiPgtdVbl52UpilKU/cpQlWVfVF1xi5QA\"]" + }, + "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/\"923-WiKXwmHHzpJ1l3ACQZsoMmurP+Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d2c1fb1b-a91f-44ab-be96-8b4d7d00e725" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:00.711Z", + "time": 2142, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2142 + } + }, + { + "_id": "d069b3cda2ae43b8a62b77ae54f31bba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/entitlementGrant" + }, + "response": { + "bodySize": 1415, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1415, + "text": "[\"G78NAMQv35lfvzuvQAqRjjBF9E1HiTaJerbkCI5cLa6l93dWpskAwAFBmg6QFSBLYPvGj+ULO+Vm5RbrfI0q4ua04m0aGA0JttHEsgkC6154ZSME6iTM+l5VDIlfmtFZUMdBICw3XKkA2WDpqspZyD8N/lYcFWSDeF8zJP77XU5UxQr+zP9R3hMCdSEGGD7TH/c7emWWKhpnIRuY8Jm3yXjWkCtVBhYwYW4je6tKyOgT55IM2cCCXvN1WicJmPDdBLMoORr9O34uyIGAriXAs860Ob52N3FNFZyllfN9gfTy8MbmLEBExKFz5hrOIiacbJRdKzgQGwPsXmd5eNGuvzQ/xcB2SGD2TfNTNPDzrprrj55X5o7QDM5AqtMrJ7iWIwWBCGUEzU9PK8OEU69WUQqis4BtKk8sA7W9P57LSWLbMWVWnRq7e4nnLacQkQUi30FN2ygd9l2ViSFRulvif9N8Vxt/f6oi0x0SBAmfKmkVGRPLSeq3wJ62tfLQKQwnZ2lYDjR2UP0QWkcqAQc2CASNcseXkgImvEtlNKTAoAasvE6SLicvbHsIET+7KOq/dev89ap0txqaevzx3XvKoQJ320na/JSuWXr0FIHKVGVEVQrJsnyJykeSC8spi0my7bEuEkB2u9JquAb3zOo9xTNcJ2NRugVzB5ZzLmWwyAI5rE+28lI4b/+7MmSmlLgNw/gbWThXsrLI9kqKK9gJKQBXQrwnucU/Xh5Ilsww67Il5so4LN2J1rXE++DkLAp8k4shcGSMFNirKullg+dWxQmlc9ephmxQq7iBRGfUHrrpqtPm4U3qTgrskRVmvN8Ce1UxG5+1UmBPtxtH7jXoSwDrMoGjjRrkQoa/hWwPs1adO/31naWKqnRrCGwT+3tIqBDM2lZsY8fozjXf3zqvibdU4HEDWPdcoJ+sGzGRq068rzmGyMd2FKCn4CdWHlm5qNSkNhuYyOvhSlxgQLXn+C2KjH6BrOpMuGSZ5+jLYbrnfKVQUIS8g4bEsQpmeSbQqKQRi7pSbtqWGJD7SYPgkl8yJG6Up59vS3vUFGDv\",\"nQ8FSNKfK0EFfHX8OlveIbN67kef8IVjNHYd2uEDbd6Ldkp3eK+hvb09ij4xPX1Kz50/z7av3lr7X+ielGz7EpaYNf3/TyentKM31fMXtLdHBQq8eNEQ4eXZRmkh7TqFzfPCA48hEwjmOXWBFzs57g12kAWSNdvEb/g+QP6ZqvBq89BbfCew7udXAtbFd06blVGLkj+a+cpIxiV10aCffCXw1/MN5KAnUJezi71RX/l8xz0HpE1lOVUEVq14Fqg4Kq1MJE2xKTP7KvS7/XGrO2p1R197MzmcylG3PRlPfkOg0ict8CNHrV631Z987U1lbyB7vXZvNBsPR73R+DdyBg==\"]" + }, + "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/\"dc0-vOexHmYBc0Mg9TASDrELUoBYmyg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3e6e3bb1-2b86-4ae4-be3c-fa4c7d1bd847" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:02.875Z", + "time": 200, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 200 + } + }, + { + "_id": "2963f0b2a422933bc578050bd2ac7764", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 250, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "250" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1904, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicEntitlementGrant\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/entitlementGrant?_useLowLevelApi=true" + }, + "response": { + "bodySize": 729, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 729, + "text": "{\"id\":\"entitlementGrant\",\"displayName\":\"Grant Entitlement\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/entitlementGrant\"]},\"workflow\":{\"id\":\"BasicEntitlementGrant\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.entitlementId\"],\"notModifiableProperties\":[\"common.userId\",\"common.entitlementId\",\"common.requestIdPrefix\"],\"_rev\":32,\"custom\":false,\"customValidation\":null,\"schemes\":{}}" + }, + "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": "729" + }, + { + "name": "etag", + "value": "W/\"2d9-fMIXrw11OakgAUhALwB76op9ekM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f3a22403-8ebb-461f-89b3-b53b069bf235" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:03.081Z", + "time": 650, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 650 + } + }, + { + "_id": "aa2b5e0210f577da9349fb2597b8cf1e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/entitlementRemove" + }, + "response": { + "bodySize": 1415, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1415, + "text": "[\"G7UNAMQv35lfvzuvQAqRDriMvuko0SZRz5YcQWBcLa2p9/9W5pO2Y1JAlMsNkBUgS2Bb48eywk65WTkVa/oq8RaQ8VwMvE0DoyHBNppYdkFg/c9cuS1DoFHC7O9VxZD4VzO6Sew8CITFmisVIBssXFU5C/mnwd+Ko4JsEA81Q+LX3+VSrVxBn/lXyntCoDVEf8NH+ul+Zy/NQkXjLGQDEz7zJhnPGnKpysACJryykb1VJWT0iWtJhmxgsdd8XdZJAiZ8N8HMS85Gv4+fC3IgoNsJ8KgrbY6vA05cUwVnaen8aCA9Pd7YnAXYiDR0ziuNs4gJV2tlVwoHUqPB7nlThyet+kuvrikwHRLMvunVNRlI0q56pT96Xpo9oxnOAKrLKydcw5GFQEQZTq+udyvDhGuvllELorKAdyqP3mi47fUxUzlZbDqmyqpTd3cv8bzhFCKyQOQ9avqW0mHfVZkYEqXbMf+b4n1t/OFaRVZu4jsUCJYyVdIqMiWGk9RvgT1928pdlzCcnKWJOVDEQS1EKEOpBBrYNBA0yl4uJQVMeJfKaFhRPrX3vCq6nLIw7SEivrdp+b+1c/5uWbqdhaZefnz3nmqowNl0kvbqmu5Ye9QSgcvUaERVKsmyfInKR9ILwynLSbodvfLKOo2hZKtxDe6N1WvKpzlOxrx0cyYNLOe8lMFFFuhhfbKXl9J5+f9bjkyXivswrGMjc+dKVhbZX0l5BT8hJeBGiOckN//Hiw3pkh6zqltirUzCUk7iNRZI9Q1OzmKBz4MM9xc6JUpkjBTYmyrZZcW9igtK5+5SDdmgVnENic68PXTTVafXw5vUnRTYIxvMTH4L7OF81kqBPe3WjgJs2PuztmweV6EF2djwt4jtYVZqeKe/vrNQUZVuBYFNYn+AhArBrGzFNnaM7tzxYee8Jt5QgfsNsO65wEhZN2IiV514qDkHX4Mc21GAn0KcWHls5ZBqUq8NdOx1d34TBFDtMX2LIqOfIJs6Uy5Z5zn5cpruOd8aFHiatTUkLlUwCyJtETMaW/i8rqybvk4M1P2kQXA=\",\"yS8YElvl6d+3pRNqCrD3zocCJOnPraAC4Tr+OVs+IrN8HEif8IVjNHYV2uEBfcMXHZUa8V5DJycnFH1ieviQHgewHu1gvbX2v9Q9KdkuJiwxa/r/n3aubEdvqsdP6OSEChR48qQhujzaJC2kXaewflyE4DFkAmGeUxd4cpTz3uAIWSBZs0n8hg8B8s/TCs+2EL3E3wTZ/fxWwLr4zmmzNGpe8kc/XxnF2P4levSTbwX+et5C9voCzTnbHI71p+rfRX2kTWUpUHFUWrlFep5mudZXod/tj1vdUas7+tqbyeFUjnrtcbf3GwJNPSmJHzlq9bqt/uRrbyp7A9nrtXvj7ng6mQ5Hv5Ez\"]" + }, + "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/\"db6-bRUvb1GaXSEnPTasMv7OjKBhqrA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6773948c-5224-44c0-ba55-113fe59042fb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:03.737Z", + "time": 218, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 218 + } + }, + { + "_id": "bb5d0a47a2da15a2ea69cc74d84da9aa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 251, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "251" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicEntitlementRemove\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/entitlementRemove?_useLowLevelApi=true" + }, + "response": { + "bodySize": 719, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 719, + "text": "{\"id\":\"entitlementRemove\",\"displayName\":\"Remove Entitlement\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/entitlementGrant\"]},\"workflow\":{\"id\":\"BasicEntitlementRemove\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.entitlementId\"],\"notModifiableProperties\":[\"common.userId\",\"common.entitlementId\",\"common.requestIdPrefix\"],\"_rev\":13,\"custom\":false,\"customValidation\":null}" + }, + "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": "719" + }, + { + "name": "etag", + "value": "W/\"2cf-7sKxQ4KZbSVDb2LA3+6v23wD3S8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5a464394-38fd-4c28-aa70-afaa10b43fde" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:03.962Z", + "time": 780, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 780 + } + }, + { + "_id": "f7229385697cdfdfa2a620602edb0dd6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2331, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2331" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}}}],\"custom\":[{}]},\"validation\":null,\"workflow\":{\"id\":\"phhDelegatedUserDisableWorkflow\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 984, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 984, + "text": "[\"G00JAMT/puq0cm9GcumMKa0j82WRIFAAVx0/7a96/7/GmXm7TkKSGjwLIm06EJ0u4Xo5E+t6HfiqMkG9rm6x78GbX8maINBUVabI0EJGypaBfLY2wZ/M4rYhcGgFgVKVM5rJXlaM5mU2nI1lNu33iowmxUCNpsNef9QHh3Xx0ildalkYuvGuIR81BYj3T46183+lcWuIFlpBoKmqAzK0kJHUYyB/oIlLn13Yz0wc355WED2OMK+olgGixdzVtbMQ7y2+a4oSogVeucBm52uB84ljye5o8+iT4GjQyVrsMyCg1HMZtbOvXwh39L/UnhREKU0gDh1ObSRvpYGIfklU7BAtLKXss7TO4tDhSQddGIoGG+Z3gxhwqB0UCBuilXg408UNZXCWlc6fhqTI4zWmxKE/wkNrThXOAB32K2kXEgfhJg520SENEbsNyk4POGAdAsz+7PSADcLSvjpVN55KvRE0hVPCmvQShMs4wghiolSz0wNZrw0dDrwsI0Bd4igWE4kVR9rim3eCImYdA7FMdpy913j6p2WISByRNqhh9aiAJ2mWBIEshOxnXzXabw9kJOMGuaMEkYXPlCkZiRPGifMxkGereQlUCpPMWXZFEDKjOmDXFFHncIl4oK4/QUk2egnl0OFyaaIWRWJmL9pPOkFdsPYIIvrNsXIo4P5XDnXu3VxeMQpJ/FknrtMD9kfWE50ikjLsrSKdRrIq91H6yOyCcUrFBKHqF17aQmOcZBWu0R5adYd4cb7TKIwrlDtcSqmWIVUWssNCUikfK5zY++OCLF4ougwjNLZUOGdIWpRXseLGKCdiBaAzIfnbXPFL80f22u5jRY62rVgJ0xqORRJkTZAAPWdKnxy7V10I4r1Nn8kJZyhYmxNZ14l2aQxHTVEq2USA9hOm/CL0u/1x1h1l3dFDbyZGA9Ed5ZNZ/w0cu2CJFfgh/aw/eOgPxLArepO8NxnMJoPJbPyGlAA=\"]" + }, + "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/\"94e-Am4gQ3kJWY+M6sCLNPbf5mCTaEc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8e6a941c-cecb-4ade-bf23-aaec7ee05de0" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:04.749Z", + "time": 2113, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2113 + } + }, + { + "_id": "a5bd3d8a5cd02e67e232403e3f8a2d61", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/modifyEntitlement" + }, + "response": { + "bodySize": 1639, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1639, + "text": "[\"G9IPAMR/fVX/6/f2dMkoNexsum87CPQ6l4KCNq9tNhKpkJQHVN63X+v9fo27M/+Qf5ja7Cxilkw0itYrFRKZR0ikRo3YWKxeG1cJDgiIW0b+EUZD4hHFl3K8ttHEdiICfSEwKGGJ16pjSLz6r3ro4KSw2nKnAuSIles6ZyF/jPjZcVSQI+KxZ0g8+jvPVVL5v+dHKe8LgdEQfQy/4kP3O3ttVioaZyFHmPCe7wfjWUOuVRtYwITaRvZWtZDRD1xKKuQIi73u/7zOEjDhswlm2TIZPj5+PsgTAT1OgHtfaGt8XHDihio4S2vnVwNpebzxKQmoEWTonlrjLGHCf1tlNwoHSKPBbl2XYdFhsFQvJDA8RZgDU70QA0TaV7V+63ltDoomOH2p51dJuDbPJAIWZQjVi6e1YcLCq3W0gvAkEJ0qYzcabTveElVSxYbnWFhtmu7uNZ7veQgRSSDyATXeS+m4z6odGBKt2yv/i+JDb/xxoSIbN+pdMBSeMlPSKrIkNi/SPwX2dG8rN81hNDlLG3OgVAeOEKEspVLIQLaBoFkO9VJWwIRXQxuNKipn9tZ/rCtZF4ZTQESfTSv/t/bO361bt/fQ9H/fvnpNJVTh3fAio17QHVuPylFoGQeNqEkjWZUPUflIdmHzklCibcduvLJBYyTZalzDe231Eek0r2OxbN1SSUNLKbUy0GQJO2xMivLc/zn832Ug0/0XjWFQxlaWzrWsLFK84miZOMH9A3VCeE9xy1+8OqEt6TGrtsWWSmqYo0RdA0Msb8GUbgU4b6hyAiAq1SRzo9QC64GtJcpf48XoslUPON/TOnc39JAjehW3kCjNRi2I9NeXKxVV6zYQuB/YHyGhQjAb27GNpdHlHR/3zmvie2rwaATWOzVYW+pWTOSujMeeKaiCduLGKxsbILmGknxVXwT0rxdtEK2NnLRkYzeU2U0wrCmTKoaMnjg0WE2NPZMyRfge0MYQbTS4rRWFFr005laU7VJDabNSLWkVFWzsk9TUyXHDpkbBhj8NBMmfslza/NBEHNV0dG5NqoTzNEZ0jRtStxcV6qETdsayIBqELPsu/OD9nSH8fSy4wa8YEjvl6c/3pT9obMDeOx8akKQft4Ia9Cfg16lpbtaZDFaRJudgXxhdRJwNwhcTt1mDmUf/fF0OgX3ZYDIZd8rTENjXmv4gHsf3rYnZ0/LpZB79kUYxl1Z/0A==\",\"vlxE6K4YSmmhrIHZqHKm0xOVXXFpXOllA3qWAtcurE75+ZpaC3p6c/3xqaAxCflDrP4EM6yBBPyJH7PbNJmbdfaAE+mPtR+KHlWryahX90KluYt+CNusycPM/h/ZVQvCLpSic+RFjhS3JjhL/qLBZJ5SZ/cPFpKakllnUfyMDxyjsZtQhB/wvuXQRKp9rTvojz/+oOgHpidPKFO87Ca2V/z677402MlNrDBr+v2bnk4vojddNqE//qAGZlQZyRlIYSYQYjetOqKwUnMkAetiWzRRLVt+myh07geM5Q7cCvz0vIOczgTG+jajkfxV7c9udqId2lag46i0aiMxQMt2912YVbPzvDrLq7OP0yt5einPTour84vvEBgHTPnnZ57l0yqfXXycXsrpiZxOi+n5tKqmJ9XZd6QE\"]" + }, + "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/\"fd3-YJoyl6pKpNqXZlcSgFXGR4LhZv8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b3faddb5-6bdd-4090-9dc0-ef0088186efe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:06.869Z", + "time": 204, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 204 + } + }, + { + "_id": "7290ebbef6eaf83e592bc8a5e13d561e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 246, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "246" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"ModifyEntitlement\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/modifyEntitlement?_useLowLevelApi=true" + }, + "response": { + "bodySize": 676, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 676, + "text": "[\"G1YEAMRPVd9pvf/SJISgUjYKGtM7hUDlZJ8LaRb5V06cC2VkU606j/bqr6S/0Q9sb5FehTN/sEJ51fNyuBlU05024b+FzDCIKD7P9QuXJR8eIpCHQlLCxMfhyDD4MGoIldJp2vJxSDC3mPzx6B3MPzSRA4+T3wYAjWyGhvpqK6JX4N3amNYC1YO+KFz6uF8O/hIGPNiHZ/n6xDAYT0eHonCz4y3iHcwtkl/jxDA4D5HMZamjWwuO0cdkQYb+9YosmIO7D5ZWlsqPO56yhu3jqGXWQd63pF+St5XFG0t/f27WxLGxqOvb8xBpTRzfzNTRGrtPB8nVo+ZR3eZ4PaeepjHq6AcCpPmog8ZPqyxkMzRvOi0ObuKGVE9jQY+p9GtjQ/vGm1nRo1cvvj9SdFvU+Tk3/4ApWBjAL/x71pe6laW6WKlOedlJa2ekvqWc0pSe1qc1bSuLH4kjKb3u/wDqltMpexLiBOWtJAb82qJuS3HrP9zEKEWWKk3BkW+cs7hN0qmB3KKBNVzxdk1ZFpm0c7TrKMeV6eFDqoiHNJ+ld6PztLo0zkvmme7uqB7WOcqxqqnryEJG7Zy8CSRBEiEmZ+rqHCDRoig4n73mAzKMB/4c/YljFk4w/9yyiVieoFf4H/kM8/S5QlZDP8wyHBJ3sT93ssO49XAo\"]" + }, + "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/\"457-PA94eMMJqkkp5L1PAU+K4jva5nY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1f04d32c-9aa2-4858-94de-d32c82ae4354" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:07.092Z", + "time": 682, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 682 + } + }, + { + "_id": "19c6699f7faa8d68682358b793f11755", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/modifyUser" + }, + "response": { + "bodySize": 1603, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1603, + "text": "[\"G4QOAMT/36vW1++bu8XyCZFLx7s9TVunFU3B5slmIoECKE3D4lp6f2dlmwyBkrYDAkWAisC+sRPypZyVW9S7qCrQWBTvYTQk7ii+48OrwB4CvRFW+E81DIl/k73owUFhf+RGBcgee9c0zkJ+6PG54agge8SHliFxv3d1dbJU8HO+L/lgCPR/GGC4TrxZv6Mrs1fROAvZw4TnfNMZzxqyUnVgARMKG9lbVUNG3zHAmZA9bEuN/6rrMgETXptgdjUXwzviF4OcCeieATzbRjvi5RQTt1XBWaqcn/+jl4c3OSUBwgEOfVNoOCuY8OdR2YOCA3JqYPc6b8OLHkZKxRkGtnMEc3gqztCAvw9NoZ96rsz9u4bQBM5AauszJLblQkKgJHQEFWcvm8OEM6+qCGB0ErBHJqU0CHg/fTUUENslNtaQBrh7h+cb7kJEEoh8DzVel3TRa1V3DIna3cnPoWiNfzhTkVHTgo6yISoUmjJf0iqymFuusl8F9nR9lYeuYSI5S0txwNiBfUKwyVMKHMjCD7TJPV+qCpjwb1dHQwozsff6s2pDLCwnSS+PTBBRVrhI+b915/x1Vbs7Dc3+4+m//1ELtfi0XeUUZ3TN0sNrFFTGbiLqU0g25EVUPpJcWK5JSYQw6eCVtXv9aTVcY3tu9SOW07xPxq52u+fRpZS8DLgsIYdGVl6Vz9un+zw1o6pc1IZB6q52ztWsLOyVqqzCTqgqpkoITWa43VfepyvkXgURly0VtJTDKjyQ1oAetnfwKX0U6AJ7z482R0QRxCcr+JLYBfbAM2+E2ll72+KE2rnrroXs0ap4hMRovR4G6GY02uEAPQK72eQOILQxMqJ6ExRcnCnLWV1gTzs29kBRVIRhrdBAs7pAzAAyDzKQw9oYQNQA5rUvwcGTvLs0JzpzHMi6SBeE5lDV1XU5D2HcOgaaTG2JVsX9kYLG4XIkbSKcUwkPwV7zQcVV8NxHR5jACagvYtc2+oKX5IK+/i64zu8ZErfKU/JL6WfqS7D3zocSJOnDR0ElQl74d1bamiqjCLiMAuxzo3MV2SG8MfGYlRCZ\",\"iqMSw2F/qzw15y40/Ux1XN3WJmaD0WC4jf6hTBT9THLok3fzs1xWwhzUaBTOCcruWS7vKCFocHn+ciCoTwKZCKtftRlVQrYe8GGKlVPD3rX8lH1jQjDOlpBUxu5PKCGoxOebjv3Dhakj+1yXGX3CNyeDEnTiLDPyLrD/5e5C0wmVGJRIw62psiepZODcEz6MP+YbGR1CvpnQYdizwDOnfuG87cIxK2MMl60ZskYUpJ5Iik5VJj5QPC7WRTWflxhuU9pm+0u1Z6Zkqsw0XfKCYzT2EPLwB6gDRFZ8y+ER+vnnnyn6junHHykjndyE6Sr/mnswdXZwDuvMmr59o5eL8+hNkw3p55+phIyZoKwAKcoEUl4PTTNCqQpbJAHroi4ta9Su5qduz+ODiQV2P4KPAp8930JOpgK9U7t4UPkvn9cg3QNpu7oWaDgqrTbwxIZikOGo4EeYjqfL0/HidLx4OdnI+VouFvlyPX8PgZ6rWOYPLk4n49Pp6uVkLSczOZnkk+VkMptsxov3SAk=\"]" + }, + "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/\"e85-PiKhy3L83NO0MR0yR39NEKACiwE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c49830f3-b69c-40c4-b860-ba3433f83781" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:07.780Z", + "time": 212, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 212 + } + }, + { + "_id": "80550ff6678ff7a837f81327ddd0cf3f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 239, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "239" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"ModifyUser\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/modifyUser?_useLowLevelApi=true" + }, + "response": { + "bodySize": 724, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 724, + "text": "[\"G0IEAMTKpvX6zvUFoKwSF35y8byc5drCMNhyQOyMtIll4pooT/LqWRhtse7zv9HPBlip2cqFstdmyWDdBOGPgmfqjNDDoaL41NufygKDboR5n9ozw+EjmKbxsnZ7PrcKN6OL53Mc4f6jFi41Tn4fQB12bU19gy0EG4OsLPiVAhzZLAbXUY7DKV7DCQj6eCrdTgyH7XQesRgc23hLiCPcDI1ZOobDVSsEfpUamj1YJIp6kKP/G0MeZoGXly7rMJRxe+AuWaVSWGzobQX3Cfo7pH3pcYHS3+/rrCy1R1XNV61QVpa3PTVEY/10Cqks6qJaJ7ndE6CG3hVA68+2FHyn0iPs2vqmplY7dsxoj4eh4vXLH4WheTHKSGP/k6fi4biL/59r9Vbt4sRfWM5BNcTRw5H37wMehjwuLjPL7atwSixYS0O/4stV4UErcqdjs7J87H/b04o8Co+lWoehfACtuFxt2/+nGxuIPrXsfNXsHcpaf72dsu5Lj5/KQhFf8Y4AFXRsSpGEDlLaP+hAiViPar0sef1P1MPLEoayQcGK75xSGHdq9Qc5PwPHctG7rCkMoQuslU1DSTLTkydUmg6K/Wb2gN1KeWzgPGDu6f6e5nKbJJzLipqGPGKsEZVriKQEJYnJ3mYVW/PWWAzGmHLpjtBuT/xF4sSSAivc//SE3X0CG4ML4Su4Zy8MOhimwg3tSXmJ/SVSLNyYT6cF\"]" + }, + "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/\"443-fR2ODOHdeIf5xpdrZt2vawLFr38\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7a936b5c-2a22-4503-8a84-f5c590dde328" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:08.000Z", + "time": 786, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 786 + } + }, + { + "_id": "86f530aad6790f246058a707dd7c654f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1853, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleGrant" + }, + "response": { + "bodySize": 1403, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1403, + "text": "[\"Gy8NAMSvfbO+frveiREzVuxEZLauSOgk3DIwQdbmWFxL7++tbJMBgAOCNL0bIClAVkT2jZ0jEMLNyKks10sNS+unwH6zhdGQCN7yi6BcgsBkhGnfq5ohUWJn+uwtQyCutlyrCNli5evaO8g/Lf7WnBRki3TTMCTu7Z3vTbby/8z3St4WArMf+hjuE++q395rs1LJeAfZwsTPvMsmsIZcKxtZwMRXLnFwykKmkBlvPGQLN1LZ133tJWDidxPN0nIzvD/8TJAjAT0vgGszaG183WDigip6R2sfdv/oFvBGliLANqCheV5pnHlMPNsqt1E4gBoNdrdnY7jRQ2fp1VMKbI4RZsf06ikZ8Pe6eqU/Bl6ba0YTnL7U9GcSruFEImBRhtCrpy9zw8SnQa2TFoQXAW9kRm80BLh/bGQSd4VTFuNgpWl5u8cE3nGOCUUg8TVqvFXSdt+VzQwJ66+Y/0zxdWPCzVOVWLmR76JDYSkjJa0Sc99wlvgtcqBbV7noHnqTd3QgDhRx4IwQytYpBQ3ksA9Uy7VcCgqY+C7bZFhhTu3dzro2SUWFA1kAIvrqoOX/1pUPF2vrryw08fTju/c0goVPm7OkV0/pgrVH7VFwGSeJKEklmZUvSYVEemE4Jy0RocsmFgjdbUmncXXvM6cfsZ3mfTiW1i+fu1ZKiTIQsoQBV6Z4ea6eeyiXjkxXi/owKF3K0nvLyqH4K64t4ye4jqkRwpBxfvmPV+WomXrMqm6xoxIJc3Qgr6EIx+tsKSLgMwwfIEcOloguwrrT+AHr/UVuIFs0Km0h0TsMD6103VvE8DJ1L0cOKEFqLL9FDvAtZ8mRA11tPZlIG07JuI1N4Aw826kYzcaxpuSN9m8Fb5nGNmajNml6am+lkrJ+A4Fd5nCTpZ2nZ3Tvgm+ufNDEO6pwt8XSulTY4upSTOK6l24arvohgrf8juslh7g1TQW+QZ5XfP5Y8EddXoFH4mIvYy0dHQjkW0MoFkmUhFNAwl21sHUp505euKUnakicqmhWnzNY6DFk2dRWt3t2Zpf5Dd9EyD9pqFt3fHc=\",\"8T8YNvxc4FbAQjFe0iL6HFYMiUsVqPiydEBtBQ7Bh1iBJP05F1Qhy4Z/pyt7ZNYPTcT1i0qFx278A2+YC4FdTVxPoYODA0ohM92/Tw9DnFsXfnn/arel7FaGMMOs6f9/evnJbgqmfviIDg6oQoVHj1qiy7VL0lS6TY7bh1UmHUEmEuYJdYVHe4UfP7mHIuB8eue1WRu1tPxR1Ja4Tv7H+da9zwX+Br6EHE4FJlJ2iOPyXx7fRXICpMvWCtSclFanRvAUknR/j8KwP5x2+pNOf/J1sJDjuZxMu9Px4DcEJlniKt9m3BnOvg5mcjKVk3m3PxoMB+PZaPAbpQA=\"]" + }, + "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/\"d30-+YcchD7r1fHa9+yZgvanLgKXzQs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5f89d2bd-b5c3-4c5b-936a-099d8562a527" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:08.791Z", + "time": 206, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 206 + } + }, + { + "_id": "bc50e1cdf1a6ebfffa4a4fe5ad3fc318", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 243, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "243" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1897, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicRoleGrant\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleGrant?_useLowLevelApi=true" + }, + "response": { + "bodySize": 674, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 674, + "text": "{\"id\":\"roleGrant\",\"displayName\":\"Grant Role\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/roleGrant\"]},\"workflow\":{\"id\":\"BasicRoleGrant\",\"type\":\"bpmn\"},\"uniqueKeys\":[\"common.userId\",\"common.roleId\"],\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"notModifiableProperties\":[\"common.userId\",\"common.roleId\",\"common.requestIdPrefix\"],\"_rev\":27,\"custom\":false,\"customValidation\":null}" + }, + "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": "674" + }, + { + "name": "etag", + "value": "W/\"2a2-dOa5AjEK8YrMnUazKdU8qYzmhRA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4ffa5d7e-019e-4aa4-8f8c-d10231cd812b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:09.004Z", + "time": 806, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 806 + } + }, + { + "_id": "514c7daf7438d09068cfc636df2238e5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/roleRemove" + }, + "response": { + "bodySize": 1415, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1415, + "text": "[\"GzINAMSvfbO+frveiREzVuxEZLauSOgk3DIwQdbmWFxL7++sbJOHMSggStPeAFi9GrICdgT2jZ4DFsLNyFkMrs4vplnWMfxqC6MhEbzlz1z7S4ZAb4Ql36uaIRHkZ/rsLUMgrrZcqwjZYuXr2jvIPy3+1pwUZIt00zAkHu+dz06miv7Mj0s+HAL9H0YYzhMfrN/fa7NSyXgH2cLEz7zLJrCGXCsbWcDEVy5xcMpCppAZcA5kC1dS89d5HSRg4ncTzdJyMnxE/DKQIwHdM0BgU2hXfJ1i4roqekdrH+b/GBTwppUiwDigYWBeaZzVTDzbKrdROCCmBnvQszKC6DhWevWUAtsxwhydXj0lA/7eNa/0x8Brc/2uYTTBGUlNfobMtpxIBCyjE+jV05fVYeLToNYJYHIR8EcmqTQEBH98NVQQ2ykW1pQGuHtK4B3nmFAEEl+jxvsl7fdd2cyQsP5Kf3ZFY8LNU5WYNC101A2RobCU6ZJWidXccpb3LXKg+1cF6Bymkne0FAeKOLBPCGXylIIGsvADHXItl9oCJr7LNhlWmKl90FnWhlRYDlK/bpkQUVG4tPzfuvLhYm39lYXmnX58955KcPBpO8t/9ZQuWHvUHAWXsZuIxlSSFfmSVEikF5ZzkhIRpm6Ccn5vMJ3GNbHPnD5hOs27L5bWL5/HV0qpZaDKEnpo5OW5eMEhPOSjG+ViUR8GoZtaem9ZOfgrLi3jJ7iMqRFCkdl++Y9X4Yzec4hU3eLQUglzdCCvgTwsb6yliAqfYXhKjhxQKdUMmp1zp/ED1vuL3EC2aFTaQqK3EA9DdN0bxvAWdS9HDih+3qffIgffcpEcOdDV1pOJtOGUjNt4xtO8ZVIxmo1jTckb7d8K3jKNw8xGTdP03N5KJWX9BgK7zOGmnXaRntG9C7658kET76jC3RbL0FJhkqubMYnrXrppOOqHCN7yO66XHOLWNBX4Bu28htsK/qgDLAhJXJxirKX1gcBdbygWSZSEMyLCXTVwaCnnCi+Y/wwNiVMVzepzGxayTFg2tdntn53ZZX7DNxE=\",\"8k87NKgLIFj8D8pNPhe4I7DQjJe0iD6HFUPiUgUKviodUFuBQ/AhViBJf84FVWhow79LlD0y64c2EvhFp5JjN/6B982Fml1tuZ5DBwcHlEJmun+fHtZxQV24Lf2LPZyyGxzCMrOm///p5Se7KZj64SM6OKAKFR49aomuwC5Ji+k2OW4fVk3pVDKRMM+rKzzaK2l/cg9FwPn0zmuzNmpp+aPndcR18j9Jqat9evC5wN/Al5CDoUBfyi5/L//V9Lu09nTZWoGak9Lq7AieSZJe7kkY9ofTTn/S6U++DhZyPJeTWXcxG/6GQD9LSuQ7TjqDfmc4+zqYy8FIDgbdwWQxn/Rns8lvlAI=\"]" + }, + "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/\"d33-xWHe1SyUDx7MZBhUi+Xps99Vx+0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "731d9eb8-69b5-464c-8ea1-9f9cfe0320f2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:09.814Z", + "time": 210, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 210 + } + }, + { + "_id": "fa39344a9d10a65f8890b534fab125d6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 244, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "244" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicRoleRemove\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleRemove?_useLowLevelApi=true" + }, + "response": { + "bodySize": 677, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 677, + "text": "{\"id\":\"roleRemove\",\"displayName\":\"Remove Role\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/roleGrant\"]},\"workflow\":{\"id\":\"BasicRoleRemove\",\"type\":\"bpmn\"},\"uniqueKeys\":[\"common.userId\",\"common.roleId\"],\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"notModifiableProperties\":[\"common.userId\",\"common.roleId\",\"common.requestIdPrefix\"],\"_rev\":13,\"custom\":false,\"customValidation\":null}" + }, + "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": "677" + }, + { + "name": "etag", + "value": "W/\"2a5-3iXZCIWoKEj4xZQwzAlOvJ00lIg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3516932c-d891-41ab-82e0-c161724c7db9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:10.046Z", + "time": 789, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 789 + } + }, + { + "_id": "5675a945c772f7ea5e295b660bedacdf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1902, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9c10b680-a790-4f73-95ed-81b345f0f3e9" + }, + "response": { + "bodySize": 1179, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1179, + "text": "[\"G3sIAOS06fenqzVnJnLpu7/04jLOY0UgMmZbxPxf7vmxn8qatvk2tmhtCqzwtDWBxrKJYcD9gArs038JRpjNNR6t9a8p6onUB5BuesCabgQR7k9PWGmhaxpU8dipox3BZmxbv8EE482dIEInt+IOTFD96q++j3lbIcKnW7+xtnVWdd28XtmxU9/Zq3k8MfbOvK0s8FnSPN7ABLYInWbaIT7ASEH4uUHg9ViWCbb8gsp4at+pp7ZpL+khwTlBXz8XH0AvaR07xMc5QZtpqTvEvx63dGi2V/60bANiS8tOAyqw44PcDCCfPnbqa7oR2xoT3bFvtoOlTmxDpda8XmswnftG1rYOE8wVIgTvU6q+YKCmUSev0DvhMFgelMg+2GBgghwOASDCB2XM65UtJaJExpvtGBAf4H3/2HWHKOQEW2s7DYj8nOC2VSZYevP3fV7LfE/LFxUm2NaPntJ6pZQcSXiyOqX63bq8gYGa5Mx99Hm9wgQmMcSpPkCU0iGOftB5/jNCVEhNBk/VomuGozY2YdBOYVCaiKx0WVk4pzlgdJnCnPaDvtkOVtLKUhngyBecodTZ6qaVw6a4Rq10wlCyQ8mldEaH7JynyB/b0dm2axUWKwHPPetlmpeUFwpSoPzI50fBRrLeeJdJZPTJetQpJMy5ZZS2Fu2CED44iv6yU2cJY1JrV6UKK5RCFa2bVxiaJtQ1CfSqEFoulGvS5FIDJf+c+pUGYyp+fFVQeoXB559/2akLLpLNUktvs0HuckItecMglUdrHVdGWU9BUftvT29Y8qK5PyIhtbNM83rFVn5PXqHkpVTKqqCpzaE2tWEw1NBQFTyTCbJYSvjy2MfcdGMFMW30onqlNMHSDHo9Uqckokg2CNN4qRylI4G6qoq5GYO5qSKSs8ERJ+kPVTtdytsx2NiYIxsaZwJi8u3SRPXQLhfdAGUzOfhsCoomM2rLA+aSBUrKptrKZTCKlvGL233rI61DI8SWbW1zv0E9qG9o39OV9G6rRj8Av5tL2UtjDFbSCrXXHFPNGZukFEzItgaC859zfh5a\",\"BM/Wc0wucNTNKQyGKnqRlTaNN0UBJviv00uIUk9wo5FqGgniA742rv84DYIIkkuL3CA3P4sQjYqCX4Izf8L0Oi5Q+BSJUv0sVeQuanlR2jmlpDd/wnkC\"]" + }, + "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/\"87c-5g0cEb5SYH8hpcaPCADaPvca2MI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "be2ba7d5-a1ee-4981-a401-75abb18ddf2a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:10.842Z", + "time": 839, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 839 + } + }, + { + "_id": "06264ee08298ecf69c3d62fbf0e2d6ef", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 111, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "111" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 111, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 111, + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\"}" + }, + "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": "111" + }, + { + "name": "etag", + "value": "W/\"6f-oSLp8if86J43ZUpsMr9d2NhV5Gg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c795f02a-ed30-4de1-9718-fe6d6c523995" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:11.687Z", + "time": 961, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 961 + } + }, + { + "_id": "9ed5ac93b6819d13adba45faac8acf87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 134, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "134" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 134, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 134, + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\"}" + }, + "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": "134" + }, + { + "name": "etag", + "value": "W/\"86-KtZex3brHE5gcT3JI3NBqTElUD4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b138acfd-ebba-4e22-a9f7-59dfce8bd104" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:12.654Z", + "time": 1006, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1006 + } + }, + { + "_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-39" + }, + { + "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": 493, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 493, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:11.84Z\",\"createdDate\":\"2026-02-24T00:52:45.670896494Z\"}},{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:12.808Z\",\"createdDate\":\"2026-05-05T19:15:47.479446797Z\"}}]}" + }, + "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": "493" + }, + { + "name": "etag", + "value": "W/\"1ed-PfygS63cg41sGHjI7qqqi/PIIyg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "49eb64d9-17bd-44f6-9985-cb98701bdcd1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:13.665Z", + "time": 153, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 153 + } + }, + { + "_id": "2fcbc93d1efeb09e7b2986e776b477a3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 291, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "291" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1901, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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-05T15:56:25.363709073Z\"},\"name\":\"test_workflow_request_form_2\",\"type\":\"request\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9e3fc668-4e96-4b03-9605-38b830bea26c" + }, + "response": { + "bodySize": 343, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 343, + "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\":12,\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:13.952Z\",\"createdDate\":\"2026-05-04T21:59:00.455683732Z\"}}" + }, + "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": "343" + }, + { + "name": "etag", + "value": "W/\"157-qIon3K0LoSeXD7sANKaQKJWpkf4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "365eaa13-1272-4423-be06-1eefa855be87" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:13.822Z", + "time": 878, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 878 + } + }, + { + "_id": "4434219d6128b83e5bbec4891205cafa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 111, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "111" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 111, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 111, + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\"}" + }, + "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": "111" + }, + { + "name": "etag", + "value": "W/\"6f-QRmStkQydV4b5IV4PEQRFDMIuTU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5e29fe80-5276-4810-a084-ce02f5f475cb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:14.705Z", + "time": 974, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 974 + } + }, + { + "_id": "4df09fd95d47de66dd6d0795fe395331", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 119, + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\"}" + }, + "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": "119" + }, + { + "name": "etag", + "value": "W/\"77-07OegBQSrUNJEGpAPb38PxC3cDA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c0d006cf-7e18-49c8-96a8-46de58e5d0f8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:15.685Z", + "time": 1005, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1005 + } + }, + { + "_id": "9c309eaab8228619458bb0721d2ee870", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 119, + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\"}" + }, + "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": "119" + }, + { + "name": "etag", + "value": "W/\"77-/wfJPwD/QJWdqD3F8lp8ZhFFC+Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "adda6e8a-061a-4b78-9634-1c4fa45b67e8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:16.698Z", + "time": 1002, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1002 + } + }, + { + "_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-39" + }, + { + "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": 707, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 707, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:14.913Z\",\"createdDate\":\"2026-05-04T21:59:01.060154113Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:15.921Z\",\"createdDate\":\"2026-05-05T19:15:50.487141359Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:16.868662522Z\",\"createdDate\":\"2026-05-05T19:53:16.868660618Z\"}}]}" + }, + "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": "707" + }, + { + "name": "etag", + "value": "W/\"2c3-MdDTAA40J0VhG12oytqC9PFjKIc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7bc3de66-9e74-445d-922d-d9b9ca28a3fb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:17.707Z", + "time": 157, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 157 + } + }, + { + "_id": "5a071d07f87c3556a079059b430da0ba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 3700, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "3700" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1902, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/c385b530-b912-4dcd-98c8-931673add9b7" + }, + "response": { + "bodySize": 1787, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1787, + "text": "[\"G6cOAOQ01Xp9ibliG6eJ2U1qS23a3WMZxTooVCDJzgWG/ndNS8KY6iqZ5KfMqgPgMj0/INIA6Kpm1M3NOEAjT8g9ym3WM5qUAQaH8+knKOGCoIbL/R4LXeFhohEqmK8vCWoYaQzxYqggD6Lf+XLuhgI1vL+vihW6YlBQVjBXRxPUJ6g3kH1Ex7gc+r6CIf5Hab616JLGgBkGPD8HwVJBO4wXUJ+AjlRmpKsN5eUQMtSnlnCy+oFbnu27TI876vN61XDtPGeXw9TN3VDezHsaV5sbTXnwpkw0fw79gbazVGy12tyQnlB6xbJU0HbU5wnqH6ermOJLfuiHGeo29BPp6e8+7sZpZq/DBUEFXYYagpQi5UioSDrU2Tv0IhrUrfcxBZdSa6GChTnsBjU86Y5UkEB3vGKoTzD6/nnLBLWQFQxtO9EMNV8quBgyLNFF1Xl3pIJh1aE82IdyTkvkeAzUp6WCkUJ+U/prCUD4bvPYlXOooCIGPT3GE1hSV6jn8UDL8lOun8KstHMkPeZMBrXmFt1OtajIeyInnOEOlkp92V6G7Zt0pLyL0qOW0qNuKWFQu4TZm+CFl85ZPbk+HMYifJAP/2EqOnOe0//QfqjvR1YJmULrFYoQPGprPEa+s5io3QXbJt8qP7V4dBG6nnV+BON7k1ym1jgSmLmJqKPU6DRJ5DsVjW2JK9VO4AkXgdGr0PUGGL9VpPwClmWml2ilBobPSu6OXT6Evrl2M3a5HwrV1F3/jK1fE2XKrB1G9vAwsInGI42sU4dyM7u+SRWjNa10aFtrUJsQMMpkUQebRfY80U5NRQ+o76kErjKW2JgSitIYQg1vewoTsf7h80kzux4Oo/xOqKAWrjBQw6910/zD74immTZ3mmZ9p2nySS1Ns7nzo2mmM/x5q8ctk9TLn7BY9Y+sbbOwMRBSEBq1yhFDkjuMPLchc8ujtpPirU8HT/oecksxeEFohBaoc7Dod61CHbKRnKxWyh+4owiuKUM4UX7o3OHLl7oFpFm3W/aE5oVGHV3oqr/uLqpiPxy5pinHMN4OfNnYLRY=\",\"n2jvVhTLUKC61o2mNGW7TUOZhp7O+uF8vQKUpflq/pnNQ72q8Mo28AN0LVtT7O/WLbYKkfuxU1MYY2y7ZR/2w5UQFTP9PzPH477gpN6GLbKzbn404npI0364Cr0UACMJKFLT6kXKk8inXSbPVvbFLJRr9VLOAk4I3MQIOCnABPAl53bLOupWh76/ZlWWvVg3s06r61jP++Fwvmdd+DHXq0wsjMRC/5c/VLMyFGzjMntIc3ekjVYJzsA05SNNyVLB7wcQgCNv9qYQVGAhne9fP6Q2HPrZmSKPIjvkfkBFVyjeQBwY4OPVAI8U/ng1IN587fF9+S4/XZuCZqsQ+3zi+6Bs2MkC4xhyrzdpuBPJ+IBc2IQ6JIXBCIfaCKmC0ilLOaUKvAUohaVJ14+sziZG8h510g61ayX6xCUKm4TXyZvgaFrtwxzGmT0M8+49GOO9CAZtSA51TBy9CBaTiMJY8k7JNHkgCW7KAD2SCIJgpavyDBViK3I+Kpl/ZDRvkoR1u8wV+hwV6lZFdF55NDFq6bwKwprJHUVwsyUHlQzOKuHdsvQC2UTCazTRatRGBoxRcIzeB8UTOa4cLD+XOP58STkTjeIYvZCoc8roXXLolbA7FXL2cQcV/B7pCLV2FVzQHHKYQ0LSaMhd25FYj6pBcmmRG+Tmo/C1UbVwZ5zvvkP1es/9wXc0KCQK81HYWtta+jPjhOFGCPEdlgU=\"]" + }, + "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-9x+qCL5OH7LtzwoO7b2nibqW+OQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "54f22270-5f70-44dc-8697-5f3a41d13731" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:17.870Z", + "time": 854, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 854 + } + }, + { + "_id": "1f27c1ce4d9a727d6aadd21b9224a0a9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 119, + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\"}" + }, + "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": "119" + }, + { + "name": "etag", + "value": "W/\"77-/gOQXuxUFdUfn9PFUc5/Gky8GvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "46dbc61c-edb7-4008-adac-fdb8d2682b4d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:18.729Z", + "time": 984, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 984 + } + }, + { + "_id": "88afc99a57fbe6fedc0eb779598a8128", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 111, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "111" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 111, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 111, + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\"}" + }, + "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": "111" + }, + { + "name": "etag", + "value": "W/\"6f-oGS7SnyB2OvJd+9DW9OVdAYyLGM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9df57216-1b84-42bf-b201-7a7a155ec9be" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:19.722Z", + "time": 1028, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1028 + } + }, + { + "_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-39" + }, + { + "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": 478, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 478, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:18.885Z\",\"createdDate\":\"2026-05-05T19:15:53.544031372Z\"}},{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:19.898Z\",\"createdDate\":\"2026-01-30T18:27:54.68190238Z\"}}]}" + }, + "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": "478" + }, + { + "name": "etag", + "value": "W/\"1de-e/7kxRSSiAMPbXpCTtiRLtQn/Qk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "43696f93-5444-4bb4-bba5-64fe34153532" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:20.755Z", + "time": 165, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 165 + } + }, + { + "_id": "ea2378b67872d4e242544baaa0b13c62", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 317, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "317" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1901, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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-05T15:56:18.343008411Z\"},\"name\":\"test_workflow_request_form_1\",\"type\":\"applicationRequest\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/fa1a5e72-d803-4879-bc2a-07a5da3d8ee9" + }, + "response": { + "bodySize": 369, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 369, + "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\":12,\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:21.067Z\",\"createdDate\":\"2026-05-04T21:58:55.352331941Z\"}}" + }, + "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": "369" + }, + { + "name": "etag", + "value": "W/\"171-klNRBtlvYJcao0F8buud1djUgsw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e5bb0ded-7784-4133-baaa-6047e6209b1a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:20.925Z", + "time": 816, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 816 + } + }, + { + "_id": "4b24e059c5b49edb17d5eaa2a5c8a4aa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-pHMpP9vBc9DcKnzRvGSzAAaK/As\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1fd16817-27f8-49f3-be3f-a85b69192c7d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:21.747Z", + "time": 1015, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1015 + } + }, + { + "_id": "c6285c61cc9648495aba3ee971afa4c0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-eh8y8eTckjmCrL+hTtwjgCMnuow\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "07348be4-6ed3-4a2a-b03c-c4df348ef2c7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:22.784Z", + "time": 987, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 987 + } + }, + { + "_id": "34ef2b198509ba2b9144269ede68d7fa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-6I3woRgSX340V/lkyoixPelf1XU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8595a1ac-7939-4db1-abb1-b4982f3b7e09" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:23.777Z", + "time": 1004, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1004 + } + }, + { + "_id": "e1eab05886f7920090b28656ef217ef1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-lJ8cLlCTOr1sxrR78IlbtGFkv0Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "438b3888-8ef0-48d0-9639-017265f57845" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:24.787Z", + "time": 1006, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1006 + } + }, + { + "_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-39" + }, + { + "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": 929, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 929, + "text": "{\"totalCount\":4,\"resultCount\":4,\"result\":[{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:21.9Z\",\"createdDate\":\"2026-05-05T19:15:56.544086541Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:22.941608679Z\",\"createdDate\":\"2026-05-05T19:53:22.941605889Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:23.941473752Z\",\"createdDate\":\"2026-05-05T19:53:23.941471057Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:24.937Z\",\"createdDate\":\"2026-05-05T19:15:59.570991389Z\"}}]}" + }, + "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": "929" + }, + { + "name": "etag", + "value": "W/\"3a1-Gavdx2ehVkULVGbxPNug/NmKuRk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b1452973-5de9-473d-a1e5-d87e8b161712" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:25.798Z", + "time": 162, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 162 + } + }, + { + "_id": "93b630b29e448a6cf078eaf45fc8d31e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"1e679adb-451c-4aa8-8c8c-cda5ec93bdd5\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:30.380227085Z\"},\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event/1e679adb-451c-4aa8-8c8c-cda5ec93bdd5" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Cannot find event with id: 1e679adb-451c-4aa8-8c8c-cda5ec93bdd5\"}" + }, + "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-4KFiaUL+2AOeXR04DfpnkdYXfDs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d2be32f3-f2d7-4d68-a032-bae9e3ba8cf7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-05T19:53:25.964Z", + "time": 170, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 170 + } + }, + { + "_id": "b82a6cac41b1001f8b5f72a8a41303eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1921, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"1e679adb-451c-4aa8-8c8c-cda5ec93bdd5\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:30.380227085Z\"},\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_action=create" + }, + "response": { + "bodySize": 744, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 744, + "text": "[\"G4YFAMSvpfqna+adwRFqsTglv7SmwWJxcEH+sJLj0TD/1wT5p37vAM80IgET5HpFaYkt2tg2HG/g03g+22wEtUcRvYrzdJu/1FkLwpD/A3pBMEeCBlPi72Pcu8N4VhDQ+EboBbOJChqzOSgIzCaWDyhBdV2FLMCXE0FjjMM9JY5G1kAW+PvgLugFzh+YIvSCMUL/XjCMgY0PAo/70CeOPmyhMSWKq6j9mdXg+QKBLHbUZz0Lqh/9+QM0DHLOYkEYuUctLAW/0R3a+PR/Mge4KQ7kmBuZM67MCT7UAVMmU+uELBlP/iOpP3u+h15wiuT8gwFiQhaoV7YmRwxpgIJt6GlyyK5orTayOhU9RVx1ALUWxDPBDp1JtkxI33fxZbD0QPZlYNpSVDbmVRu/ZfRNE4BA2c0DH7G6W7YdqHPOf/PfLJDZcQ805hJZwObD4E9T/y18ocRXNFPgq5dJAQrs+fJlIr96ShQh4C00BqpV3Sojb1RnZW2KUm6arpLV2g6tbbvathYCR2JjDRvoBakMHkz2iWGCRlmUrSwqWTRfVKObVlfFqloXZXlTrJtfyALHiV0GwQCH6INwU0Z/PrhegZVeQWDZnPiYCPxM4Z1X8z9ESqwXpkOhBton2OspUbwuXFU2Q9fJtmsbWbu6kRtFtXSd3Shnaju4FgJH4w/C998yJV4N4xECyYoahJkqhF798vndF0r8NVFE/iuQ2PCUoP3u+pkg0EeaoVUG\"]" + }, + "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/\"587-TtGsguDhtLGYdHaOYg2gutjwTZw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0114b769-6291-4140-b266-33b553aca07b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:26.141Z", + "time": 597, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 597 + } + }, + { + "_id": "f6f3033106e49705865935afa29e0545", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 801, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "801" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1941, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event/c87b0605-03f6-4372-9ba6-e0f43e0b3bcf" + }, + "response": { + "bodySize": 811, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 811, + "text": "{\"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\",\"_rev\":20}" + }, + "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": "811" + }, + { + "name": "etag", + "value": "W/\"32b-pw6DUCQZjbgH+VAsCAZPDpSOjOA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "aaaf5231-36e4-44c2-bdc0-4d2022a6558e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:26.744Z", + "time": 1002, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1002 + } + }, + { + "_id": "27280e858bd630a949d956a9e9a7843e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"f168e34f-3ae9-4db2-b210-5f9176b7a008\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:32.632271486Z\"},\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event/f168e34f-3ae9-4db2-b210-5f9176b7a008" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Cannot find event with id: f168e34f-3ae9-4db2-b210-5f9176b7a008\"}" + }, + "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-XBfpAC2170QH/pM8av+9/rqyNx0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ba068fb9-fc14-4802-adee-e6934c34a710" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-05T19:53:27.752Z", + "time": 166, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 166 + } + }, + { + "_id": "9d3a6708aaa25790b7ea1d436a0a7229", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1921, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"f168e34f-3ae9-4db2-b210-5f9176b7a008\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:32.632271486Z\"},\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_action=create" + }, + "response": { + "bodySize": 744, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 744, + "text": "[\"G4YFAMSvpfqna+adkWNQccQp+aU1DRKLgwvyh5Ucj4b5vybIP/V7B3imEQmYINcrSkts0ca24XgDn8bz2WYjqD2K6FWcp9v8pc5aEIb8H9ALgjkSNJgSfx/j3h3GcwUBjW+EXjCbKKExm4OEwGyieoAC5XUlsgBfTgSNMQ73lDgaWQNZ4O+Du6AXOH9gitALxgj9e8EwBjY+CDzuQ5c4+rCFxpQorqL2Z1aD5wsEsthRn/UsqH705w/QMMg5iwVh5A61sBT8Rneo9+n/ZA5wUxzIMTcyZ1yZE3yoA6ZMptYJWTKe/EdSd/Z8D73gFMn5BwPEhCxQr2xNjhjSAAXb0NPkkF3RWm1kdSp6irjqAGotiGeCHTqTbJmQvu/iy2DpgezLwLSlKG3MyzZ+y+ibJgAB1c0DH7G8W7YdqHLOf/PfLJDZcQ80ZoUsYPNh8Kep/xa+UOIrminw1cukAAX2fPkykV89JYoQ8BYahtpyaGVdSEltUfVlU9xs6qbYbHoiJ4dGqRYCR2JjDRvoBakMHkz2iWGChlqrpliXxbr+ImtdN7pUq6ZUaiOrm+YXssBxYpdBMMAh+iDclNGdD65TYKUrIbBsTnxMBH6m8M6r+R8iJdYL06FQA+0T7PWUKF6vXanqoW2Lpm3qonJVXfSSqsK1tpfOVHZwDQSOxh+E779lSrwaxiMEkhU1CDNVCL365fO7L5T4a6KI/FcgseEpQfvd9TNBoIs0Q8sM\"]" + }, + "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/\"587-Go2EFol1yB9kIVDxn88+VtMsxqw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:28 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3b9ef74c-f8a5-4139-8c57-bcf89b7aa9fc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:27.924Z", + "time": 900, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 900 + } + }, + { + "_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-39" + }, + { + "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": 38552, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 38552, + "text": "[\"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\",\"lCVfrWbTFa0K8/shawI5YZDt12hECSiOhkBz4Uk=\",\"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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/\"886f1-NGINjjw7gL84iNdRJvOL8u9vsI8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:29 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "425885c3-9c29-4041-9d2f-f1798eeb30fe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 460, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:28.838Z", + "time": 785, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 785 + } + }, + { + "_id": "684aea8f23772d3d75b316c1f6b45d42", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 7678, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "7678" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1879, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee" + }, + "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-mcppt9+5YVDNIUoYDScpTYWVIpY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:30 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "04fe8a62-6fe6-410f-9a6d-aace3507b3d6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:29.637Z", + "time": 600, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 600 + } + }, + { + "_id": "330cac63eea8c9eb2eff72a214233f6c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22461, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22461" + }, + { + "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": "{\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d4-42PI2+aZ8dfOb3RilPr4LK45Zz4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:34 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "52a4092f-6269-408c-80b4-d1e5ac3c2efd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:30.246Z", + "time": 3815, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3815 + } + }, + { + "_id": "414da58ab8d8058f9d215d09c1ae4d69", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22457, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22457" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1887, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant" + }, + "response": { + "bodySize": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d0-q0EiV9t07Zhb2VQ+jxISAABSGG0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:34 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d2b2c2a1-f042-45c6-a87c-4845009e58b2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:34.071Z", + "time": 562, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 562 + } + }, + { + "_id": "2baf0aeb69e26a0dd61ea95174511102", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 14969, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "14969" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1887, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"childType\":false,\"description\":\"phh-BasicEntitlementGrant\",\"displayName\":\"phh-BasicEntitlementGrant\",\"id\":\"phhBasicEntitlementGrant\",\"mutable\":true,\"name\":\"phh-BasicEntitlementGrant\",\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicEntitlementGrant" + }, + "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/\"3a90-A0swsmxaFg+RpGuNV622fJgnOtw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:35 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ea0f19d6-6415-46bc-bf6d-b6f55b181747" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:34.643Z", + "time": 700, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 700 + } + }, + { + "_id": "71128631ce20af2826287b0eee7210cf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 8894, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "8894" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 3186, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3186, + "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-Rd+Vt3U7QPty3dLaISh+dlgbyB4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "20dca038-f9ee-4596-9f4d-d863b373abe8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:35.349Z", + "time": 1882, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1882 + } + }, + { + "_id": "c745b822100a6ac6a3355aa321a65c46", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 18392, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "18392" + }, + { + "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": "{\"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\"}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 5989, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5989, + "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-AihYLUzhAfnztkhlPlbJShUBrrQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "64a7024c-0d2b-4294-a1fe-d13a46a561ef" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:37.239Z", + "time": 2300, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2300 + } + }, + { + "_id": "f59cb83bb83397f18be9268e7df3e679", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 14997, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "14997" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1894, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant" + }, + "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/\"3aac-F6JuvpDYMzE/P1r8FkgXH9srqwY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c94aefe1-afbe-4cf4-a160-dc7c9118b39f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:39.547Z", + "time": 566, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 566 + } + }, + { + "_id": "b6dc1f02591c8fccfced0fb748938fbb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 3224, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "3224" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 1655, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1655, + "text": "[\"G6AMAOT0bfZfv6P5IbRuoMflKvuuPY7DCLnxJPhtGLMzNlCh/P2cStaiSg6MfDRm12QIateX9g8YVW5q0wSKSGkCq2bbwP83/hwNtdNCgOYjDhgDWtysVm/pcVR/PxAaZL+mmKoTppPw7JynsFtvk/BA+9FuckzMQ48/9/PDhtB2flAyuBTaop0b1EwbRfvrwB6J/f1nr79Pbm+70J2fXrcXt/dyXPx18gEe00C9zwSfUpGWFA1mVprUADQBu9kDMu3zp0wbzqpDxGloMUshNJhKbpM85SExoZwHoOUyDOPCIILj0WI3HmH0zmhxduQYjuALYl/+oZBEUihKoruNlCn8ikBo5PbXkEDrGXyboV69yDEczRw73nqZ8m0CNDCu/5l1T/mrl+jvB9JqepeY6FovAjQZH1r3lKvJMobJ9M6x4ywPcHAMMJvBM8pi0ec2kBN0kYN48x0D0HZ5d/8/NHBOAi8L61rIh2oSez9bdmqF55ZmqSt1NoHj+2IvwvSOWjqJnIp2ch05ZR1DjnnveHjIZZO8CFW+n8MFr54VZkVJZg4NOHTI+GKOAdrEmgaqh9RXDpumUVpR5P7ViomhH5UFTdPk95M36aOUbvDisQWHheQPLCoBXPGhkDzoXq0pl5/XFyWBBfCi9AL23n8KycN7L36t0OiqDMDhMm6/p3HIJA4tTLK+R72MAegPOJxI5APHMHE4MYQe0EUagjq04LAoyVu/JtPHLfF/N1A2ax8Hs4zBoWOAsUiovfVahqxGAIJpDTi2T7HDsiiJQ1McNIEAmAJRgRNYOGFs+G+JQ4CknEov4h/A4gi7gV+LbN7YQUUroaZ5wH+pcIZHMJ8C6ifNjnWX5IlvV51w7KIkGZKAV5N6U3RVxdgADpcKnO/QVu8N9TIGk0Lv1TJIgC6HY3BoPxCZoRzarnpk7UDyhKk2KgEARiTlH+T5gyH1PUkduUuVw/MlQCYsvnOKWuDeLtg8JWF7l25lTsIv2HnhyuHbBKsXToYpR/opLE64f5cqNVccI9z00zqHDk2c4GXGjZGg\",\"p/ajnUT4lJPQjxVefnr3FjRL5N4xtJoeOq5yiAZV/nyHJn947Y3dQ0U5YVo4I2pLrrw+fvVjbcoae+9ONMhrQhJlsxyPMB1KIVRk6qTC80gkSeXwiUgSGNo9j0DQUYuWRXXfx9YUExvdrF8LK2hVsMBXaE2+Ag1gusno2HFlmLJpmha+0evkA4WG3gXHcWHw3Bau2L5NgRTtAYnD2xQI7QGXPkJjRftrYbAvqk9MrGgPo7tU5zFlHwcC6bF1MdSRLNRbe/mNxvR3QYufStuSamhziZ4zWtRnRQ/dpwvgp8j9QC94UzIaXHnVo/hV4NOxsPkGoxWmZ/LDJN2W9LGkzSZ8sSch5u+mz9OWhMITeWjv/IQDGuQUSK562q5o7f2lbIM9UznstD3aq/mpwQe0Z5eXI9BDSsa2s4PTCYkTsZgY0PmIP6U0dCONFfSKzeAfll4k7R6JtfpYInKXXspftInflYAUYKAgVeb/+MlC688A8rVMUZmX84dd56PBEv9L3MUeZBNwr2sPuEd7dj2vz29vb2/Pb26vLm4uLiidWV+dnl3Oz+eXp9eX1zfjqH2XXBQtTn7cIKDBdSlqaZZCIw==\"]" + }, + "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-cK6609i/1VMgmFPECTQ8mZbAAh8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:41 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "80898ef4-0d72-4c03-86d5-db7358a96960" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:40.121Z", + "time": 1542, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1542 + } + }, + { + "_id": "789dc325808b025f560ff79dcfa599b0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 7544, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "7544" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "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-fYeqpSthZkHBvv2qYWmwz8fZ2gQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "824eca9c-0520-4972-a02d-3a4b1c84049b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:41.668Z", + "time": 2036, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2036 + } + }, + { + "_id": "91ad4c4fb811c8c5edb3f870855ad97e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 7540, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "7540" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate" + }, + "response": { + "bodySize": 3039, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3039, + "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-vdJGEpGjD1rRtYNEWm8SXPFuRPM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:44 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b24b6268-576e-4026-9cbc-3cb12daafcbe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:43.710Z", + "time": 553, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 553 + } + }, + { + "_id": "99f4beabb203c939ec40852de2e838e2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-ydN7M156ZRP29BXD6s7nCW4TmKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "df46fb66-95c3-4f31-b34e-ba89049f20c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:44.271Z", + "time": 2386, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2386 + } + }, + { + "_id": "895eb95618a77771bf338429eb1458f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1" + }, + "response": { + "bodySize": 4242, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4242, + "text": "[\"G5dXAOQyW9Xrq8iZWY4x+JDvnosoqF76oqKgb1dUyFIa1NgSIckcQfhw7d8KzlVWuEoiBaSJhNlkIh4VCBXhZDbJ7t/X7idwBWAJiMow+yqZ8gdXVQ93J4y8U+6WMVW37n05hhDIg+p6OXeQAkpwaN1XbY5Nqy8heKBYh0HdXi8Py76G4MGRCufsUxy4rv2mn5zUCq5+/Ep3txNC2bDWogevBs9QBh5YhycL5c87BPi/FXyjz6zdMXucZUgpZlSkWUphmemht053ZJFoerJj9ggeuH3JeWUA3qadlXdQeHVbh6fdo5kRO4dS9W3rge4d1zuaYfH09Lz5sgJoDwElNH3byLbtUDkwn/GGI00YjYowgcHLcC3Pq3erh91l+rPULXNSq8dHSYIoDUVR8yyMYHiBu89HLUp10uoGHjDutLFQ3kHa1fVk0Nr9TeZMjx6cr+whoQR/Oq3UEhupkHBcsWryk1tgQD50RBpL/n3+CQ27Ed2Q3P3k5GHhQHm3LdWeNNp0zFWKMLdWKUIIOTNz/Ll85G9ykIFHmu/RfWFGsrpFO568SdDd4NXTD18L8nfiHZ3v0Y1HUozirk0JvJK/yU0xMFR0cwbDUiO5Z/65rY5jiqOfYinrj8ifuzmSR0ZvV7uRR+6DR+4DKKz43cjPYtwCIYRIUZIKzpJ168LvLRq/guyWUQKv88k0t7S5KDQ/g5e5FF5OqHHmtSXZw1BCCKnOPliSqiLCN4rBX8jdZYOZtXKvnuCAAMlvK8z9YQ9oj9Fh569ieHlTqWEynlRqOvUrNa5U9TLgAVFO7INUajKewOABnlE5+mOgDelQuQY1TDvZ4OcioIRHo4XeoXWrjsl2h92pZQ7DXIZZztq4iTs9x352SnIt3JSgoVHCi2KWFmkyi5s4mdUhxrOmEHXYsFjwJm0qiySYwzYh+E7ScT94yX+Ok2kUT9NgmgbTMAiCyWQyd3q93WydkWqPgUhDmJub4jcoE6/cTVxP0rBUUL+4XXuEi7QeUKCDXkZ0cM+JAlDDyAcQJaAR2/r9Qh6/oGHwKuj/+ka36NeY5k1OwxnLGzqLI8FmBRXNLI/rmqdpHGWAaXSEXjTrHxsMwLMoxZMBOP143H2uByonXXuuI2UXnvzvfyQSyJ+b4B8STMi/8VlfnG1SVm8Rn6CM5qQjzsyQQ+XswBadk2pvmd7ZVyD3zOe667SyPteqkXtf\",\"7tnroYZirwi9ExV4pIK3q10FnK//mRk2NJ0hfxPVt21YAbIhtbVio1vcVJMI7fczeIE+BclXj26lTPrMpYBBHLt2frIhYzRk9L//ISY+n/wbW+zWFQ6NVGyvPSrF4XwsMDZwOTvbvgleBXIRk9sSK+7Rddn/nmMwcB/Uj4Z3T1leJ5VA4zl/XYzxlAYv1SjOfBhk5R6Dp1SoC+0qX77HdNQXlWPG4G01pWC06vHzh8f1hw9Ci3svvWUOL+w2K+KaU0GThtbxw59Yy9Wn74/VKDIkwlqyFq70uWhGCyX/DhCoBEreG0KwsvhUKAYEz23GXQyRkVmmWeiipdpGIUUFTTsM/FGD56i8jfnCWilINEZYFWKRjBlw7og3qFrdBoDvG6LzMHLeQRfbC7jdKmWR60P+/rvfSQGMD6WJbi+IocIhFiu40yzlTZEGCcfEXKcGSesbJtveoGPIVHmLPqZBfF2HGYNRNi+UcM1AAoHjQQmt3qt7k6hGjyuAU9ReV7IXF5apYPIG6lcDBSprfJ3QrldAYYqwTvP/TUJU8rpNu1E4RLu7t2dxQZsEWZ6lNK1EeKtEVNmo0e8uuhK08jTvwWDpLKQOUffy2s2DLcwUjyhEphslfKtQTGRLCZSUjMnDDK3QTTud0GQQQX7/QmD2OIuCNG8SkYUhzxE1zJ9WCtY9KC3QEmaQHJAX/5/wuz3rI5LF09oSbQTN7ki8JI9JWr2XfF6p77on/HR+nDRIRBTJ+6yXH//+AOaV2iKSg3MnW/p+zfjROrbHeaPNHo3mx1sd5oyE5taXgre6F37LHFrne4N8s10E+B6buO9Zic7MAAX0Bk8dbQ+k0YZ02iA5A4352XmlSo4OBwza73TESrVvkbBa/I+y80joFn4Z4w5YqfLnI6j+L7Y9CSIVYcSZ2+xIu+ORutX8uCu4HrDJy0o5cyNmDS47/zyb+pecjW07jiMB7Uoy+zAbQ9+hUgB3G6NmwTv0O/GMzGpF/iajL539kVGUZGWMNsQgE1Lti7JtcpHuQKQgmgDbT/qp345UW7ZKxxv/oq5RrUnuIzICb5spR9ZWnlcfV8v1Yve0KKpvW4fValt8+LD5mugWVt+e1s+L3XrzqfWCqhm88+h9ZeTkKsboEmKmVhj5KKJ0Gd62+oILytMhRkwArggV1NHb+qCQH/bopCHk+psh9JpVSwsdXcKiFtyQaBEJhTR5J+mpaCtOuSnxU+SSFry/TTHLtW0/Pzystlse1vfCpPpxX9VZw8O04CzGeqhHB/O4WH9YLbPnNMNDKsdE7oDE6dfxK1WB0/8V98E557qr4A0MHnCeaY2c15rzcOuHlPVDsvqhq65dJFd/hwO2rYYS9lqL+obgwUFCCQfdMhg8uI5TLjclb/rfeR91b7QZhcpT0XwL/MqkJgN5pAHvT3NazFofNh+fPqzELkIe2ilNKdKI8abIw2XLN2j7Dpfdvb4JCYyujjiIfSaKoKrYDZiPjQ/CchRtLsNKhbZ2GNZ/mqhgWShiVucoFmv4WWE6+e0FYIZs3pavGrTthZD6CRoFIQPP6uNr2iEbyClJ+NrAcyWoREd81vRShTwMZJDZnoo9n7yT2DM5cMGmoQxCmr+v8jxsoiJLMIqD+8KxHMNgyztFR565PI0Qldo4oD7Modrk/iBje668VaIHWz/+tWWRSApKgzCMwkVWgKKg/Mg6TAz0F0IL8YMG4rGSIZdTa5VwD7nYomZAtg/OWU1jynkmmowXKgbBCRi3is75WXx+WjuMFlEnSSoRCoDoYafw0oWgqAdmkwdpmoR5HacMRbJhFyXN8miCFlUIVJor4ReQmqzcNj6vPAOfLBui6OQjgxCBbg==\",\"/rGx/JMW2PH3UeJTqfrd4RVFk1oof754cEgbznYSQwceXTr0HINOhFv90C071qdjpu65DILGPsCJK02kHJRgt6P8uOs3snX97WytTr0DDw7MerzE1CyHcwKwj+CBtEts0SGrW4y3XnZp9Om0fX4rId1l8v/rMxoUETnbussrJcADpQXCNYnlB+wY8UH/DNsOcoUyj1IPblAmwYDnTI1DbdCdCzqRY1BKtiF4QD+Pqe66Uq2h2zi17PbKjNGXB75z9L4AqRr9PHbNtdqQBq8BhRpCpbbxA4DGHy7w6dVUlyi4TBdHgwe9fHBZI42XY1c2hLm4TMgPDitg13A3kBjknpXqLRrQAlX2ZWr0oJCv/glGtwiWBMUZK3yH5LwHK3bOkB1g7nlASQQsD7wOybxMoPULluWA16+wcgSByi/GEjtaV7oyHF48J7vmJo3IZUkDs82c5cXFdA4yTuzLoIL8UEL4K9jJDrcnpqAEwW5jOwEVsz+KhUHa9zIYlcMeGXrjg8dZPqdFURQ0L9I4j+PO+dHDIpmnYZQENEjCLMlyM4QL58PubA3i/6phaAbZPitO3BqLNa03fm6kZBx8xwgfG25cWzxu1Qt30L15YKIQQSTfBpsSTAhsvngj5hDjd1q5w9jCs84rlGGcinNdaf5ArWnDYQgUMaCqS3nPq7ZJ8NhpnM/zMEqCKE/DIKIX2ZvDVgXpslycxfN4+ijK8zzMaTpdjZqPI09u5ZDVNk4KjrJYWlUfBeIy9pJU2OwyJnw0OoR5SSQD5tJ4q1dUrsiM0tonq0u+zqSva3QLJLIbf6uS3DOzgGAT7o2YiSGmezma/1EMz7O5vwT3qwZR5ZOM49SSIWa3uc99BHZT2SyTODCMsK4meDctDvhWZfO6J1mg6tP+uqYr/AW7IB4XuxzHhCpQeQqGIm7UrW0eBNBeJzh8kAc+fCIE5TB2UjH3GGsb4ubvmD0KwG4cMvpiJa9tludPQ6rLpImHESnEwJ+05V2aQMNCxvvUdzUaHQCNFYk+9z+zPxl9QuNuMObGZZiNlBQTBJbZRQymj/hM/kAumWdp6aowkgfuGFv1wcRmVFQELOmgAI1S1GkRS7M+dNYqSWTJSsRhap/oqkAxdxcDCsiyQqGODkMWDut6CyUIwxoHHnS9Z360Mz0O\"]" + }, + "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/\"5798-pp+W5KGsx1qsLJd/g1MvFRAFoKY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:47 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ddcad45e-2d08-4932-849b-0f4eb6488c85" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:46.670Z", + "time": 545, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 545 + } + }, + { + "_id": "cce8688b87b480829864a7587b6afd08", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "text": "[\"G5tXAOQyW9Xrq8iZWY4x+JDvnosoqF76oqKgb1dUyFIa1NgSIckcQfhw7d8KzlVWuEoiBaSJhNlkIh4VCBXhZDbJ7t/X7idwBWAJiMow+yqZ8gdXVQ93J4y8U+6WMS396635MgwhkAXV9nLuIAWU4NC6r9ocm1ZfYvBAsQ6Dur1eHpd9jcGDIxXO2ac4cF37TT85qRVc/fiV7m4nhLJhrUUPXg2eoQw8sA5PFsqfdwjwrRV8o8+s3TF7nGVIKWZUpFlKYZnpobdOd2SRaHqyY/YIHrh9yXllAN6mnZV3UHh1W4en3aOZETuHUvVt64HuHdc7mmHx9PS8+bICaA8BJTR928i27VA5MJ/xhiNNGI2KMIHBy3Atz6t3q4fdZfqz1C1zUqunR0mCKA1FUfMsjGB4gbvPRy1KddLqBh4w7rSxUN5B2tX1ZNDa/U3mTI8enK/sIaEEfzqt1BIbqZBwXLFq8pN7YEA+dEQaS24+/4SG3YhuSO5+cvKwcKC825ZqTxptOuYqRZhbqxQhhJyZOf5cPvI3OcjAI8336L4wI1ndoh1P3iTobvDq6YevBfk78Y7O9+jGIylGcdemBF7J3+SuGBgqujmDYamR3DP/3FbHMcXRT7GU9Ufkz90cySOjt6vdyCP3wSP3ARRW/G7kZzFugRBCpChJBWfJunXh9xaNX0F2yyiB1/lkmlvaXBSan8HLXAovJ9Q489qS7GEoIYRUZx8sSVUR4RvF4C/k7rLBzFq5V89wQIDktxXm/rBHtMfosPNXMby8qdQwGU8qNZ36lRpXqnoZ8IAoJ/ZBKjUZT2DwAM+oHP0x0IZ0qFyDGqadbPBzEVDCo9FC79C6Vcdku8Pu1DKHYS7DLGdt3MSdnmM/OyW5Fm5K0NAo4UUxS4s0mcVNnMzqEONZU4g6bFgseJM2lUUSzGGbEHwn6bgfvOQ/x8k0iqdpME2DaRgEwWQymTu93m62zki1x0CkIczNTfEblIlX7iauJ2lYKqhf3K49wkVaDyjQQS8jOnjgRAGoYeQDiBLQiG39fiGPX9AweBX0f32jW/RrTPMmp+GM5Q2dxZFgs4KKZpbHdc3TNI4ywDQ6Qi+a9Y8NBuBZlOLJAJx+PO4+1wOVk64915GyC0/+9z8SCeTPTfAPCSbk3/isL842Kau3iE9QRnPSEWdmyKFydmCLzkm1t0zv7CuQe+Zz3XVaWZ9r1ci9\",\"L/fs9VBDsVeE3okKPFLB29WuAs7X/8wMG5rOkL+J6ts2rADZkNpasdEtbqpJhPb7GbxAn4Lkq0e3UiZ95lLAII5dOz/ZkDEaMvrf/xATn0/+jS126wqHRiq21x6V4nA+FhgbuJydbd8ErwK5iMltiRX36Lrs/84xGLgP6kfDu6csr5NKoPGcvy7GeEqD12oUZz4MsnKPwVMq1IV2lW/fYzrqm8oxY/C2mlIwWvX4+cPj+sMHocW9l94yhxd2mxVxzamgSUPr+PFPrOXq0/enahQZEmEtWQtX+lI0o4WSfwcIVAIl7w0hWFl8KhQDguc24y6GyMgs0yx00VJto5CigqYdBv6owXNU3sd8Ya0UJBojrAqxSMYMOHfEG1StbgPA9w3ReRg576CL7QXcbpWyyPUhf//d76QAxofSRLcXxFDhEIsV3GmW8qZIg4RjYq5Tg6T1DZNtb9AxZKq8Rx/TIL6uw4zBKJsXSrhmIIHA8aCEVu/VvUlUo8cVwClqryvZiwvLVDB5A/WrgQKVNb5OaNcboDBFWKf5/yYhKnndpt0oHKLd3duzuKBNgizPUppWIrxXIqps1Oh3F10JWnma92CwdBZSh6h7ee3mwRZmikcUItONEr5VKCaypQRKSsbkYYZW6KadTmgyiCC/fyEwe5xFQZo3icjCkOeIGuZPKwXrHpQWaAkzSA7Ii28n/G7P+ohk8bS2RBtBszsSL8ljklbvJZ9X6rvuCT+dHycNEhFF8j7r5cf/fwDzSm0RycG5ky19v2b8aB3b47zRZo9G8+O9DnNGQnPrS8Fb3Qu/ZQ6t871BvtkuAnyPTdz3rERnZoACeoOnjrYH0mhDOm2QnIHG/Oy8UiVHhwMG7Xc6YqXat0hYLb6h7DwSuodfxrgDVqr8+Qiq28W2J0GkIow4c5sdaXc8UreaH3cF1wM2eVkpZ27ErMFl559nU/+Ss7Ftx3EkoF1JZh9mY+g7VArgbmPULHiHfieekVmtyN9k9KWzPzKKkqyM0YYYZEKqfVG2TS7SHYgURBNg+0k/9duRastW6XjjX9Q1qjXJfURG4G0z5cjayvPq42q5XuyeF0X1beuwWm2LDx82XxPdwurb0/p5sVtvPrVeUDWDdx69r4ycXMUYXULM1Aojn0WULsPbVl9wQXk6xIgJwBWhgjp6Wx8U8tMenTSEXH8zhF6zammho0tY1IIbEi0ioZAm7yQ9FW3FKTclfopc0oL3f1PMcm3bzw8Pq+2Wh/W9MKl+3Fd11vAwLTiLsR7q0cE8LtYfVsvsOc3wkMoxkTsgcfpt/EpV4PR/xX1wzrnuKngDgwecZ1oj57XmPNz6MWX9mKx+7KprF8nV3+GAbauhhL3Wor4heHCQUMJBtwwGD67jlMtNyZv+d95H3RttRqHyVDTfAr8yqclAHmnA+685LWatD5uPTx9WYhchD+2UphRpxHhT5OGy5Ru0fYfL7l7fhARGV0ccxD4TRVBV7AbMx8YHYTmKNpdhpUJbOwzrP01UsCwUMatzFIs1/Kwwnfz2AjBDNm/LVw3a9kJI/QSNgpCBZ/XxNe2QDeSUJHxt4LkSVKIjPmt6qUIeBjLIbE/Fnk/+k9gzOXDBpqEMQpq/r/I8bKIiSzCKg4fCsRzDYMsHRUeeuTyNEJXaOKA+zKHa5P4oY3uuvFWiB1s//7VlkUgKSoMwjMJFVoCioPzIOkwM9BdCC/GDBuKxkiGXU2uVcA+52KJmQLYPzllNY8p5JpqMFyoGwQkYt4rO+Vl8flo7jBZRJ0kqEQqA6GGn8NKFoKgHZpMHaZqEeR2nDEWyYRclzfJoghZVCFSaK+EXkJqs3DY+rzwDnywboujkI4MQgQ==\",\"7v6xsfyTFtjx91HiU6n63eEVRZNaKH++eHBIG852EkMHHl069ByDToRb/dA9O9anY6buuQyCxj7AiStNpByUYLej/LjrN7J1/e1srU69Aw8OzHq8xNQsh3MCsI/ggbRLbNEhq1uMt152afTptH1+KyHdZfL/6zMaFBE527rLKyXAA6UFwjWJ5QfsGPFB/wzbDnKFMo9SD25QJsGA50yNQ23QnQs6kWNQSrYheEA/j6nuulKtods4tez2yozRl0e+c/SxAKka/TJ2zbXakAavAYUaQqW28ROAxp8u8OnVVJcouEwXR4MHvXxwWSONl2NXNoS5uEzITw4rYNdwN5AY5J6V6i0a0AJV9mVq9KCQr/4JRrcIlgTFGSt8h+S8Byt2zpAdYB54QEkELA+8Dsm8TKD1C5blgNevsHIEgcovxhI7Wle6MhxePCe75iaNyGVJA7PNnOXFxXQOMk7sy6CC/FBC+CvYyQ63J6agBMFuYzsBFbM/ioVB2vcyGJXDHhl644PHWT6nRVEUNC/SOI/jzvnRwyKZp2GUBDRIwizJcjOEC+fD7mwN4v+qYWgG2T4rTtwaizWtN35upGQc/I8RPjbcuLZ43KoX7qB788hEIYJIvg02JZgQ2HzxRswhxu+0coexhWedVyjDOBXnutL8kVrThsMQKGJAVZfynldtk+Cx0zif52GUBFGehkFEL7I3h60K0mW5OIvn8fRRlOd5mNN0uho1H0ee3Mohq22cFBxlsbSqPgrEZewlqbDZZUz4aHQI85JIBsyl8VavqFyRGaW1T1aXfJ1JX9foFkhkN/5eJblnZgHBJtwbMRNDTPdyNP+jGJ5nc38J7lcNosonGcepJUPMbnOf+wjsprJZJnFgGGFdTfBuWhzwrcrmdU+yQNWn/XVNV/gLdkE8LnY5jglVoPIUDEXcqFvbPAigvU5w+CgPfPhECMph7KRi7jHWNsTN3zF7FIDdOGT0xUpe2yzPn4ZUl0kTDyNSiIE/acu7NIGGhYz3qe9qNDoAGisSfe5/Zn8y+oTG3WDMjcswGykpJggss4sYTB/xmfyBXDLP0tJVYSQP3DG26oOJzaioCFjSQQEapajTIpZmfeisVZLIkpWIw9Q+0VWBYu4uBhSQZYVCHR2GLKzF9RZKuN0PEwnwoOu986Od6XEA\"]" + }, + "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/\"579c-2o8ESZvqhNu0mOmnRkSVU2kgQkE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4db91d24-2ef6-4503-ac03-2edc41a3014f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:47.223Z", + "time": 2373, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2373 + } + }, + { + "_id": "5baa3ea9aa3d2dffd142f5b608b05205", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4" + }, + "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/\"5798-XPOKe622Mc4Be1oqyaeAcR8Oe3c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:50 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b562ee69-aa54-42ad-a55b-a71630b3a749" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:49.603Z", + "time": 550, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 550 + } + }, + { + "_id": "b85b228555ceebc4e32cce101c82cd5c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5" + }, + "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/\"5798-cCSg50lAnQhvh1UhGMCOwGoiyuU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:50 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8f2e3eb5-1fa7-44f9-8256-3bbb1152dc05" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:50.163Z", + "time": 554, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 554 + } + }, + { + "_id": "5d4e8a4248ad016fbeebbdf2af511e64", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-wBdoTVIIgdZdPlMeB4p3z5O9fvI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:53 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d9eed481-8aab-48f3-883f-8ee45832962c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:50.732Z", + "time": 2853, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2853 + } + }, + { + "_id": "fc01bdea78d63975aa968d573e63f23d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-CvCXkJ/gBcBiXiXL7l0U3jzfvHY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "07619887-f5f9-47f2-bd3f-43aec3e14274" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:53.595Z", + "time": 2943, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2943 + } + }, + { + "_id": "4354b36aa22acd5d01a455e4014f628d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7" + }, + "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/\"5798-5lFlK5/FWaz35kLkmmu8CA/gkWU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:57 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "360554d1-f9e3-442d-bda1-e4f78835da19" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:56.545Z", + "time": 497, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 497 + } + }, + { + "_id": "eb59eaed43e23ec6c61d9077b21784bc", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-R7A1BnWHVDWem8udODGx9F7mQhI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5cf5b785-1dd0-462e-98a8-32b0f23c0ce8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:57.054Z", + "time": 2254, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2254 + } + }, + { + "_id": "8608b0a782c8b76d8d39886eb587703c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8" + }, + "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/\"5798-ep0sciSTFLV31JnXcjISIrLTA+w\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:53:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e52d45fe-0b81-4565-8bc6-30cb82153091" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:59.319Z", + "time": 497, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 497 + } + }, + { + "_id": "b011f719de40d6c5ff9076eab50ae222", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 16600, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "16600" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1895, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged" + }, + "response": { + "bodySize": 4457, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4457, + "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-66X6ldMjC5jvDXElOVL44xPuim0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:54:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "28b113d8-5801-465a-806d-e8884c45476f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:53:59.824Z", + "time": 569, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 569 + } + }, + { + "_id": "0baef10277fb1741d53188863db05ba6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "objectId sw \"workflow\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=objectId%20sw%20%22workflow%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 628, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 628, + "text": "[\"Gy0HAORnuvxpZz5SeE7Wtl9sMoXwUrvziv7fTT8gPwxwLOFExn4e8FpiAfU83CJtTuAMvuBhIBhUu+byUvJ0ZS1fEXgKP+rfcLy5WV+H0Rbh1ayuZc0w/noK82a/etvDGMqUUxNLsWpJkWbFWNh7tNyQeE4zegmLsGmXPl1n9b/b7K/m5ebuaHt+fuJLP6vX3r8cfH9ycaht6d/G5Neb7kffFBziti4/18NVbN6cSm/U6xQWYeXXtdfrGsansA4DnNRrD2OABBITx8SfcxkZxwyDJfsZFuEqdT+DX808kg6khUi06M/w8rIQTIQTGjfGFFvJEKlPPRabLBbMolh7L03RfPK7LwffH8/BS+GjKk8zAWmruYNrgxkfyjgwUcKMChBJcZwnEYvkRSK1hLFI4ojWDFPzCjKhXvvh2jsl97b5ZjlfLJcrX1/XJ50nR64IJTPYPBTIfzENZJopIxeAAXeSwcREgAFctKeEJsmmk8Dmmiu7QuyWMJJpiW2CGpNW7hW7+YF0BOuiywZ9Skd0xS4qSGLIQzFQlvZFE6YsDhJwVxgKZUkmWtzjUmhksyISEoKQYVJUBjZozIk1IBGNaCioJ69b5pHLwJpKyWjlZ3h5+fMC\"]" + }, + "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/\"72e-MwrfLH/kjK1GmsFiyERb7VMQ3nk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:54:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0530809e-fdd0-4beb-aed3-68c317207724" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:54:00.399Z", + "time": 149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 149 + } + }, + { + "_id": "dfc3b5d28d5d17aebfbed654d84b9595", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1892, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "unassign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=unassign" + }, + "response": { + "bodySize": 227, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 227, + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:16.868662522Z\",\"createdDate\":\"2026-05-05T19:53:16.868660618Z\"}}" + }, + "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": "227" + }, + { + "name": "etag", + "value": "W/\"e3-Yo5gvmjNKU6Acb3BwmdRAG3ufqo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:54:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f617ec26-c7dc-4a10-9a86-488327144ae2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:54:01.291Z", + "time": 537, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 537 + } + }, + { + "_id": "21ba77b4337343feafbdd66ca8eec564", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1892, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "unassign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=unassign" + }, + "response": { + "bodySize": 224, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 224, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:22.941608679Z\",\"createdDate\":\"2026-05-05T19:53:22.941605889Z\"}}" + }, + "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": "224" + }, + { + "name": "etag", + "value": "W/\"e0-+/0/VDgUosLITsDUpSQWae9gNJc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:54:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "839e882f-133d-46e0-80b9-baf1fb7186bd" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:54:01.835Z", + "time": 1005, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1005 + } + }, + { + "_id": "033bd3d98a72ffc8b14dc24b1c09344f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1892, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "unassign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=unassign" + }, + "response": { + "bodySize": 224, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 224, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-05T19:53:23.941473752Z\",\"createdDate\":\"2026-05-05T19:53:23.941471057Z\"}}" + }, + "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": "224" + }, + { + "name": "etag", + "value": "W/\"e0-WlhDKCLMw2tOA+NCGgg2LO8QDTc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:54:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ba428f3e-4f9f-470b-a207-54d9a35763d2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:54:02.845Z", + "time": 1003, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1003 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/oauth2_393036114/recording.har new file mode 100644 index 000000000..0e219df97 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_af/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "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": "Tue, 05 May 2026 19:52:46 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T19:52:46.535Z", + "time": 128, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 128 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/openidm_3290118515/recording.har new file mode 100644 index 000000000..527a44e59 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_af_3559436575/openidm_3290118515/recording.har @@ -0,0 +1,2438 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_af/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:46 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:46.718Z", + "time": 176, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 176 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:46 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:46.901Z", + "time": 91, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 91 + } + }, + { + "_id": "492e6a89918082b06caf1e567dd9ab82", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 511, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "511" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "511" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.006Z", + "time": 104, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 104 + } + }, + { + "_id": "2339198114bb7488614b2c5411672401", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 304, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "304" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "304" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.145Z", + "time": 98, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 98 + } + }, + { + "_id": "199b3f3dc9dd2363517dfbaf6418c575", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 401, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "401" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.250Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "4049203414a3265161f47622a3423f9b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1379, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1379" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1964, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "1379" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 654, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.360Z", + "time": 99, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 99 + } + }, + { + "_id": "011ffcb3080baacf7ae2a0e8c78e45d9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 832, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1952, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.464Z", + "time": 98, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 98 + } + }, + { + "_id": "d188e77c8fac307f9e596a9e2f3a1248", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 657, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "657" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "657" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.569Z", + "time": 98, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 98 + } + }, + { + "_id": "078068cd6ed823ecc7b6434849b69b60", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 642, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "642" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1951, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "642" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.674Z", + "time": 98, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 98 + } + }, + { + "_id": "3466dd12863cbb1d2196ddeaf8f8d69a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 832, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.778Z", + "time": 99, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 99 + } + }, + { + "_id": "77942fc647b15a6cd0e2e9de86db1253", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 672, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "672" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1952, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:47 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": "content-length", + "value": "672" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:47.883Z", + "time": 101, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 101 + } + }, + { + "_id": "322ac2714e36d4f8b9e577210c2a31c6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 919, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "919" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationAssigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, please review at your earliest convenience.
.
\"},\"message\":{\"en\":\"A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, 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: Violation Assigned\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationAssigned" + }, + "response": { + "bodySize": 919, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 919, + "text": "{\"_id\":\"emailTemplate/violationAssigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, please review at your earliest convenience.
.
\"},\"message\":{\"en\":\"A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, 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: Violation Assigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:48 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": "content-length", + "value": "919" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:48.000Z", + "time": 85, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 85 + } + }, + { + "_id": "1da9352f0c1df15f60320af430fd36c6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 749, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "749" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1955, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationEscalated\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} has been escalated to your attention.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} 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: Violation Escalation\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationEscalated" + }, + "response": { + "bodySize": 749, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 749, + "text": "{\"_id\":\"emailTemplate/violationEscalated\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} has been escalated to your attention.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} 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: Violation Escalation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:48 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": "content-length", + "value": "749" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:48.093Z", + "time": 97, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 97 + } + }, + { + "_id": "21e64760df62e1d019bdd61b395c4cfe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 732, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "732" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationExpired\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} has expired.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 Violation\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationExpired" + }, + "response": { + "bodySize": 732, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 732, + "text": "{\"_id\":\"emailTemplate/violationExpired\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} has expired.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 Violation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:48 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": "content-length", + "value": "732" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:48.204Z", + "time": 99, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 99 + } + }, + { + "_id": "282487c15e400e4850b3b530672c1a67", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 908, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "908" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationReassigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, please review at your earliest convenience.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, 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: Violation Reassigned\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationReassigned" + }, + "response": { + "bodySize": 908, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 908, + "text": "{\"_id\":\"emailTemplate/violationReassigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, please review at your earliest convenience.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, 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: Violation Reassigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:48 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": "content-length", + "value": "908" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:48.308Z", + "time": 97, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 97 + } + }, + { + "_id": "56140fbc7923c777ff9f401915b492aa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 772, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "772" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationReminder\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} is awaiting your action.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 make decision on violation\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationReminder" + }, + "response": { + "bodySize": 772, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 772, + "text": "{\"_id\":\"emailTemplate/violationReminder\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} is awaiting your action.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 make decision on violation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 19:52:48 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": "content-length", + "value": "772" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-393b2cf4-06d7-4948-b5ce-f9642fb6f094" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T19:52:48.415Z", + "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-import_3803419662/0_all-separate_directory_no-deps_4078456844/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/am_1076162899/recording.har new file mode 100644 index 000000000..645be6ccc --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all-separate_directory_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 16:20:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:20:39.516Z", + "time": 164, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 164 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 16:20:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:20:39.870Z", + "time": 110, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 110 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/environment_1072573434/recording.har new file mode 100644 index 000000000..ebec0fe8e --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all-separate_directory_no-deps/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-39" + }, + { + "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": "Tue, 05 May 2026 16:20:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "03af7a89-93ac-4acc-89a1-6bb8e62e2d08" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:20:39.991Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/oauth2_393036114/recording.har new file mode 100644 index 000000000..d26ad2586 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all-separate_directory_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "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": "Tue, 05 May 2026 16:20:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:20:39.703Z", + "time": 139, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 139 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/openidm_3290118515/recording.har new file mode 100644 index 000000000..0ae300016 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all-separate_directory_no-deps_4078456844/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all-separate_directory_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 16:20:40 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T16:20:39.908Z", + "time": 184, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 184 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 16:20:40 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fd4f1042-f6af-42eb-b867-330fd1c603a6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:20:40.099Z", + "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-import_3803419662/0_all_file_no-deps_655449289/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/am_1076162899/recording.har new file mode 100644 index 000000000..710e32346 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all_file_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:36.651Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:36.980Z", + "time": 116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 116 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/environment_1072573434/recording.har new file mode 100644 index 000000000..f9a8c4638 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all_file_no-deps/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-39" + }, + { + "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": "Tue, 05 May 2026 20:00:37 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "81b7796e-100a-4e30-9827-7d9ed578a131" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:37.101Z", + "time": 95, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 95 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/iga_2664973160/recording.har new file mode 100644 index 000000000..71e35a971 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/iga_2664973160/recording.har @@ -0,0 +1,3039 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all_file_no-deps/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "99f4beabb203c939ec40852de2e838e2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-ydN7M156ZRP29BXD6s7nCW4TmKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 16:23:40 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5b8238c1-64d6-4f6f-9373-c71848cf1f67" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T16:23:36.412Z", + "time": 4240, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4240 + } + }, + { + "_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-39" + }, + { + "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": 38545, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 38545, + "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/\"886f1-NGINjjw7gL84iNdRJvOL8u9vsI8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:38 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "010fd300-b36e-4b04-9904-d9ed0fcc6ee5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 460, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:37.307Z", + "time": 996, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 996 + } + }, + { + "_id": "684aea8f23772d3d75b316c1f6b45d42", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 7678, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "7678" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1879, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/createNonEmployee" + }, + "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-mcppt9+5YVDNIUoYDScpTYWVIpY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8d75d4a3-bc2d-4d68-80fb-c78569a7a676" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:38.319Z", + "time": 971, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 971 + } + }, + { + "_id": "330cac63eea8c9eb2eff72a214233f6c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22461, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22461" + }, + { + "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": "{\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d4-42PI2+aZ8dfOb3RilPr4LK45Zz4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "efc03e69-5f47-43eb-bc11-0e8116cff16e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:39.304Z", + "time": 4390, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4390 + } + }, + { + "_id": "414da58ab8d8058f9d215d09c1ae4d69", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22457, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22457" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1887, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicApplicationGrant" + }, + "response": { + "bodySize": 5353, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5353, + "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/\"57d0-q0EiV9t07Zhb2VQ+jxISAABSGG0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:44 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "dd0b72ca-759d-4eae-9b30-b578ed9f575d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:43.711Z", + "time": 972, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 972 + } + }, + { + "_id": "2baf0aeb69e26a0dd61ea95174511102", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 14969, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "14969" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1887, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"childType\":false,\"description\":\"phh-BasicEntitlementGrant\",\"displayName\":\"phh-BasicEntitlementGrant\",\"id\":\"phhBasicEntitlementGrant\",\"mutable\":true,\"name\":\"phh-BasicEntitlementGrant\",\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhBasicEntitlementGrant" + }, + "response": { + "bodySize": 4417, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4417, + "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/\"3a90-A0swsmxaFg+RpGuNV622fJgnOtw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:45 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a167bc98-2471-485b-8e2d-f21eb8c61842" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:44.698Z", + "time": 915, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 915 + } + }, + { + "_id": "71128631ce20af2826287b0eee7210cf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 8894, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "8894" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 3186, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3186, + "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-Rd+Vt3U7QPty3dLaISh+dlgbyB4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2db6adad-1137-411b-9947-4d237898b6c4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:45.622Z", + "time": 3583, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3583 + } + }, + { + "_id": "c745b822100a6ac6a3355aa321a65c46", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 18392, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "18392" + }, + { + "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": "{\"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\"}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 5993, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 5993, + "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-AihYLUzhAfnztkhlPlbJShUBrrQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:52 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "73876945-e203-4467-8655-a47f483ddce5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:49.228Z", + "time": 3803, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3803 + } + }, + { + "_id": "f59cb83bb83397f18be9268e7df3e679", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 14997, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "14997" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1894, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhInternalRoleEntitlementGrant" + }, + "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/\"3aac-F6JuvpDYMzE/P1r8FkgXH9srqwY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:53 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c2ca34b1-278b-4bf7-bb62-ff99060bc7c6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:53.040Z", + "time": 832, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 832 + } + }, + { + "_id": "b6dc1f02591c8fccfced0fb748938fbb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 3224, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "3224" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 1655, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1655, + "text": "[\"G6AMAOT0bfZfv6P5IbRuoMflKvuuPY7DCLnxJPhtGLMzNlCh/P2cStaiSg6MfDRm12QIateX9g8YVW5q0wSKSGkCq2bbwP83/hwNtdNCgOYjDhgDWtysVm/pcVR/PxAaZL+mmKoTppPw7JynsFtvk/BA+9FuckzMQ48/9/PDhtB2flAyuBTaop0b1EwbRfvrwB6J/f1nr79Pbm+70J2fXrcXt/dyXPx18gEe00C9zwSfUpGWFA1mVprUADQBu9kDMu3zp0wbzqpDxGloMUshNJhKbpM85SExoZwHoOUyDOPCIILj0WI3HmH0zmhxduQYjuALYl/+oZBEUihKoruNlCn8ikBo5PbXkEDrGXyboV69yDEczRw73nqZ8m0CNDCu/5l1T/mrl+jvB9JqepeY6FovAjQZH1r3lKvJMobJ9M6x4ywPcHAMMJvBM8pi0ec2kBN0kYN48x0D0HZ5d/8/NHBOAi8L61rIh2oSez9bdmqF55ZmqSt1NoHj+2IvwvSOWjqJnIp2ch05ZR1DjnnveHjIZZO8CFW+n8MFr54VZkVJZg4NOHTI+GKOAdrEmgaqh9RXDpumUVpR5P7ViomhH5UFTdPk95M36aOUbvDisQWHheQPLCoBXPGhkDzoXq0pl5/XFyWBBfCi9AL23n8KycN7L36t0OiqDMDhMm6/p3HIJA4tTLK+R72MAegPOJxI5APHMHE4MYQe0EUagjq04LAoyVu/JtPHLfF/N1A2ax8Hs4zBoWOAsUiovfVahqxGAIJpDTi2T7HDsiiJQ1McNIEAmAJRgRNYOGFs+G+JQ4CknEov4h/A4gi7gV+LbN7YQUUroaZ5wH+pcIZHMJ8C6ifNjnWX5IlvV51w7KIkGZKAV5N6U3RVxdgADpcKnO/QVu8N9TIGk0Lv1TJIgC6HY3BoPxCZoRzarnpk7UDyhKk2KgEARiTlH+T5gyH1PUkduUuVw/MlQCYsvnOKWuDeLtg8JWF7l25lTsIv2HnhyuHbBKsXToYpR/opLE64f5cqNVccI9z00zqHDk2c4GXGjZGgp/aj\",\"nUT4lJPQjxVefnr3FjRL5N4xtJoeOq5yiAZV/nyHJn947Y3dQ0U5YVo4I2pLrrw+fvVjbcoae+9ONMhrQhJlsxyPMB1KIVRk6qTC80gkSeXwiUgSGNo9j0DQUYuWRXXfx9YUExvdrF8LK2hVsMBXaE2+Ag1gusno2HFlmLJpmha+0evkA4WG3gXHcWHw3Bau2L5NgRTtAYnD2xQI7QGXPkJjRftrYbAvqk9MrGgPo7tU5zFlHwcC6bF1MdSRLNRbe/mNxvR3QYufStuSamhziZ4zWtRnRQ/dpwvgp8j9QC94UzIaXHnVo/hV4NOxsPkGoxWmZ/LDJN2W9LGkzSZ8sSch5u+mz9OWhMITeWjv/IQDGuQUSK562q5o7f2lbIM9UznstD3aq/mpwQe0Z5eXI9BDSsa2s4PTCYkTsZgY0PmIP6U0dCONFfSKzeAfll4k7R6JtfpYInKXXspftInflYAUYKAgVeb/+MlC688A8rVMUZmX84dd56PBEv9L3MUeZBNwr2sPuEd7dj2vz29vb2/Pb26vLm4uLiidWV+dnl3Oz+eXp9eX1zfjqH2XXBQtTn7cIKDBdSlqaZZCIw==\"]" + }, + "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-cK6609i/1VMgmFPECTQ8mZbAAh8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "494727c1-86ae-477d-a564-fdb9315fc53f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:53.880Z", + "time": 2438, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2438 + } + }, + { + "_id": "789dc325808b025f560ff79dcfa599b0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 7544, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "7544" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 3043, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3043, + "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-fYeqpSthZkHBvv2qYWmwz8fZ2gQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:00:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fc522f6c-46e7-4731-bd78-0e2a607ac84a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:56.344Z", + "time": 3380, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3380 + } + }, + { + "_id": "91ad4c4fb811c8c5edb3f870855ad97e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 7540, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "7540" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1878, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/phhNewUserCreate" + }, + "response": { + "bodySize": 3039, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 3039, + "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-vdJGEpGjD1rRtYNEWm8SXPFuRPM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "33160be6-0a92-4ea7-9b8b-4ef298bb3d39" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:59.731Z", + "time": 1057, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1057 + } + }, + { + "_id": "895eb95618a77771bf338429eb1458f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1" + }, + "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/\"5798-pp+W5KGsx1qsLJd/g1MvFRAFoKY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "73756089-2303-43f5-b5ae-80e4c8597262" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:05.805Z", + "time": 1066, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1066 + } + }, + { + "_id": "cce8688b87b480829864a7587b6afd08", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "text": "[\"G5tXAOQyW9Xrq8iZWY4x+JDvnosoqF76oqKgb1dUyFIa1NgSIckcQfhw7d8KzlVWuEoiBaSJhNlkIh4VCBXhZDbJ7t/X7idwBWAJiMow+yqZ8gdXVQ93J4y8U+6WMS396635MgwhkAXV9nLuIAWU4NC6r9ocm1ZfYvBAsQ6Dur1eHpd9jcGDIxXO2ac4cF37TT85qRVc/fiV7m4nhLJhrUUPXg2eoQw8sA5PFsqfdwjwrRV8o8+s3TF7nGVIKWZUpFlKYZnpobdOd2SRaHqyY/YIHrh9yXllAN6mnZV3UHh1W4en3aOZETuHUvVt64HuHdc7mmHx9PS8+bICaA8BJTR928i27VA5MJ/xhiNNGI2KMIHBy3Atz6t3q4fdZfqz1C1zUqunR0mCKA1FUfMsjGB4gbvPRy1KddLqBh4w7rSxUN5B2tX1ZNDa/U3mTI8enK/sIaEEfzqt1BIbqZBwXLFq8pN7YEA+dEQaS24+/4SG3YhuSO5+cvKwcKC825ZqTxptOuYqRZhbqxQhhJyZOf5cPvI3OcjAI8336L4wI1ndoh1P3iTobvDq6YevBfk78Y7O9+jGIylGcdemBF7J3+SuGBgqujmDYamR3DP/3FbHMcXRT7GU9Ufkz90cySOjt6vdyCP3wSP3ARRW/G7kZzFugRBCpChJBWfJunXh9xaNX0F2yyiB1/lkmlvaXBSan8HLXAovJ9Q489qS7GEoIYRUZx8sSVUR4RvF4C/k7rLBzFq5V89wQIDktxXm/rBHtMfosPNXMby8qdQwGU8qNZ36lRpXqnoZ8IAoJ/ZBKjUZT2DwAM+oHP0x0IZ0qFyDGqadbPBzEVDCo9FC79C6Vcdku8Pu1DKHYS7DLGdt3MSdnmM/OyW5Fm5K0NAo4UUxS4s0mcVNnMzqEONZU4g6bFgseJM2lUUSzGGbEHwn6bgfvOQ/x8k0iqdpME2DaRgEwWQymTu93m62zki1x0CkIczNTfEblIlX7iauJ2lYKqhf3K49wkVaDyjQQS8jOnjgRAGoYeQDiBLQiG39fiGPX9AweBX0f32jW/RrTPMmp+GM5Q2dxZFgs4KKZpbHdc3TNI4ywDQ6Qi+a9Y8NBuBZlOLJAJx+PO4+1wOVk64915GyC0/+9z8SCeTPTfAPCSbk3/isL842Kau3iE9QRnPSEWdmyKFydmCLzkm1t0zv7CuQe+Zz3XVaWZ9r1ci9\",\"L/fs9VBDsVeE3okKPFLB29WuAs7X/8wMG5rOkL+J6ts2rADZkNpasdEtbqpJhPb7GbxAn4Lkq0e3UiZ95lLAII5dOz/ZkDEaMvrf/xATn0/+jS126wqHRiq21x6V4nA+FhgbuJydbd8ErwK5iMltiRX36Lrs/84xGLgP6kfDu6csr5NKoPGcvy7GeEqD12oUZz4MsnKPwVMq1IV2lW/fYzrqm8oxY/C2mlIwWvX4+cPj+sMHocW9l94yhxd2mxVxzamgSUPr+PFPrOXq0/enahQZEmEtWQtX+lI0o4WSfwcIVAIl7w0hWFl8KhQDguc24y6GyMgs0yx00VJto5CigqYdBv6owXNU3sd8Ya0UJBojrAqxSMYMOHfEG1StbgPA9w3ReRg576CL7QXcbpWyyPUhf//d76QAxofSRLcXxFDhEIsV3GmW8qZIg4RjYq5Tg6T1DZNtb9AxZKq8Rx/TIL6uw4zBKJsXSrhmIIHA8aCEVu/VvUlUo8cVwClqryvZiwvLVDB5A/WrgQKVNb5OaNcboDBFWKf5/yYhKnndpt0oHKLd3duzuKBNgizPUppWIrxXIqps1Oh3F10JWnma92CwdBZSh6h7ee3mwRZmikcUItONEr5VKCaypQRKSsbkYYZW6KadTmgyiCC/fyEwe5xFQZo3icjCkOeIGuZPKwXrHpQWaAkzSA7Ii28n/G7P+ohk8bS2RBtBszsSL8ljklbvJZ9X6rvuCT+dHycNEhFF8j7r5cf/fwDzSm0RycG5ky19v2b8aB3b47zRZo9G8+O9DnNGQnPrS8Fb3Qu/ZQ6t871BvtkuAnyPTdz3rERnZoACeoOnjrYH0mhDOm2QnIHG/Oy8UiVHhwMG7Xc6YqXat0hYLb6h7DwSuodfxrgDVqr8+Qiq28W2J0GkIow4c5sdaXc8UreaH3cF1wM2eVkpZ27ErMFl559nU/+Ss7Ftx3EkoF1JZh9mY+g7VArgbmPULHiHfieekVmtyN9k9KWzPzKKkqyM0YYYZEKqfVG2TS7SHYgURBNg+0k/9duRastW6XjjX9Q1qjXJfURG4G0z5cjayvPq42q5XuyeF0X1beuwWm2LDx82XxPdwurb0/p5sVtvPrVeUDWDdx69r4ycXMUYXULM1Aojn0WULsPbVl9wQXk6xIgJwBWhgjp6Wx8U8tMenTSEXH8zhF6zammho0tY1IIbEi0ioZAm7yQ9FW3FKTclfopc0oL3f1PMcm3bzw8Pq+2Wh/W9MKl+3Fd11vAwLTiLsR7q0cE8LtYfVsvsOc3wkMoxkTsgcfpt/EpV4PR/xX1wzrnuKngDgwecZ1oj57XmPNz6MWX9mKx+7KprF8nV3+GAbauhhL3Wor4heHCQUMJBtwwGD67jlMtNyZv+d95H3RttRqHyVDTfAr8yqclAHmnA+685LWatD5uPTx9WYhchD+2UphRpxHhT5OGy5Ru0fYfL7l7fhARGV0ccxD4TRVBV7AbMx8YHYTmKNpdhpUJbOwzrP01UsCwUMatzFIs1/Kwwnfz2AjBDNm/LVw3a9kJI/QSNgpCBZ/XxNe2QDeSUJHxt4LkSVKIjPmt6qUIeBjLIbE/Fnk/+k9gzOXDBpqEMQpq/r/I8bKIiSzCKg4fCsRzDYMsHRUeeuTyNEJXaOKA+zKHa5P4oY3uuvFWiB1s//7VlkUgKSoMwjMJFVoCioPzIOkwM9BdCC/GDBuKxkiGXU2uVcA+52KJmQLYPzllNY8p5JpqMFyoGwQkYt4rO+Vl8flo7jBZRJ0kqEQqA6GGn8NKFoKgHZpMHaZqEeR2nDEWyYRclzfJoghZVCFSaK+EXkJqs3DY+rzwDnywboujkI4MQgQ==\",\"7v6xsfyTFtjx91HiU6n63eEVRZNaKH++eHBIG852EkMHHl069ByDToRb/dA9O9anY6buuQyCxj7AiStNpByUYLej/LjrN7J1/e1srU69Aw8OzHq8xNQsh3MCsI/ggbRLbNEhq1uMt152afTptH1+KyHdZfL/6zMaFBE527rLKyXAA6UFwjWJ5QfsGPFB/wzbDnKFMo9SD25QJsGA50yNQ23QnQs6kWNQSrYheEA/j6nuulKtods4tez2yozRl0e+c/SxAKka/TJ2zbXakAavAYUaQqW28ROAxp8u8OnVVJcouEwXR4MHvXxwWSONl2NXNoS5uEzITw4rYNdwN5AY5J6V6i0a0AJV9mVq9KCQr/4JRrcIlgTFGSt8h+S8Byt2zpAdYB54QEkELA+8Dsm8TKD1C5blgNevsHIEgcovxhI7Wle6MhxePCe75iaNyGVJA7PNnOXFxXQOMk7sy6CC/FBC+CvYyQ63J6agBMFuYzsBFbM/ioVB2vcyGJXDHhl644PHWT6nRVEUNC/SOI/jzvnRwyKZp2GUBDRIwizJcjOEC+fD7mwN4v+qYWgG2T4rTtwaizWtN35upGQc/I8RPjbcuLZ43KoX7qB788hEIYJIvg02JZgQ2HzxRswhxu+0coexhWedVyjDOBXnutL8kVrThsMQKGJAVZfynldtk+Cx0zif52GUBFGehkFEL7I3h60K0mW5OIvn8fRRlOd5mNN0uho1H0ee3Mohq22cFBxlsbSqPgrEZewlqbDZZUz4aHQI85JIBsyl8VavqFyRGaW1T1aXfJ1JX9foFkhkN/5eJblnZgHBJtwbMRNDTPdyNP+jGJ5nc38J7lcNosonGcepJUPMbnOf+wjsprJZJnFgGGFdTfBuWhzwrcrmdU+yQNWn/XVNV/gLdkE8LnY5jglVoPIUDEXcqFvbPAigvU5w+CgPfPhECMph7KRi7jHWNsTN3zF7FIDdOGT0xUpe2yzPn4ZUl0kTDyNSiIE/acu7NIGGhYz3qe9qNDoAGisSfe5/Zn8y+oTG3WDMjcswGykpJggss4sYTB/xmfyBXDLP0tJVYSQP3DG26oOJzaioCFjSQQEapajTIpZmfeisVZLIkpWIw9Q+0VWBYu4uBhSQZYVCHR2GLKzF9RZKuN0PEwnwoOu986Od6XEA\"]" + }, + "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/\"579c-2o8ESZvqhNu0mOmnRkSVU2kgQkE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "120ecd8e-5436-4168-9ff8-72abb7dabe79" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:06.881Z", + "time": 3760, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3760 + } + }, + { + "_id": "5baa3ea9aa3d2dffd142f5b608b05205", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow4" + }, + "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/\"5798-XPOKe622Mc4Be1oqyaeAcR8Oe3c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0eaa893c-726d-4124-9eb4-a4b045b7db4e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:10.648Z", + "time": 1073, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1073 + } + }, + { + "_id": "b85b228555ceebc4e32cce101c82cd5c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow5" + }, + "response": { + "bodySize": 4242, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4242, + "text": "[\"G5dXAOQyW9Xrq8iZWY4x+JDvnosoqF76oqKgb1dUyFIa1NgSIckcQfhw7d8KzlVWuEoiBaSJhNlkIh4VCBXhZDbJ7t/X7idwBWAJiMow+yqZ8gdXVQ93J4y8U+6WMVW37n05hhDIg+p6OXeQAkpwaN1XbY5Nqy8JeKBYh0HdXi8Py74m4MGRCufsUxy4rv2mn5zUCq5+/Ep3txNC2bDWogevBs9QBh5YhycL5c87BPi/FXyjz6zdMXucZUgpZlSkWUphmemht053ZJFoerJj9ggeuH3JeWUA3qadlXdQeHVbh6fdo5kRO4dS9W3rge4d1zuaYfH09Lz5sgJoDwElNH3byLbtUDkwn/GGI00YjYowgcHLcC3Pq3erh91l+rPULXNSq8dHSYIoDUVR8yyMYHiBu89HLUp10uoGHjDutLFQ3kHa1fVk0Nr9TeZMjx6cr+whoQR/Oq3UEhupkHBcsWryk1tgQD50RBpL/n3+CQ27Ed2Q3P3k5GHhQHm3LdWeNNp0zFWKMLdWKUIIOTNz/Ll85G9ykIFHmu/RfWFGsrpFO568SdDd4NXTD18L8nfiHZ3v0Y1HUozirk0JvJK/yU0xMFR0cwbDUiO5Z/65rY5jiqOfYinrj8ifuzmSR0ZvV7uRR+6DR+4DKKz43cjPYtwCIYRIUZIKzpJ168LvLRq/guyWUQKv88k0t7S5KDQ/g5e5FF5OqHHmtSXZw1BCCKnOPliSqiLCN4rBX8jdZYOZtXKvnuCAAMlvK8z9YQ9oj9Fh569ieHlTqWEynlRqOvUrNa5U9TLgAVFO7INUajKewOABnlE5+mOgDelQuQY1TDvZ4OcioIRHo4XeoXWrjsl2h92pZQ7DXIZZztq4iTs9x352SnIt3JSgoVHCi2KWFmkyi5s4mdUhxrOmEHXYsFjwJm0qiySYwzYh+E7ScT94yX+Ok2kUT9NgmgbTMAiCyWQyd3q93WydkWqPgUhDmJub4jcoE6/cTVxP0rBUUL+4XXuEi7QeUKCDXkZ0cM+JAlDDyAcQJaAR2/r9Qh6/oGHwKuj/+ka36NeY5k1OwxnLGzqLI8FmBRXNLI/rmqdpHGWAaXSEXjTrHxsMwLMoxZMBOP143H2uByonXXuuI2UXnvzvfyQSyJ+b4B8STMi/8VlfnG1SVm8Rn6CM5qQjzsyQQ+XswBadk2pvmd7ZVyD3zOe667SyPteqkXtf\",\"7tnroYZirwi9ExV4pIK3q10FnK//mRk2NJ0hfxPVt21YAbIhtbVio1vcVJMI7fczeIE+BclXj26lTPrMpYBBHLt2frIhYzRk9L//ISY+n/wbW+zWFQ6NVGyvPSrF4XwsMDZwOTvbvgleBXIRk9sSK+7Rddn/nmMwcB/Uj4Z3T1leJ5VA4zl/XYzxlAYv1SjOfBhk5R6Dp1SoC+0qX77HdNQXlWPG4G01pWC06vHzh8f1hw9Ci3svvWUOL+w2K+KaU0GThtbxw59Yy9Wn74/VKDIkwlqyFq70uWhGCyX/DhCoBEreG0KwsvhUKAYEz23GXQyRkVmmWeiipdpGIUUFTTsM/FGD56i8jfnCWilINEZYFWKRjBlw7og3qFrdBoDvG6LzMHLeQRfbC7jdKmWR60P+/rvfSQGMD6WJbi+IocIhFiu40yzlTZEGCcfEXKcGSesbJtveoGPIVHmLPqZBfF2HGYNRNi+UcM1AAoHjQQmt3qt7k6hGjyuAU9ReV7IXF5apYPIG6lcDBSprfJ3QrldAYYqwTvP/TUJU8rpNu1E4RLu7t2dxQZsEWZ6lNK1EeKtEVNmo0e8uuhK08jTvwWDpLKQOUffy2s2DLcwUjyhEphslfKtQTGRLCZSUjMnDDK3QTTud0GQQQX7/QmD2OIuCNG8SkYUhzxE1zJ9WCtY9KC3QEmaQHJAX/5/wuz3rI5LF09oSbQTN7ki8JI9JWr2XfF6p77on/HR+nDRIRBTJ+6yXH//+AOaV2iKSg3MnW/p+zfjROrbHeaPNHo3mx1sd5oyE5taXgre6F37LHFrne4N8s10E+B6buO9Zic7MAAX0Bk8dbQ+k0YZ02iA5A4352XmlSo4OBwza73TESrVvkbBa/I+y80joFn4Z4w5YqfLnI6j+L7Y9CSIVYcSZ2+xIu+ORutX8uCu4HrDJy0o5cyNmDS47/zyb+pecjW07jiMB7Uoy+zAbQ9+hUgB3G6NmwTv0O/GMzGpF/iajL539kVGUZGWMNsQgE1Lti7JtcpHuQKQgmgDbT/qp345UW7ZKxxv/oq5RrUnuIzICb5spR9ZWnlcfV8v1Yve0KKpvW4fValt8+LD5mugWVt+e1s+L3XrzqfWCqhm88+h9ZeTkKsboEmKmVhj5KKJ0Gd62+oILytMhRkwArggV1NHb+qCQH/bopCHk+psh9JpVSwsdXcKiFtyQaBEJhTR5J+mpaCtOuSnxU+SSFry/TTHLtW0/Pzystlse1vfCpPpxX9VZw8O04CzGeqhHB/O4WH9YLbPnNMNDKsdE7oDE6dfxK1WB0/8V98E557qr4A0MHnCeaY2c15rzcOuHlPVDsvqhq65dJFd/hwO2rYYS9lqL+obgwUFCCQfdMhg8uI5TLjclb/rfeR91b7QZhcpT0XwL/MqkJgN5pAHvT3NazFofNh+fPqzELkIe2ilNKdKI8abIw2XLN2j7Dpfdvb4JCYyujjiIfSaKoKrYDZiPjQ/CchRtLsNKhbZ2GNZ/mqhgWShiVucoFmv4WWE6+e0FYIZs3pavGrTthZD6CRoFIQPP6uNr2iEbyClJ+NrAcyWoREd81vRShTwMZJDZnoo9n7yT2DM5cMGmoQxCmr+v8jxsoiJLMIqD+8KxHMNgyztFR565PI0Qldo4oD7Modrk/iBje668VaIHWz/+tWWRSApKgzCMwkVWgKKg/Mg6TAz0F0IL8YMG4rGSIZdTa5VwD7nYomZAtg/OWU1jynkmmowXKgbBCRi3is75WXx+WjuMFlEnSSoRCoDoYafw0oWgqAdmkwdpmoR5HacMRbJhFyXN8miCFlUIVJor4ReQmqzcNj6vPAOfLBui6OQjgxCBbg==\",\"/rGx/JMW2PH3UeJTqfrd4RVFk1oof754cEgbznYSQwceXTr0HINOhFv90C071qdjpu65DILGPsCJK02kHJRgt6P8uOs3snX97WytTr0DDw7MerzE1CyHcwKwj+CBtEts0SGrW4y3XnZp9Om0fX4rId1l8v/rMxoUETnbussrJcADpQXCNYnlB+wY8UH/DNsOcoUyj1IPblAmwYDnTI1DbdCdCzqRY1BKtiF4QD+Pqe66Uq2h2zi17PbKjNGXB75z9L4AqRr9PHbNtdqQBq8BhRpCpbbxA4DGHy7w6dVUlyi4TBdHgwe9fHBZI42XY1c2hLm4TMgPDitg13A3kBjknpXqLRrQAlX2ZWr0oJCv/glGtwiWBMUZK3yH5LwHK3bOkB1g7nlASQQsD7wOybxMoPULluWA16+wcgSByi/GEjtaV7oyHF48J7vmJo3IZUkDs82c5cXFdA4yTuzLoIL8UEL4K9jJDrcnpqAEwW5jOwEVsz+KhUHa9zIYlcMeGXrjg8dZPqdFURQ0L9I4j+PO+dHDIpmnYZQENEjCLMlyM4QL58PubA3i/6phaAbZPitO3BqLNa03fm6kZBx8xwgfG25cWzxu1Qt30L15YKIQQSTfBpsSTAhsvngj5hDjd1q5w9jCs84rlGGcinNdaf5ArWnDYQgUMaCqS3nPq7ZJ8NhpnM/zMEqCKE/DIKIX2ZvDVgXpslycxfN4+ijK8zzMaTpdjZqPI09u5ZDVNk4KjrJYWlUfBeIy9pJU2OwyJnw0OoR5SSQD5tJ4q1dUrsiM0tonq0u+zqSva3QLJLIbf6uS3DOzgGAT7o2YiSGmezma/1EMz7O5vwT3qwZR5ZOM49SSIWa3uc99BHZT2SyTODCMsK4meDctDvhWZfO6J1mg6tP+uqYr/AW7IB4XuxzHhCpQeQqGIm7UrW0eBNBeJzh8kAc+fCIE5TB2UjH3GGsb4ubvmD0KwG4cMvpiJa9tludPQ6rLpImHESnEwJ+05V2aQMNCxvvUdzUaHQCNFYk+9z+zPxl9QuNuMObGZZiNlBQTBJbZRQymj/hM/kAumWdp6aowkgfuGFv1wcRmVFQELOmgAI1S1GkRS7M+dNYqSWTJSsRhap/oqkAxdxcDCsiyQqGODkMWDut6CyUIwxoHHnS9Z360Mz0O\"]" + }, + "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/\"5798-cCSg50lAnQhvh1UhGMCOwGoiyuU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0cab9eb3-14a7-423c-9859-849f343ba425" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:11.728Z", + "time": 951, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 951 + } + }, + { + "_id": "5d4e8a4248ad016fbeebbdf2af511e64", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-wBdoTVIIgdZdPlMeB4p3z5O9fvI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e090899a-216c-4dd9-95ab-f080ab5f4059" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:12.686Z", + "time": 4188, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4188 + } + }, + { + "_id": "fc01bdea78d63975aa968d573e63f23d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-CvCXkJ/gBcBiXiXL7l0U3jzfvHY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "355ded25-0929-43e2-844c-a45af2099fa7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:16.881Z", + "time": 2911, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2911 + } + }, + { + "_id": "4354b36aa22acd5d01a455e4014f628d", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow7" + }, + "response": { + "bodySize": 4242, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4242, + "text": "[\"G5dXAOQyW9Xrq8iZWY4x+JDvnosoqF76oqKgb1dUyFIa1NgSIckcQfhw7d8KzlVWuEoiBaSJhNlkIh4VCBXhZDbJ7t/X7idwBWAJiMow+yqZ8gdXVQ93J4y8U+6WMVW37n05hhDIg+p6OXeQAkpwaN1XbY5Nqy8ZeKBYh0HdXi8Py75m4MGRCufsUxy4rv2mn5zUCq5+/Ep3txNC2bDWogevBs9QBh5YhycL5c87BPi/FXyjz6zdMXucZUgpZlSkWUphmemht053ZJFoerJj9ggeuH3JeWUA3qadlXdQeHVbh6fdo5kRO4dS9W3rge4d1zuaYfH09Lz5sgJoDwElNH3byLbtUDkwn/GGI00YjYowgcHLcC3Pq3erh91l+rPULXNSq8dHSYIoDUVR8yyMYHiBu89HLUp10uoGHjDutLFQ3kHa1fVk0Nr9TeZMjx6cr+whoQR/Oq3UEhupkHBcsWryk1tgQD50RBpL/n3+CQ27Ed2Q3P3k5GHhQHm3LdWeNNp0zFWKMLdWKUIIOTNz/Ll85G9ykIFHmu/RfWFGsrpFO568SdDd4NXTD18L8nfiHZ3v0Y1HUozirk0JvJK/yU0xMFR0cwbDUiO5Z/65rY5jiqOfYinrj8ifuzmSR0ZvV7uRR+6DR+4DKKz43cjPYtwCIYRIUZIKzpJ168LvLRq/guyWUQKv88k0t7S5KDQ/g5e5FF5OqHHmtSXZw1BCCKnOPliSqiLCN4rBX8jdZYOZtXKvnuCAAMlvK8z9YQ9oj9Fh569ieHlTqWEynlRqOvUrNa5U9TLgAVFO7INUajKewOABnlE5+mOgDelQuQY1TDvZ4OcioIRHo4XeoXWrjsl2h92pZQ7DXIZZztq4iTs9x352SnIt3JSgoVHCi2KWFmkyi5s4mdUhxrOmEHXYsFjwJm0qiySYwzYh+E7ScT94yX+Ok2kUT9NgmgbTMAiCyWQyd3q93WydkWqPgUhDmJub4jcoE6/cTVxP0rBUUL+4XXuEi7QeUKCDXkZ0cM+JAlDDyAcQJaAR2/r9Qh6/oGHwKuj/+ka36NeY5k1OwxnLGzqLI8FmBRXNLI/rmqdpHGWAaXSEXjTrHxsMwLMoxZMBOP143H2uByonXXuuI2UXnvzvfyQSyJ+b4B8STMi/8VlfnG1SVm8Rn6CM5qQjzsyQQ+XswBadk2pvmd7ZVyD3zOe667SyPteqkXtf\",\"7tnroYZirwi9ExV4pIK3q10FnK//mRk2NJ0hfxPVt21YAbIhtbVio1vcVJMI7fczeIE+BclXj26lTPrMpYBBHLt2frIhYzRk9L//ISY+n/wbW+zWFQ6NVGyvPSrF4XwsMDZwOTvbvgleBXIRk9sSK+7Rddn/nmMwcB/Uj4Z3T1leJ5VA4zl/XYzxlAYv1SjOfBhk5R6Dp1SoC+0qX77HdNQXlWPG4G01pWC06vHzh8f1hw9Ci3svvWUOL+w2K+KaU0GThtbxw59Yy9Wn74/VKDIkwlqyFq70uWhGCyX/DhCoBEreG0KwsvhUKAYEz23GXQyRkVmmWeiipdpGIUUFTTsM/FGD56i8jfnCWilINEZYFWKRjBlw7og3qFrdBoDvG6LzMHLeQRfbC7jdKmWR60P+/rvfSQGMD6WJbi+IocIhFiu40yzlTZEGCcfEXKcGSesbJtveoGPIVHmLPqZBfF2HGYNRNi+UcM1AAoHjQQmt3qt7k6hGjyuAU9ReV7IXF5apYPIG6lcDBSprfJ3QrldAYYqwTvP/TUJU8rpNu1E4RLu7t2dxQZsEWZ6lNK1EeKtEVNmo0e8uuhK08jTvwWDpLKQOUffy2s2DLcwUjyhEphslfKtQTGRLCZSUjMnDDK3QTTud0GQQQX7/QmD2OIuCNG8SkYUhzxE1zJ9WCtY9KC3QEmaQHJAX/5/wuz3rI5LF09oSbQTN7ki8JI9JWr2XfF6p77on/HR+nDRIRBTJ+6yXH//+AOaV2iKSg3MnW/p+zfjROrbHeaPNHo3mx1sd5oyE5taXgre6F37LHFrne4N8s10E+B6buO9Zic7MAAX0Bk8dbQ+k0YZ02iA5A4352XmlSo4OBwza73TESrVvkbBa/I+y80joFn4Z4w5YqfLnI6j+L7Y9CSIVYcSZ2+xIu+ORutX8uCu4HrDJy0o5cyNmDS47/zyb+pecjW07jiMB7Uoy+zAbQ9+hUgB3G6NmwTv0O/GMzGpF/iajL539kVGUZGWMNsQgE1Lti7JtcpHuQKQgmgDbT/qp345UW7ZKxxv/oq5RrUnuIzICb5spR9ZWnlcfV8v1Yve0KKpvW4fValt8+LD5mugWVt+e1s+L3XrzqfWCqhm88+h9ZeTkKsboEmKmVhj5KKJ0Gd62+oILytMhRkwArggV1NHb+qCQH/bopCHk+psh9JpVSwsdXcKiFtyQaBEJhTR5J+mpaCtOuSnxU+SSFry/TTHLtW0/Pzystlse1vfCpPpxX9VZw8O04CzGeqhHB/O4WH9YLbPnNMNDKsdE7oDE6dfxK1WB0/8V98E557qr4A0MHnCeaY2c15rzcOuHlPVDsvqhq65dJFd/hwO2rYYS9lqL+obgwUFCCQfdMhg8uI5TLjclb/rfeR91b7QZhcpT0XwL/MqkJgN5pAHvT3NazFofNh+fPqzELkIe2ilNKdKI8abIw2XLN2j7Dpfdvb4JCYyujjiIfSaKoKrYDZiPjQ/CchRtLsNKhbZ2GNZ/mqhgWShiVucoFmv4WWE6+e0FYIZs3pavGrTthZD6CRoFIQPP6uNr2iEbyClJ+NrAcyWoREd81vRShTwMZJDZnoo9n7yT2DM5cMGmoQxCmr+v8jxsoiJLMIqD+8KxHMNgyztFR565PI0Qldo4oD7Modrk/iBje668VaIHWz/+tWWRSApKgzCMwkVWgKKg/Mg6TAz0F0IL8YMG4rGSIZdTa5VwD7nYomZAtg/OWU1jynkmmowXKgbBCRi3is75WXx+WjuMFlEnSSoRCoDoYafw0oWgqAdmkwdpmoR5HacMRbJhFyXN8miCFlUIVJor4ReQmqzcNj6vPAOfLBui6OQjgxCBbg==\",\"/rGx/JMW2PH3UeJTqfrd4RVFk1oof754cEgbznYSQwceXTr0HINOhFv90C071qdjpu65DILGPsCJK02kHJRgt6P8uOs3snX97WytTr0DDw7MerzE1CyHcwKwj+CBtEts0SGrW4y3XnZp9Om0fX4rId1l8v/rMxoUETnbussrJcADpQXCNYnlB+wY8UH/DNsOcoUyj1IPblAmwYDnTI1DbdCdCzqRY1BKtiF4QD+Pqe66Uq2h2zi17PbKjNGXB75z9L4AqRr9PHbNtdqQBq8BhRpCpbbxA4DGHy7w6dVUlyi4TBdHgwe9fHBZI42XY1c2hLm4TMgPDitg13A3kBjknpXqLRrQAlX2ZWr0oJCv/glGtwiWBMUZK3yH5LwHK3bOkB1g7nlASQQsD7wOybxMoPULluWA16+wcgSByi/GEjtaV7oyHF48J7vmJo3IZUkDs82c5cXFdA4yTuzLoIL8UEL4K9jJDrcnpqAEwW5jOwEVsz+KhUHa9zIYlcMeGXrjg8dZPqdFURQ0L9I4j+PO+dHDIpmnYZQENEjCLMlyM4QL58PubA3i/6phaAbZPitO3BqLNa03fm6kZBx8xwgfG25cWzxu1Qt30L15YKIQQSTfBpsSTAhsvngj5hDjd1q5w9jCs84rlGGcinNdaf5ArWnDYQgUMaCqS3nPq7ZJ8NhpnM/zMEqCKE/DIKIX2ZvDVgXpslycxfN4+ijK8zzMaTpdjZqPI09u5ZDVNk4KjrJYWlUfBeIy9pJU2OwyJnw0OoR5SSQD5tJ4q1dUrsiM0tonq0u+zqSva3QLJLIbf6uS3DOzgGAT7o2YiSGmezma/1EMz7O5vwT3qwZR5ZOM49SSIWa3uc99BHZT2SyTODCMsK4meDctDvhWZfO6J1mg6tP+uqYr/AW7IB4XuxzHhCpQeQqGIm7UrW0eBNBeJzh8kAc+fCIE5TB2UjH3GGsb4ubvmD0KwG4cMvpiJa9tludPQ6rLpImHESnEwJ+05V2aQMNCxvvUdzUaHQCNFYk+9z+zPxl9QuNuMObGZZiNlBQTBJbZRQymj/hM/kAumWdp6aowkgfuGFv1wcRmVFQELOmgAI1S1GkRS7M+dNYqSWTJSsRhap/oqkAxdxcDCsiyQqGODkMWDut6CyUIwxoHHnS9Z360Mz0O\"]" + }, + "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/\"5798-5lFlK5/FWaz35kLkmmu8CA/gkWU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a6174f31-6358-44d9-985f-b6757c65d9d8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:19.800Z", + "time": 560, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 560 + } + }, + { + "_id": "eb59eaed43e23ec6c61d9077b21784bc", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-R7A1BnWHVDWem8udODGx9F7mQhI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f72b90d6-6f51-4f2a-bef4-02da6527dc82" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:20.368Z", + "time": 2210, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2210 + } + }, + { + "_id": "8608b0a782c8b76d8d39886eb587703c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow8" + }, + "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/\"5798-ep0sciSTFLV31JnXcjISIrLTA+w\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c7a5d55a-8617-4448-ad39-231c72b1620e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:22.586Z", + "time": 613, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 613 + } + }, + { + "_id": "b011f719de40d6c5ff9076eab50ae222", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 16600, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "16600" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1895, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/wfEntitlementExampleIsPrivileged" + }, + "response": { + "bodySize": 4454, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4454, + "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-66X6ldMjC5jvDXElOVL44xPuim0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "d29331c3-93d7-4c5e-901a-2eb13e0d2a55" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:23.207Z", + "time": 930, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 930 + } + }, + { + "_id": "0baef10277fb1741d53188863db05ba6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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": "objectId sw \"workflow\"" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=objectId%20sw%20%22workflow%22&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 544, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 544, + "text": "[\"G4cEAGSZrar61MMgSYBMey9emSLhbNdPdN3ND8QnSziR7G+eSFuSWJRAeEmkHc4J3CDCoLZ5IgQtjQZ9OkcWj9BR/8HJ9npzBQtP8GtW0nfC8usRxvawftthAWne1ZidKUmcoZHQCGs32VckHm6gCkywrRfarnat324Pl2O1vbW7s7MXutLTcqX9y1EPL86Ppa70W0y72Xa1bQpK3JTV53K8NFWrkvRKvTSYYK1XpZerAssj3IPAi3KlsEBwIRrHxvFnLwvj4sOcXf4JEzylnhN81fNCaaYkRDFJ+gnPz5NgFzbMXBmdqeKDod66kdyyEfQxYeldaiL5pLdfjno4OQOn0NTEbVCgVIvvYPOcM6syzkzk0GMKuEQUR4sxG1KJhqpDI9GxwVwzuqolxEa80uNV7oJfo3G9Guer1Vo3V9PS0RS5YBDPoHmW4DXdTDl58siCw0bxhTUF07NDQzmJqS0U41LhXrBnLVbOiORZqYiasMcUkergZxkQf8yRyYt7ieimWTBV5VxmTk7EY5af8Pz85xk=\"]" + }, + "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/\"488-nBksMTMbxh889t79XhNJYL/jkTA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 20:01:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9dd56c29-dc5e-4587-b753-e77312ac2f58" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:01:24.144Z", + "time": 157, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 157 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/oauth2_393036114/recording.har new file mode 100644 index 000000000..ca7303884 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all_file_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "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": "Tue, 05 May 2026 20:00:36 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:36.839Z", + "time": 134, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 134 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/openidm_3290118515/recording.har new file mode 100644 index 000000000..50601298c --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_all_file_no-deps_655449289/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_all_file_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 20:00: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T20:00:37.015Z", + "time": 180, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 180 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 20:00: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-618d19ae-995c-4969-b56a-8fa049c8fcfe" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T20:00:37.202Z", + "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-import_3803419662/0_f_no-deps_219225225/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/am_1076162899/recording.har new file mode 100644 index 000000000..ceb4000db --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_f_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:43:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:02.487Z", + "time": 160, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 160 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:43:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:02.825Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/environment_1072573434/recording.har new file mode 100644 index 000000000..3e9d77d6c --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_f_no-deps/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-39" + }, + { + "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": "Mon, 04 May 2026 22:43:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4a5a5666-b65b-4442-a06c-f4cb924aadad" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:02.941Z", + "time": 108, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 108 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/iga_2664973160/recording.har new file mode 100644 index 000000000..36c9b7fe1 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/iga_2664973160/recording.har @@ -0,0 +1,377 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_f_no-deps/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_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-39" + }, + { + "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": "Mon, 04 May 2026 22:43:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a2fd4513-8e17-4d3a-9c73-88becae23e3e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:43:03.174Z", + "time": 573, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 573 + } + }, + { + "_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-39" + }, + { + "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": 4250, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4250, + "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/\"34fd-C8QmmPSzGDvcVGIBfZ31+p9lixo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:43:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cde1b3d6-0d67-41be-88fa-129c60c4792f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:03.753Z", + "time": 384, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 384 + } + }, + { + "_id": "e1e3ac21b7c0282a7bb1f6c31cc36653", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 2004, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "objectId sw \"workflow\" and (objectId sw \"workflow/BasicApplicationGrant\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=objectId%20sw%20%22workflow%22%20and%20%28objectId%20sw%20%22workflow%2FBasicApplicationGrant%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": "Mon, 04 May 2026 22:43:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "53c041ac-d37c-4b90-b4df-b431f99cb29e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:04.149Z", + "time": 151, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 151 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/oauth2_393036114/recording.har new file mode 100644 index 000000000..341958210 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_f_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "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": "Mon, 04 May 2026 22:43:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:02.664Z", + "time": 135, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 135 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/openidm_3290118515/recording.har new file mode 100644 index 000000000..9e8cc6f63 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_f_no-deps_219225225/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_f_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:43: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:02.863Z", + "time": 177, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 177 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:43:03 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-a62b27c6-08f3-4a80-9311-17406a2147c1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:43:03.059Z", + "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-import_3803419662/0_i_f_3126144190/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/am_1076162899/recording.har new file mode 100644 index 000000000..f38f91a7b --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:40:38.905Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:39.241Z", + "time": 105, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 105 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/environment_1072573434/recording.har new file mode 100644 index 000000000..ee478af15 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/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-39" + }, + { + "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": "Mon, 04 May 2026 22:40:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2e777399-3b6c-4d48-80b0-9781b6aeb6d7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:40:39.352Z", + "time": 100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 100 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/iga_2664973160/recording.har new file mode 100644 index 000000000..f9fe31586 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/iga_2664973160/recording.har @@ -0,0 +1,7151 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_i_f/iga", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "98e9870d9a09dccc2f491469cd37e878", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2264, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2264" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"custom\":true,\"displayName\":\"test_workflow_request_type_4\",\"id\":\"3eb082e7-68f2-409f-9423-26e771259dc8\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:44.548070781Z\"},\"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\":{\"id\":\"testWorkflow4\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 924, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 924, + "text": "[\"GwoJAMT/puq0cm9GUemMKa1j6yvBBRzAPfz8sXS/Uvn/vaumorPOXxe1jSpoFFmWOB1OcMIjm43aeullAEMYufHHt1AdBHIaJE1GdVQ1fRYVSdtHbZHlUVZRXadZ2XbDBhzpFH72Uk4JAp6c/1oaO+4nZvllaXfj93z59Yy+CnD86ocQFPfk/BPJjxQIHF+WFhAphxv+0lQ6iC2GZjo1GuJti68peQmxhV/PCAJ7kRdDoQ/bLYSZ4EhV0auIJyYBUNWrofTKaDjf4G7pb64sdRC9nDjiUO5Ee7JaTiC8nZOyMYgttMK9p7zu41DuUTk1mBAZ7me/ACLn6NIbsM2ETsR9wRUPlc5o1htbqkgwVwIhcLgDdJickw5nlXJ7v1L/SBzwTwl2+4EMO2vmy072NdBaIMy52cm+GuD9C3XSXVvq1crQDE4fm/FThKuxpAiEKAPsZP+0P5Tbt7L3URAOHH05lbiRWNtxTaSIe2BlYhTWzbLN+4KlP5o7j8DhaYUat3a66VFO5gSBiVnq9UvRaqbsel96Cm60O2FIupTVsk560kRjnXhwZNlWW9aOw3JmNKvgA84dmNIEVyRL4hemOgkMsqrnUO5iPvHKFGphb99jrRg/A1NfACL2bIxy7NH9ry40sXt9cckktHDXWidP9tmYoofnSMBj4hOdDJI9ufPSehYXGhuGEhFGfqzUJl1K0h2uxT3QXYt0kutKDCZmEIgLCyEMZWCQRcJ7mNCXF/3PYX+nPTLZv9h+GAwSjzMwZkJSI/SvRLSC/oToD2xHCMPZqBmMaCgUI1OOmY8toVTGw6Jf0dZAhPISIXxwpJa6GcTbNnyEr2jHnzMlLzs5QoAjP1StLyFLsipKyigp7rNMFIkosp2sbl/BkX6K/M+vS0XZiqTeqco6qZo0bV4RAg==\"]" + }, + "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/\"90b-ziFSir9qceDgbhlNSyZDMJqxR6U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:43 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3f7dc4c8-63e1-497a-9a35-8a028289917b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:41.117Z", + "time": 2258, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2258 + } + }, + { + "_id": "671df05534586babffbde9fbac6c2157", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 3097, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "3097" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 1104, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1104, + "text": "[\"G0sMAMT/n6o/rZw7o6ji6DOmtI6sp5gfCUxJOj9/vxfkG33BVjjxY0EVFhXnnnvfolujbW3j+bABYDZW63WZwIgjbvTkX8x78KEjNREklotFNt3xP0/ZeyAPDt1Dou2LQoiuzkohhqxpW5GpphRZM5RzUc+Kfy214DA2HtpeD1p1I514uyQfNQXI+0eOT+vfhtF+Qv5C9/Y6HdHnZSC/bvUzkDiePX1AlhxhvqBJBchfzO00WQN5/4vniaKC/EX8XhIkJiw/FXhKUCrrjCaAvhEcSzhZv5grQKdBz1XU1pw+IJyRe9eeeshBjYE4dNg1kbxRI2T072SlCvIXxl+D93Q9xKHDlQ66G0mMJ73fArLm6GdBkLo0OhEX67J4oQrWsMH6FY1M83hLUuLIIUrD3Oz2ODvpsL5Q5lXhoH9asKdt2khju5Wy3Y0UBG0Y5vJsdyMZ9PnO7PYnngb9dbUAFjgz2FKfI9yAAhGoKPPZ7oavz4YOG14NEWBR4gh8LlIWb6efnB1dHHTGxgayJel9xZOj9xCROCJ9oeYRoO67UuM7QWK0n/y5E0vtvzdUpKRZScJ+B4XA8JOyXkVKScDVmstAno3IldJr2MisYdv8wMgOnvmEsZaWkAaxhQnG5CtfunPocPg+Ru0KN9qnrat2zIugJSGS5xjL0z4j2v8qoTVrJ4dHzIKHe9DV2t0N9kbsMTWCl3l+FP1JklM5j8pHxouArZBkpxa/emXi3nyaHtfabpp+z3KW6150o+0yd3UppVqGqizgoVOU1/5nC6OaJhnDyMaVOmtHUgbxSpNV4oT2B1kI6V5pu/80Pyi814RNbmmKZQ5rJtnXhITt1aT0yDEDVaXuV2pzqVsSVSelZIlvg0gxhUj8ioUaW2DR2dAlcbzqDzLNHd5RNNrWH2SYUIyY41HioHppLyalRwQH6FDp0QHjWBufi2D2m8/fvUl1FCuTbJ4xQOhRMj96TVbinKVmUD0IOJLepI32O+enJjZtMD+4FbnalB4TL0DIwSYTRdWrxmdue8DS8y5URTXLCpEVzUVVyaaQTbNSF/UdOFoG5J/9RVZWWSneUlVStCuiakqxWtazO6QE\"]" + }, + "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-TW0loSuYOE2ZGblYuBp8ehBND28\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:45 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "39a08879-db34-41d2-9a6c-99382495b642" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:43.386Z", + "time": 2018, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2018 + } + }, + { + "_id": "8f5cf208bf76aa5f1293fa3aa0aea754", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2244, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2244" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"custom\":true,\"displayName\":\"test_workflow_request_type_5\",\"id\":\"af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:14.317988333Z\"},\"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\":{}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 928, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 928, + "text": "[\"Gw4JAMT/puq0cm9GrnJjdEqrX+YrIUHgAErT8dP9inwN/1eceW8rrWwpLXpqK6iCluqo2xJPD0/whI/sdIjzrkCDdGZ/vIPRUKC6pGk9L4t6QYuirOe6mI+Ii2m5mI4XmiuqVpAYT+Fnj6lhKCSO6eXHh8/a+p+XwIMbv+cl/a35ZQKJf38GqssSL4G/oYYScfXODUWoDivfNN5BPXR4aTgRVIf0t2YoDDFenCzlsp0nNwqJMSh6DcvEwf1/d21WlIx3UB1MPOev1gTWUDXZyBIm7rnEwZGFSqFlxaJQHVxK9fuy7pMw8dpEU1lmw2HqJ0GNJfS4BWzrRHtxOZOKh1L0TtQ+zEEkmCaOnCVMDzr0Z0/jzDFx453cG+EASgl2+1YadrGfVuxtaqBbIszJYm9TDfh+bvb0aeDa/N4khmZw+sRaniJczQlFIETpF3ub5/1h4magOgEMZYkimgqXJEocpxdFE+tOMbFaMYm8LwT+4jYmZInEv6ixz6abrsm2DAXrf4z/G/Pv2oS/TUoMuxOBJKesKzQlDhTNWfwqchB9aFm1hGXhnViYB5w7cKwS3OxXEh2YRUfQkV+/FEqYeNTaZEyhFvb2DdGKWjQd+gIQsRdjlGNB7X/l0Pjy9OhYFDLLeOjOEnub4pOjh5dIrIwjmqhmkGx0kSikuNCcM5yIMPwWyBX3Bul04M53y2lUyCe5raKyvjrNlnMuy0Api8ShUlFeROcI/zOFUREVWwyDf49VeW+ZHIpXQMEg4IoTIgI2E4LgiK8+ePU/lsjlmPnYEm1ZD4tuaGtQAtOL5/wkMWbUvaAeuvyUf6KBRi+xa7JGW/pW11or0XAiTRUKWAFE0/8SRoPRtBhMikF5ORqpcqDKaW88LO8hMQ4VEbGhLMaD1wxHajjtTebz2XiwKOf3yBk=\"]" + }, + "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/\"90f-GtsMSyLpP5wIIrgjA6pdSgf100U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:47 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f72e804c-7237-4d64-b03d-c0c53dff7d67" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:45.410Z", + "time": 1979, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1979 + } + }, + { + "_id": "2485d5b44cd731e7ae4b889002810141", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/applicationGrant" + }, + "response": { + "bodySize": 1383, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1383, + "text": "[\"G4gNAMQv35lfvzuvQArB6AhaF9E3HSVaJ+rZkk9w5GppLr1vrcwlAwAJwLlcf8QoiRyws6Q6Yab0L9N5TfRC46SyIZt1MBoSPw849KVXNkKgT8LC71XDkIjpQEdJz4bAjfOXVe1uIEtaeKyCWX+puPviXcuQWLWNRRb4qYUrxlnIDsElv2ZIXCtP0Y+lPepKsPfOhxIk6c+FoBKoYHCpvEOmevr38jW/cIzGbkKfBMH9Xz9Ef+Y/Qi/2OoVoKkxvo729PYo+MT1+TE99qqP1165pnO3/Sz2Yku1+d4dZ0///9HClH71pnj6jvT0qUeLZs44Ir8A+Skfotylsn5YAKskEgnlDXeLZTs77kB1kgWTNVeI3fBcg/wDaGimwLzREGOflv6jQuBCwLr5z2lRGrWr+6F3LPhouxqd0JNO5hf7ouTK3uBDo4C7kO4ofgbSprgX+er6GXAiE9ZYbFSC7ks6H/NPhb8NRQXaioTgoS52qG/k3EQItAp07UB6EMCp8puDTIStVBxYwobCRvVU1ZPSJa8mC7GBlWxeMcyFgwncTzKrmbNR9QgnIiYDuRiKwrbQjvs5H8kAVnKXK+clioiTlIGcBLUMc+qbQcFYy4WSr7EbBgdgYYA86qyOILiOl4hQD2ymBOTwVp2igYvhwvZ4IzeCMpLY8h+BazhQEIpQJVJw+9oYJp15VUQqSs0Dj5SSXgdrBH58OSWw7p8oa0miIb/B8xSlEZIHIt1DTj9hO+q7qxJCo3Q3xv2i+bY2/O1WR6Q4FgqaslLSKjInlIudbYE8/xgvQJUwkZ2ndFjR2UAci2kw7AQe2SghtcsuX6gImvEt1NKRoUSX2QSdFO+SF7Qgh4k8fRaVGzLs0NOf447v3VIMHX9tFbnFKlyw9eolAZepTpD6FZFe+ROUjyYXlkuUk2Q7Y+Awgu/1pNVxje2b1lfIZ3nOxqt2KuaPLObcy6MmAHLYkW3kpXbCPx4bTkIrbMPKUMp2rWT00eyXlFeyElIArIX4z3eofr28kS2aYddkSa2UcluAhWkv1jTJn0eDnQuJoPRTlYHI+BVagiyKxkhTSc3PiQu3cZWohO7QqbiExWM+JAboZjIb5mHqQAntkTZnpt8BeR8xW57QU2NPN1pEJ7wjWrQB3tEFnBG/Li7AcZDZqvq+/MlirqGq3gcBVYn/n8P/lwOjBJd/dOK+Jr6jEww6ygbnE3A==\",\"aY9iIjeDeNdyDvqRNHCvByWoKGw31B0x+ZZJYxrDg0bUAPdQ3DOpMJMdSWJ1HGWJTsn5Inu3PuarSMNRaSXLtO2l9OEzGA/H895w1htOv46mcjyTk0l/Mf8Ngd6bpLSvmfSG86+jhRwN5WzWn0/H09lwuZj9Rs4=\"]" + }, + "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/\"d89-uoDjL/qAi4kFYblecVb6KKYWt08\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:47 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "94d5234c-2797-482d-bc41-b06396cd20e1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:47.397Z", + "time": 214, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 214 + } + }, + { + "_id": "90ad0bbcfca5571503af06c3d1ac754e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 250, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "250" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1904, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicApplicationGrant\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/applicationGrant?_useLowLevelApi=true" + }, + "response": { + "bodySize": 711, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 711, + "text": "{\"id\":\"applicationGrant\",\"displayName\":\"Grant Application\",\"workflow\":{\"id\":\"BasicApplicationGrant\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.applicationId\"],\"notModifiableProperties\":[\"common.userId\",\"common.applicationId\",\"common.requestIdPrefix\"],\"customValidation\":null,\"_rev\":8,\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/accountGrant\"]},\"custom\":false}" + }, + "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": "711" + }, + { + "name": "etag", + "value": "W/\"2c7-LZjqzvqBx9C+7/KRRsBWTEa0e9k\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:48 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cc91a02a-635a-450f-9212-a4fd96d399e9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:47.619Z", + "time": 684, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 684 + } + }, + { + "_id": "5fb093680eba221cbfeb8b083dc80d21", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/applicationRemove" + }, + "response": { + "bodySize": 1379, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1379, + "text": "[\"G3INAMTPvVpfv6N3pZFWxJbavFqRMElIMQ7gFPkwaS29v7NyN1MAUECUTYFBAbIEtm9sHamvdLWyD3P5Op8oJHiZRBcrYDQkmgdsfs8zu2AIDEqY81rNGBLfakV7wI6DgO+PeKY8ZIG+nc1sCvlR4GvGQUEWCOuMIdH7u1yqxgq+517K+0JgNMQAw0/out97UJ2DZAHj73meG8cacqCmngWMP0sDu1RNIYPLuZYUyAIp7XXPyzpLwPhn401vymjoHz8PZENAjxPgmVXaGo8LTtxQeZvSwLrVQHo5euNiFBAj8dA9Z5rOYsYfjFQ6VHQQNxXQ7nVUhxedBktnhxzYNkHmwHR2yAaxtK/O9K3jgVkJmtEZSFl5lSTXsqUpEKmMoLPD29ow/tCpQbCC6CgQnSpjNxVI2/sWqZIitm2jsto03d1rHM859wFRIPCKarRSOu5ZTXOGxNQuhf9J8Sozbn2oAhs35K4KVJ4yU9IqMCeWnbQnz45aW3noEkaTTWljDgx1YIQIYymVige2DQTNstJLaQHjr/JpMKKonNl7HRRdSV3Y1ogifnex8n9rad1kMLVLD03bv726phqq8GLbST87pAlbj1mikjIGjahJI1mVh6BcILuw7DJM2HbM0Kk0aIwkp5qu4T1K9Rl4FTxNR29qe0IaWozxKEOHLGWHjYlRXoLzdt/XgawiKB7DqI6t9KydskoR45WEK8QJCYA7Ib0k296Y+xfYUsU0m7Yl1so0LGFC1lQg6htijOKAnw6Jvf5cgwPoxJhEVUyQe3Y+CoesejhxwtTaSZ5BFshUGEGismEPvfSsMt3hbepK7tkhespcPnl2iDon5Z4dLUeWjPeQANa+zDMp5TM8s/pbXPYxQ7Wg0x+p9FVQUzuEwDxnt87ofrNidGXC66V1mnhOCb4XlPWOCRbHuhUTeFYJ64wx0ApWaa8TCaQopIXVJ0yeetalSRoYQvWw8VFrryIXZrYj2bnJowzTO8ZPR1ERZGMNiX3lTZ8bl0yYCojoZTOvRTNhihof8zZ3fYbEQjn69n1pi4oE7Jx1PgFJ+vgUlCANpy/niBtkBr8T5DMeOASTDn3Zf4KWuxSAzEz2Ftra2qLgcqafP+l3YupZTsLbK4+h+1KeTh1hhVnT//90c2Y5ODP7/Ye2tihBgj9/CuLLs8zSUspZ7ke/k9Q6low=\",\"J5oX1An+bER53GEDUSBPzTznC157yI/k36vs/N7ia4Luvv4pkNpwZbUZGNWb8q0BVEcxLt8SI3X2T4EvxwvDxCjNcMAcMw5Kq6CGn7J0YHwP6tV6u1RtlarNx1pT1luy0Sh32u8QGKfJgH1mq1Srluqdx1pX1hqyVivX2tVatduotd4RIw==\"]" + }, + "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/\"d73-SphRnYn3m4+Z6OLXPYfWeJ7f+0U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:48 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "a115c5ff-e4bc-4d0e-8028-b44ef2345b37" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:48.310Z", + "time": 196, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 196 + } + }, + { + "_id": "b6682f45f95606d2d86e3fec4567079c", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 251, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "251" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicApplicationRemove\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/applicationRemove?_useLowLevelApi=true" + }, + "response": { + "bodySize": 714, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 714, + "text": "{\"id\":\"applicationRemove\",\"displayName\":\"Remove Application\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/accountGrant\"]},\"workflow\":{\"id\":\"BasicApplicationRemove\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.applicationId\"],\"notModifiableProperties\":[\"common.userId\",\"common.applicationId\",\"common.requestIdPrefix\"],\"_rev\":2,\"custom\":false,\"customValidation\":null}" + }, + "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": "714" + }, + { + "name": "etag", + "value": "W/\"2ca-OUCOlJVKXI0i1MZjC9xYbSat+R0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "3e659d14-eac8-43bb-933e-0cf4052b5c1c" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:48.514Z", + "time": 801, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 801 + } + }, + { + "_id": "8862f238dee5c4790ec65284f2fa4ec0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/createEntitlement" + }, + "response": { + "bodySize": 1703, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1703, + "text": "[\"G8cQAMSvvZpfv5uXJk84dKXitKbUqhsPNiubnAQ6QC6j8ON+rff7NW57HxWZnJglTCyK5SuVBtFioUZsWLNX2zONDAQmYcV6jrAGCpsaXwq/cMmm9kAEfCGwU8JBH3THUHiWSg/dYhQXK+50hBqx8F3nHdTfEbOOk4YakXY9Q2Hr7/xSca6cL7yVcl8I7A0x0/IbbLo/1o1d6GS9gxph4xe+HmxgA9XoNrKAjZVLHJxuoVIYuJYmqBEOu+6bss4SsPGHjXbecjbYPn4PqCMBs5+ApL5Sa3w74cQNdfSOGh/OBjI54K3JWUCNRAb3VAbnIBufrbRbahxEGgH25Bd1JNMtWKqeSyB5DDADU/VcDCLSvqrMp8CN3SqawplFfXlKwlV4ghFwURZS9fx5bdj4POgmWUFJFmAnZexGoO2UT5mUVLHkKVSmTYe7e03gax5iQhZIvEUNaykd90O3A0Oh9Rvlf1C87W3YPdeJjRv0jgpEnjJTMjqxJArPWr5HDrS2VaIpIZq8owtzwDQH7CGCOZVKJAN1GQjMsm2X4QI2vh/aZFWhnNknPytaybaQPCCI6BfZyv+tjQ9XTes3Htry9NP7D1SDCh+SZ63Vc7pi62FLRFqGnUZo0khW5WvSIZFdKDyncoJtVy2DdqQRSXYGV3hfOHOHfIK3sZi3fq6k0HLOvQzpspAdGpNZnpcuJfwfE5koFc1hpI6tzL1vWTtkvuLl5fAELwHthOSj0c//8eIBtiTGzNoWt1aqhXk5QdekQKhvwZwvBXjcoPIAADWqnC2Rhha4d+a0ELPCosCDwV1VJ5vvab2/GnqoEb1OKyiUdqlPhvQbyoVOuvVLCFwPHHZQdX9naU15xbuND4b4mmrcGpF55xonlroVm7gr067nHLAG6XZfBe1SDWQ/1XpSpjlBfTQcXTrAgei0YmqR42jOrXfLSMk7MLaSxG82oSmNCvgw8WPhiXQTkQ2HYkiG0rTrfZrBTR+uNLhfElnQ56lguZQ0m7368vH7p9lsIpR6yF1ISFTlqP8J0aUohdztBHQpvmJdW1FxmR2G2oVuyeikYUNQpalHyqtiNAq25G4kSDlUBAPyp4AyWfMX8RLHxsQJRDzC0YuAZGhSQ62dasIRTsBCuK5w3nfkCmtzE3J/X/RDWDAU1jrQv+9LD2iswSH4EGuQor+XgmpES+TPTXlqm0KGZBkEdOIgrZF8\",\"ukH8adOqqHFc1b/flEPkUNaYTMa1DjREDpWhB1TG8X1rU3G3vDuZprDLw/i11QO66hilppM7ilqoqGGXujyO64naLbh8aylr0L0BvrY0SW1Z7DWVEXT31YtvdwWNWchf6Mx3mMU1FOB3/j28zJOpbYobubVktGk/ynjRajLqNUmqtKvsh7gq6lGmHN1S1wyDKi6VptBMorSy0ZN6yhqTac6h/B+spCln2xR91BlfOSXrllHGX2DNeTIAYCPJO+jBgweUwsB05w4VisdBsD35L7UvDe7QLVaYDf3/T8+nyxRsV0zowQOqYUbKSM6BVGwjIU40qqMU9pVTZAHn03tvbGP1vOVPHa1zf2EsthD/p/275FJgx+apP9r9Lig3tK3ALPAa6jCRTG1dOk7a6JEBTLrAo4034HD/8HRv/2Rv//jbwbE6PFFHR/Ls9A/EVAlO2ucc7x2efTs4UUfH6vBUHp1dXJwd7B8e/kHO\"]" + }, + "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/\"10c8-blUx9zT20Ty0lbo572nuO76yAxQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:49 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4c423c12-95e3-496e-b7f3-78c707b10ecc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:49.321Z", + "time": 219, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 219 + } + }, + { + "_id": "47c87fa7a91d2f631db0f28c1df6be63", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 246, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "246" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"CreateEntitlement\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/createEntitlement?_useLowLevelApi=true" + }, + "response": { + "bodySize": 688, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 688, + "text": "[\"G24EAMR/l5an69+3mwQrCKfcsHxKKQ0rcvme+VPAAjxbmTgXysimWnWegKNu2o02sGF9eRXO+AFL3+BV5y5MvJUNSi1+bAT1LWSCRajxMfzCZ8mHjQi0oZGU0PKxPzIsnlmVUJmdxi0f+wR7izEcj8HD/kMdOfA4+c0AqGXT19TXui46De4tjltpRHWnKxqXIe7nQ7iEBQ/27FG+XhgWw3L0KBorO14iwcPeIoU1jgyLUx+pei61dOvAMYaYHMjSv06TA3Pw672lkVmFYcdjNrBVHI1MJsj7hvRL8lY57LH0+6d6TRxrh6q6PfWR1sTxzUQttbF9OUhWD+oHVZPjtU9gxUaDWjqBAGk6mqDxfcpBNn29p9Nu70euL0XtQA+J1bxhO28Mr7yZND149eL7A023RY+f89MPmIKDBfzkvyddqRqZ1Zl3ziivPhntVKpbyilD6XGzrGmrHH4kjqR03/kB+Jpj6W89QHkriaCrHKqmlGn9h53Ipcis0hQc+MY5i98kkx6QVTSwhjVv15Rl/jwH25ZyXJnu3ydFPKT5OrOzbtPq0zgvmCe6u6N7v8lRjqqitiUHGcUZeQgkQRIhJifqfBPg5zUoGj7kD2GSWfrhwJ9jWDhm4QT7D2IpYspSRsKu79cLo9NIcsj+7OkRrF8PB43/kU+wT41MsHN/SFwA\"]" + }, + "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/\"46f-Aj4j/7kHfJNH/s6UcWHiyYhL23c\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:50 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b4753f37-578f-4904-9967-538407ed2c00" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:49.547Z", + "time": 781, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 781 + } + }, + { + "_id": "c58d8d78e21c1eff00e101912f313dd5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/createUser" + }, + "response": { + "bodySize": 1455, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1455, + "text": "[\"GykNAORaar6+O5tieczJpQ6+3lI6KdisziQS+BZ0TcGPn1PvEyt/7rUj5vswIFAAqIAssK6xFTJSzspZDK4OeqFaNekUajdoDUp8qvEz6VMgRoG9ETa51hWhxAPnEDj6KCxXVOmAssGlryrvUP5o8HdFUaNsMD6vCSU+37uanBMq9j09L/l0FNj/YZQlmniyfl8Xdqmj9Q5lgza8p/vaMhmUhS4DCbThzEVip0uUkWsSuBhlg45T93Nadwm04bMNdlFSMDwjfi2UQ4GmZ4DgNdOh+HGKiafq4B0Unuf/GMLy5qYk0HCkw8ScGTmb2HCw0u5Oy0E+NbKHHPEIgeNc4exQA9sRxJwdzg7VoL+vzZm5ZSrs07vG0EzOaFjTMzS25diRQGnoJDg7fDkeNhyyLqKAqUlgfmQSSqNA6O2rIUBsJ2DWFQa4+wzTPdUhYhIY6UlqPC7pts+6rAkllv4RP9dibfn5UEdSTSs6sCEIipSyWTA6Eswtp6WfAjE8virIUFgK3sFSHEjRgT4hpMlTCh3Ywg8MyFO8tBRow1VdRmsKM9iHHJA21MKyn/NxRSARjwoPyv+tR8//itI/ptDS/dura+DQjk/badnZIfwj9MgUhZXRTURnguRIPkTNEXBhOWMhIWHOHWuX702mM3It7JEzJ4TTvC/HovSLy/xSSqUMFVkCh0a5vMpfKLuH3WajKl88DyPXcy28L0k7zK9UYRX5hIowT4TEssgv/tLSXYF7lUQytlTS8hhW6QFbk3rgd/Up/RRYB+KSH3mOqEU45bEiToi0CmBIme18dTgc1LtILoaMpA8m+0h1McC9uA7EoOJsOSbcMDk19uD2F4qEmSoTHcg4SYt1BQA8xpQA6F/wNS8JJT5oBue3whY0ConZc1AIEn78FKCwDkf/Lk5zW2TyheR5YBXi3Jo8zk8JX2xcZQpHe/yc6daBuKuw3W4eNOu98ZmBLaBx/7q0MWt1W+155OcwU2ALFkEizVR5vzW7ZQrtne4OKzlLuyUxekahgNbJ0ceWgCYJZZKc+cQzRaHkHvVjoJWrYek=\",\"13RLXNkQrHcKJajK6AsUClD4+74mfj62ZST25Y81HbrvtBRCh6Yb0AGFLYWpPbdFVgfifPjXaL7strW1Bb12Y+rg3MrV83UdVpkqHD3VcLa4EayGHQZNSWGPViFX2J6n1ND4I5RvgA5QOyVbZOnpjg8Uo3V3IQ9/4AG9VB2Qq7tCz5aRa4K3byGL2OC83j1S/tf3dKjdiBIOmQz8/w8vt+eRbZW1YWsLFOLIRGWFSCk2gMRBxmbMUm7OMQl0Pl55YwurFyXd5tVNfvwU+JvpoQKATpTDPhu5FkpXl6UbsodqFUVtdDMEjSMnd/sFDnqDyUZvvNEbfeyP5GAsh8N8OvmOot3D/X5xvNHvbQymH/sz2R/Kfj/vT3qD6XDQG3/HlAA=\"]" + }, + "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/\"d2a-XxYgr7VA14vwYaxJEAyNRBbgzLc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:50 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "cb6d75a8-7cec-4f78-9c68-bba4809f531e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:50.333Z", + "time": 202, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 202 + } + }, + { + "_id": "b7436ac68b0d6b2d425b51bee2e9a3f0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 239, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "239" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"CreateUser\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/createUser?_useLowLevelApi=true" + }, + "response": { + "bodySize": 708, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 708, + "text": "[\"GxgEAMRPm/mn6+j9Amgt85WjV5x+Kc0pLAyb2YLJ2E4jTJwLZSRTzsRI8Ayg0SYWH6nR9DfAF37AQnlbc5NDc4HAA7kJns4Z0sOh1PhK/hlZYdCNMPSpPTIcnpMZGqNjd8nHNsLN6MLxGEa4/6iVS41T3wdQy7at6W+0LeHUIEdW/owBN04Xg5ug++EQbuAMBD2/l+4mhsNmOo5YDLZtvEXCCDcjhqwdw+G6VSKPpYZmD1YNGj3I0f9TQx5uQT7vXNYylGGz4y5ZUA5WK72t4L4k/pZ0WXocoPT3+zpH1tqjqubrVilH1rc9NSTj8HSQVBZ1Ua2T3s1pUEP3CqD3R1sKvqv0kG1bn9TUbseOFV3wMFS8fvmjMDQvBow89j91qh5Ou/T/BNVbYxcm/sJ6lBgljB6OfHwf8DDkcX6VWe9eySGxcr0i/YqvVoUHrWS+g1bkUXgs1VqGMkdWe6JadEXoapqGnlVzFGjr5cN2yvGy9PgZWSmzM/cFkElajlZnCEUiWo9qvSz/7p9IPkAr4mpZZCibEOz5zinJuI02vqB7ZJB8Db3LMckgHSoIZzxpZnr6lMpMp21+19kdd5vy2KR5ytzTwwM9u21SOZYVNQ155FEVRxaYpEoki6neZ5mpz1xjMRhD+hh6GaTdHPiLhok1CUe4/6cG58rXcCcGfQm5X6FzwI35cKAF4Ib2EHkB\"]" + }, + "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/\"419-3y0Mx8ePCbmdZ1CdqlXafOw96lA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:51 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9e75b622-0a21-4d3c-8278-fd9be7c7333a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:50.543Z", + "time": 797, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 797 + } + }, + { + "_id": "129a09db962bd9f7c06f5c8232d33c61", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/deleteUser" + }, + "response": { + "bodySize": 1507, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1507, + "text": "[\"G3kNAOQyVXt9N5siagxTpUNJd+PVtAKNBxKWEmISoBegG4PFtfT+zso2+R8xp2kHBAoAFYEisG/shLxJNytnMn579WdSt7EygferHVqDEg1VFOlLIEaBoxHW+E/XhBJPkv3gwUNhd6BaB5Qd7nxde4fyV4eXNUWNssN43xBKvL13vjpZKvwj3S75aBQ4/mGIpTrxxvo9XdqdjtY7lB3a8JGuW8tkUJa6CiTQhsJFYqcrlJFbApyLskPXUuu/6rpIoA1fbbDbiorhLeKXQzkRaEYG8G0a7Ymfl5i4rw7eQel5/Y9+jDc9JYGMAxqGpjA4a9jw7qDdXuOAnBrsfqdt+MHDRKE4ocB2ijDHh+KEDPj71BTmPVNp7941jCY4Q6Gpz5DZljOJgGV0DBQnL7vDhhPWZQQYnwTaI5NSGgL8378aCojtHBtrCRPcvYXpmtoQMQmMdIcar5d03lddtYQSK38rP6eisXx/oiORpoWOsiEqFJqyXDA6kphbLvK/BGK4fpWPqWEmeAeb4kDpDhwTQlk8paCBbPiBLrnrl7oCbfi3raJlhZnY+72r2pAKy1Ha5wMBItoVLin/t249X5WVv9XQ/Lfv//0PWmjEp+2ioDiBK5IetUbBZRwmojmFZEc+Rc0R5MJySUoiwrQ9a2f3htMZXFN76swjltO8z8a28tvnyaWUvAy4LCGHRlaey+fP6QHvzSiXi9owSD3U1vuKtEN7xZVl7ARXMVVCaDLHb3/TLp2Rew6RKlscWtrDHB3IayAP2zv5lDYC20Ds+dHmiChC+mOmT1LbQAxc8USomY23Kw5U3l+1DcoOGx0PKHGwrR5GmHow0+EQM4DcbnIFENYYGVC9+QkvThTlrDYQw5as20MENZ7BJHeETpXNI1Pa9J5gQ4AJuOAeWBuzbWrxwWuogvj+LPiWd4QSbzRD8nPhBXQKidlzUAgSfm0EKIwA4d+5aW3LrGP9cgtagji3JpeYA8I3Gw+ZQi7WHCjs97sbzbQvXRh4AXVc3lQ2Zr1Br7+OfF8mDl5A1wTko96slw==\",\"KbR7PZiUcop2O2roFoUCeuenn3sCuiSIiXHmCxPjFMrWQ36NqXI07HxD74lrG4L1TqEEFco+RqEAUHh53RLfn9kqEme7yJojuj7qKYQj55GTt4H4l9sLA0egsKcw9de2zB6lkolkz/g13ORBd4+Qt9ej3/WBb87+0nnThkOmfK4ruifbTILUEwfRi89IiIeNV1GPc4X9dUrHYf5S7bkp2TJT1Qs+UYzW7UMe/sDrCkOkoUbSD8CLFy8gckvw7BlkrJMhfV/579yjoXWTVdhmMvDnD7ycn0e2ddaHFy9AoZCZkMxAirMBEPsYnhFOObnGJND5+K83trR6W9F7N+DzSyWhu2vgRuAl042242DNaG5K1RS10Udr8MiWtJbfwfFwPD8ezo6H08+jqRzP5GSSL+Y/UeBwTUred86OR8Pj8eLzaClHEzka5aP5aLIar+azn5gS\"]" + }, + "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/\"d7a-vvaCBcnieSusNe2VDf/9uQv+fVU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:51 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "36bef12e-888d-45c0-885b-f9c2f9605fe9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:51.347Z", + "time": 213, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 213 + } + }, + { + "_id": "562a80804ca769f5a091eb78c89c4078", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 239, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "239" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"DeleteUser\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/deleteUser?_useLowLevelApi=true" + }, + "response": { + "bodySize": 732, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 732, + "text": "[\"G0IEAMR/bVqn69+3BVAss5qjI25bSnE0IviTmGbm20xjmLgmypO8ehZGW6z7/G/0swFWajRFqRTKXpslg3UT5DcKnB9d4R0MHA+c+GdkgUI1wrxP9cgweAGmaVwdmzOPdYRZ0YRxDBPMf5TCqcbJ7wMo/akuqW+wheCgsEQW/EoBjhw2hZsgfTuEGxgBQS9OpbuZYXCcxwmbwrWNt/gwwayIYZGGYXBdC4GvpYpWCxYJEi3I0P+DIguzwMtLt71v83DsuElaqRQW7Z3O4D4h/vbpnFs0UPr7rlwiS2lRFOt1LbRElreOKqKxfh58yrMyK/ZJ7vYEqKJ3BdDcqFPBd8ot/KkuOzW16qlhRnssFGWvX/7IFK2bUkaa3E+eioXhLv6/0OqtsQkzf2EZfYw+TBaGrH/PsVBEFpdXC8vdKz8kFrSl3u34apdZ0I786eglsnzsf+toRxaZxVbsfZs/glZ0V9v2//lBR6Ivan6+YnUPpc2/Xs9LPOcWPyMLhXzFQwJU0LEpBZI6SOn8ogMloi2K/bYd7H+iHt423+YVClZ855T8dIo6/iAXaOBgznu3xORb32h2gqqqoiQL07NnlJsOCv5musNupWWq4DxgdvTwQHO5TuLHvKCqIosga0TlGiIpPpLEpLNZxdZX99gUppA+BudbXx8H/iJhZkmeI8z/8wm7ezUOCpfC1zAXChUMU2Haeoi8xP6SKBZmWoZhAw==\"]" + }, + "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/\"443-7BK2onCUvelPsTz0hWiKDmMh2+I\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:52 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1d190eb8-8660-4ad0-9817-d33980fea7b6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:51.570Z", + "time": 785, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 785 + } + }, + { + "_id": "d0d197b5b8d959a98d0ca19fd5b31b4a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2264, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2264" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"custom\":true,\"displayName\":\"test_workflow_request_type_1\",\"id\":\"e9dcd66e-1388-4872-9790-66df2f44deef\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:41.545487871Z\"},\"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\":{\"id\":\"testWorkflow1\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 944, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 944, + "text": "[\"GyIJAMRqqb6+zL6RCyq2eTqlVWxOCQkCB1A6P38syc8wVf5/76qp6Cwt+tdV0PWCRpFlidPhBCc8sumw5mtqQIOc2Cp//A9GQ4JmeqmbhopxOZ0W1XQiitlkNiqaRreirSpN1IIjn8LPHqqOIJEopqcvH95b67+eAv3d+D1P6WdFT2Nw/BqATCiRKKYrlh8ZI3M8BfqEHHPE5St1KkL+Yem7zjvIuz88dZQU5B/Sz4og8S/yYij0YT+FMAmOXBV9hmRiFgAFrVmqZLyD8w3xlD56E0hDtspG4jBxxyUKTlnIFHpSNg75B6dw866s+zhMvDTRLCyx4f/sp0GWHDq/Afsq0UGcV1zxUBW9Y60PtYoEcyWRM4c7QIfh7GicBSauvSr3onAApQS7YyMNB9vNy3bWNdBZIczZbGddDfD+hdrRx4Fa821oBqefreQpwtVaUwRClEG2s37aHyauB9WmKIhkjr6cStxIrO08ZlLE3bYxMSbWyIrN+0KgD+pjQuZI9I0at3a66VLZniBh/ZdevxR9r0z4WVeJghvtTgSSLmW1TKtEmmidJC8iBbbVlk1LWM68Yw18wLkDc5rgqmRJ/MI0J4FRvks5TDzobTKmUAt7x5poxfhpO/YFIGLPpijHHt3/6kKT8+ODQ5ZCFXedk9TOOnun6OElEvCY+UQ9g2RPzpIKicWF1inDiQijL0E5ky4lOY1rcTec3iOf5LoSC+sXgbiwnPNQBgZZJLw7yX15EZ0z/E57ZDIqth8Gg8TjLLy3pBxy/0rEK+hPiAjYjhCGszG/eKNlohiZcsx8bAlTZTws+hVtDUyYXjLnB47cUjeDvPvLD/kr2vFTgsSlskZb+lbXW8vRUVJajSjgSBFV90sQI9EUo7oYVedCyGok63JQTsUtOPJVERFrqqIcvWYspJgOZqUQ03E5Gd8iZw==\"]" + }, + "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/\"923-JXVmolg0NO64Y+WsBROXPWJqD/0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:54 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "048d3ef6-b5c0-42e2-8a68-62cef4553044" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:52.364Z", + "time": 2187, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2187 + } + }, + { + "_id": "d069b3cda2ae43b8a62b77ae54f31bba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/entitlementGrant" + }, + "response": { + "bodySize": 1423, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1423, + "text": "[\"G8UNAMQv35lfvzuvQAqRjjBF9E1HiTaJerbkCI5cLa6l93dWpskAwAFBmg6QFSBLYPvGj+ULO+Vm5RbrfI0q4ua04m0aGA0JttHEsgkC6154ZSME6iTM+l5VDIlfmtFZUMdBICw3XKkA2WDpqspZyD8N/lYcFWSDeF8zJP77XU5UxQr+zP9R3hMCdSEGGD7TH/c7emWWKhpnIRuY8Jm3yXjWkCtVBhYwYW4je6tKyOgT55IM2cCCXvN1WicJmPDdBLMoORr9O34uyIGAriXAs860Ob52N3FNFZyllfN9gfTy8MbmLEBExKFz5hrOIiacbJRdKzgQGwPsXmd5eNGuvzQ/xcB2SGD2TfNTNPDzrprrj55X5o7QDM5AqtMrJ7iWIwWBCGUEzU9PK8OEU69WUQqis4BtKk8sA7W9P57LSWLbMWVWnRq7e4nnLacQkQUi30FN2ygd9l2ViSFRulvif9N8Vxt/f6oi0x0SBAmfKmkVGRPLSeq3wJ62tfLQKQwnZ2lYDjR2UP0QWkcqAQc2CASNcseXkgImvEtlNKTAoAasvE6SLicvbHsIET+7KOq/dev89ap0txqaevzx3XvKoQJ320na/JSuWXr0FIHKVGVEVQrJsnyJykeSC8spi0my7bEuEkB2u9JquAb3zOo9xTNcJ2NRugVzB5ZzLmWwyAI5rE+28lI4b/+7MmSmlLgNw/gbWThXsrLI9kqKK9gJKQBXQrwnucU/Xh5Ilsww67Il5so4LN2J1rXE++DkLAp8k4shcGSMFNirKullg+dWxQmlc9ephmxQq7iBRGfUHrrpqtPm4U3qTgrskRVmvN8Ce1UxG5+1UmBPtxtH7jXoSwDrMoGjjRrkQoa/hWwPs1adO/31naWKqnRrCGwT+3tIqBDM2lZsY8fozjXf3zqvibdU4HEDWPdcoJ+sGzGRq068rzmGyMd2FKCn4CdWHlm5qNSkNhuYyOvhSlxgQLXn+C2KjH6BrOpMuGSZ5+jLYbrnfKVQUITEakhU6buY3rEKZnkm16irEYu60nHapBhw/EmD4JJfMiRulKefb0t71BRg750PBUjSnytBBVx2/Dpb3iGzeu5On/CFYzR2HdrhA23li+ZK93uvob29PYo+MT19Ss99QM+2y95a+1/onpRsMxOWmDX9/08np7SjN9XzF7S3RwUKvHjREOHl2UZpIe06hc3zwhGPIRMI5jl1gQ==\",\"Fzs57g12kAWSNdvEb/g+QP6ZuPBqs9JbfCdw8OdXAtbFd06blVGLkj9a+8pIxiV1JJOLXT/2SuCv5xvIflfIgIvZUV/5fMchB6RNZTlxBMateBaoOCqtLCVNuClr+xr0u/1xqztqdYdfe0PZH8nBoD0Z/4ZA1U9a2EeOWr1uqz/52pvK3kD2eu3eaDYejnqj8W/kDA==\"]" + }, + "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/\"dc6-TUwYHT4FaJb6kFIA2GYhK6/QJjM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:54 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9c64df8a-2b36-4273-8ffb-bb6e81dd3bd7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:54.556Z", + "time": 258, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 258 + } + }, + { + "_id": "2963f0b2a422933bc578050bd2ac7764", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 250, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "250" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1904, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicEntitlementGrant\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/entitlementGrant?_useLowLevelApi=true" + }, + "response": { + "bodySize": 729, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 729, + "text": "{\"id\":\"entitlementGrant\",\"displayName\":\"Grant Entitlement\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/entitlementGrant\"]},\"workflow\":{\"id\":\"BasicEntitlementGrant\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.entitlementId\"],\"notModifiableProperties\":[\"common.userId\",\"common.entitlementId\",\"common.requestIdPrefix\"],\"_rev\":21,\"custom\":false,\"customValidation\":null,\"schemes\":{}}" + }, + "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": "729" + }, + { + "name": "etag", + "value": "W/\"2d9-+68UPbFrJmSywcgweM9dIWpbf24\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b69c926c-61fc-4447-868e-5c9a4a4c72b3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:54.820Z", + "time": 557, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 557 + } + }, + { + "_id": "aa2b5e0210f577da9349fb2597b8cf1e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/entitlementRemove" + }, + "response": { + "bodySize": 1403, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1403, + "text": "[\"G5oNAMTPvVpfv6N3pZFWxPZ+pXp1ImGScGuDAzhFPpbW1Pt/K/NJ2zEpIMrlBsgKkCWwrfFjWWGn3KycijV9lXgLyHguBt6mhtGQYBtNzLsgsP5nLtyKIdAoYfZ7VTAk/tWMzhI7DwJhuuBCBcgaU1cUzkL+qfG34Kgga8RtyZD49Xe5VCtX0Gf+lfKeEGgN0d/wkX6639kzM1XROAtZw4TPvKyMZw05U3lgAROubGRvVQ4ZfcW1JEPWsNhrXpd1koAJ300wk5yz0e/j54LsCeh2AjzKSpvj64AT11TBWZo5PxpIT483NiUBNiINnXOlcRYx4WSh7FzhQGo02D3P6vCkVX/p6pQC0z7B7JuuTslAknbVlX70PDMbRjOcAVSWV064hgMLgYgynK5OdyvDhFOvZlELopKAdyqP3mi47fWYqZwsNh1SZdWpu7uXeF5yFSKSQOQNavqW0mHfVV4xJHK3Zv43xZvS+O2piqzcxHcoECxlqqRVZEoMR6nfAnv6tpW7LmE4OUsTc6CIg1qIUIZSCTSwaSBolI1cSgqYcFfl0bCifGrveVJ0OWVh2kFEfG/T8n9r7fzLLHdrC009fry7pxoqcDYdpV2d0gtrj1oicJkajahKJVmWL1H5SHphOGY5Sbej515ZpzGUbDWuwT2zek35NMfJmORuwqSBpZSWMrjIAj2sT/LyUjov/3/LkelScR+GdWxk4lzOyiL5Kymv4CekBNwI8ZzkJv94uiFd0mNWdUuslUlYykm8xgKpvsFJSSzweZDhfqFTokTGqAJ7UyW7rLhXcUHu3EtVQtYoVVxAojVvD9100er18CZ1qwrskQxmJr8F9nA+a1WBPa0XjgJs2PuztmweV6EF2djwt4jtYeZqeKe/vjVVUeVuDoFlxX4LCRWCmduCbWwZ3Xrh7dp5TbykDK9rYN1ThpGybsRELlpxW3IOvgY5tiMDP4U4sfLYyiHVpF4b6Njr7vwmCKDae/oWRUZ/QDJ1plyyznPy5TTdU3o2KPA0a2tIHKtgpkTaImY0tvBJWVg3fQ==\",\"nRio+0mN4Co/ZUislKd/35b2qM7A3jsfMpCkP8+CMoTr+OdsaYfM7H0gfcIXjtHYeWiGB/QNX3RUasR7De3t7VH0FdPbt/Q+gPVoBuutNf+l7kmV7WLCErOm//9p58pm9KZ4/4H29ihDhg8faqLLo0nSQpplFRbvsxA8hkwgzHPqDB92Ut4b7CAJVNYsK77hbYD887TCsylEL/E3QXY/fxawLt45bWZGTXJ+9POVUYztX6JHz/os8NfzygVQa85krNkKjkor50fPxiwH+hp0291hoz1otPtfO33ZHcherzka/oZAe05K2kcOGp12ozv62hnLTk92Os3OsD0cj8b9wW+kBA==\"]" + }, + "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/\"d9b-b+kx5CFRK1jMI3rGcxZIUFLtV/s\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0b08725c-62ee-4909-84a4-443758adef5d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:55.382Z", + "time": 192, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 192 + } + }, + { + "_id": "bb5d0a47a2da15a2ea69cc74d84da9aa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 251, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "251" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicEntitlementRemove\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/entitlementRemove?_useLowLevelApi=true" + }, + "response": { + "bodySize": 718, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 718, + "text": "{\"id\":\"entitlementRemove\",\"displayName\":\"Remove Entitlement\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/entitlementGrant\"]},\"workflow\":{\"id\":\"BasicEntitlementRemove\",\"type\":\"bpmn\"},\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"uniqueKeys\":[\"common.userId\",\"common.entitlementId\"],\"notModifiableProperties\":[\"common.userId\",\"common.entitlementId\",\"common.requestIdPrefix\"],\"_rev\":2,\"custom\":false,\"customValidation\":null}" + }, + "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": "718" + }, + { + "name": "etag", + "value": "W/\"2ce-FjWKrs3pXReGISMX5kWm2PxbJcs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "4a49960a-7ce4-47df-b1bb-03fa64e8599f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:55.579Z", + "time": 809, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 809 + } + }, + { + "_id": "f7229385697cdfdfa2a620602edb0dd6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2331, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2331" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1866, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}}}],\"custom\":[{}]},\"validation\":null,\"workflow\":{\"id\":\"phhDelegatedUserDisableWorkflow\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes" + }, + "response": { + "bodySize": 984, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 984, + "text": "[\"G00JAMT/puq0cm9GLpLcGFNaR+bLJsGgAK46frpfoa/g/4oz83abKqjKomcjg5byItoPowXO5Uys63Xgq8oE9bq2xb4Hn38lFwSBZj7PFBmayUjZMpDP1ib4k1ncNgQOrSBQq3pCE9nPqsG0zsrJUGbjvF9lNKoKNRiX/XyQg8O6eOmUrrWsDN1415CPmgLE+yfH2vm/2rg1RAutINDM5wdkaCYjqcdA/kATlz27sJ+ZOL49rSD6HGE6p4UMEC2mbrFwFuK9xfeCooRogVchsNn5euB84ljyO9o8+jQ4GnTyFvsMCKr1VEbt7OsXwh39L7UnBVFLE4hDh1MbyVtpIKJfEhUHRAtLKfcsrds4dHjSQVeGosGG+T0gCg61gwJRQ7QaD2e6uK8MzrLa+dOQFHu8ppQ49Ed4aM+pwhmkw/5c2pnEQbhJgF18SEPMbsOy0wMOWEuAOZidHrBBWDpTp+rGU603gqZwSlmTXpJwGQcYQVyUGnZ6IOvdocOBl3UEqE8cxWIysRJIW3LzTlLErEMgls2Os/cJT/+0DBGJI9IGNaweFfQkzZIgkIWQ/ZypRvvtgYxk3CB3lCCy8HmZkpE4YRy5HgN5tpqXUKUwzZxlVwQhO6oDdk0Rcw6XiAfq+hOUZaOXcA4dLpcmalEkZ/bi/aST1AVrnyCi31wrhwLuf+VQ197N5RWjkMKfdeQ+PWB/ZD2xKSIpw94qMmkkO3IfpY/MLhjHVEwQqmHmpS00JklW4RrvoVV3iJfgO4vKuEq5o6WUahlSZSE7LCaV8vHCSbw/LsgShaLLMELjUJVzhqRFeRUvbpxyIl4AOhOSv91VvzR95K7tPl7kWNuKlzCt4XgkQdYECdBzpfTJsXvVdRDvbfpMTjhDwdqcyLqutUtjOBYUpZJNBGg/YcovQt7Lh1lvkPXKhzwXZU8MRp2yP3wDxy5Y4gXmzLO8eMiLR/ujTn9UTEbFaDJ8Q0o=\"]" + }, + "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/\"94e-EaLLiTJ2qHxLFrmdePmIQWQxFFI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6de0a802-89d1-4180-947a-c8f50e00315f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:56.393Z", + "time": 2116, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 2116 + } + }, + { + "_id": "a5bd3d8a5cd02e67e232403e3f8a2d61", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/modifyEntitlement" + }, + "response": { + "bodySize": 1619, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1619, + "text": "[\"G7cPAMRPX82+ficvTUbkvpVOuzsvFrrUpkVAi2N7shKpJSkXKLza79f7fzXe7aJie7uIWTLRKFp/qZDIDCGRGjWiY2W99mqxBAyI29TJ30MMFO5RfCnHKxsl1gsR6IsckxKWeKsbhsKbVPXQyU6h2nKjA1SPyjWNs1C/evxuOGqoHvHYMhTu/Z0vVefy/8j3Ut4XOWZD9BF+w7vut/daKh3FWageEj7yXSeeDdRa14FzSChsZG91DRV9x7WkQvWw2Ov+X9ZZOSR8lSCrmrPh/ePng5rnMPMEuLaVtsbnDSduqIOztHZ+N5BuHm98SjnUCDJ0T2FwlpDw31bbjcYB0gjY3a7qcKPTYKlYSmB5gjAHpmIpBoi0rwrz3vNaDoomOH2pLa+ScG2eagQsyhAqls9rQ8LS63VkQXjK4Z0qwxtB2+7vM1VSxZZnWFltWu7uNZ7vuAsRKUfkA2q8ldJxX3XdMRRqt1f+F8WHVvxxqSOTG/WuClSWMlMyOrIkNs/TvwT2dGsrF1PCaHKWDsyB0Rw4Q4SxlUolAzkMBM1yaJeyOSS86eooqqgc7d3+K7qSbWE5BUT0xYHl/9be+dt17fYWmv7v+zdvqYYqfFieZxRLumX2mCUqLeOkETVJklX5FLWPxAubFyQncjt247V1GiPJ1uAa3itrHjCf8DYWq9qtlDS0lFIvA12W4mFjkpfn0rn7/2tHJqWiPgzq2MrKuZq1RfJXXF7GT3AJqBHCR4pb/eHqEbkkYza5xdZKWpjLibqGArG+BVO6ycFxQ5UDANWoDtlcKLTAdmBbiZYvWDGabNUdzvfUzt12LVSPVsctFMay0Rsi/fXjSkdduw1y3HXsj1DQIcjGNmzjWMz4lo975w3xHZV40APrnUrsLXUrErkZx2PLOaiCduLaaxtLIJmGEXxVnwf0L5Z9EG2NnLRisRuK7CYIG8qkiiExA4MG1tTYC6lTue8BbQzeRsDtVuUQ0Wsyt6LsKDWUlkrXZHTUsHFMUlOP7tfF1CjY8MeBIPlTFks7fAoex6SOZNakSThLY0QXzJCavWpQDxOwM8wCbxCyahv3g7d3Bvf3seA6XzEUdtrTv+9Lz6gvwd47H0qQol83OZUYT8CfU9NC1pkMbqMwOQf7kZiRx9kgfJO4zUqsPPrnm3EX2I9LDAb9TnvqAvvC0DMq4/i2lg==\",\"mD0ePx4soj/mMejS6hkdl4sI04ymUlooKyEbPV7p9ERtKx6TK31cgp6EwLVHrDN+v6YwOT2+vvr8OKc+5fKHWPMFZlgJBfgTv2Y3abCQdXavJDIeaz+MRlStBr1eXUcqzT1qu7DNyjjMYfxHjqoFKS6UojPkRY4UtxKMJf+oxGCR0mD3D1aSmpKsMy9+xieOUewmjMIveNty6CLNsdYd9OzZM4q+Y3r0iDLF62Fie6M/qftSZxc3scJs6O9fej59FL002YCePaMSNKqM5AykMAmE2MWojiis1AIph3WxL5qoVzW/DxQ69wtkKYGbHL8971wzTvWNviRXw1Eb3ROiG9a963swm8zOhpPT4eTk8/REzU7VfD46P/uJHJN9GWmfeTqcToaz88/TCzWdq+l0ND2bTibT+eT0J1IC\"]" + }, + "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/\"fb8-7cWlm6T/r/a+MrhFMZlLRq46bd0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:58 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "773beb3a-0344-4c0a-93c0-6c2b3e26574a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:58.513Z", + "time": 191, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 191 + } + }, + { + "_id": "7290ebbef6eaf83e592bc8a5e13d561e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 246, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "246" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1905, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"ModifyEntitlement\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/modifyEntitlement?_useLowLevelApi=true" + }, + "response": { + "bodySize": 676, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 676, + "text": "[\"G1UEAMR/TdXT9eclbSWUoIAcKejYvSkUGl/29yDNIWdy4lwoI5tq1Xm0V38l/Y1+YHuL9Cqc+YMVyquel8PNoJrutAn/A2SGQUTxee5euCz58BCBPBSSEiY+DkeGwYdRQ6iUTtOWj0OCecDkj0fvYP6hiRx4nPw2AGhkMzTUV1sRvQLv1sa0Fqge9EXhxsf9cvA3MODBPjzLdyeGwXg6OhSFmx1vEe9gHpD8GieGwXmIZC5LHT1YcIw+Jgsy9K9XZMEc3H2wtLJUftzxlDVsH0ctsw7yviX9krytLN5Y+vtzsyaOjUVdP5yHSGvi+GamjtbYfTpIrp41z+o2x7s59TSNUUc/ECDNRx00flplIZuhedNpcXATN6R6Ggt6TqVfGxvaN97Mip69evH9maKHos7PufkHTMHCAH7h33Vf6laW6mKlOuVlJ62dkfqBckpTelqf1rStLH4kjqT0uv8DqFtOp+xJiBOUt5IY8GuLui3Frf9wE6MUWao0BUe+cc7iNkmnBnKLBtZwxds1ZVlk0s7RrqMcV6anT6kiHtJ8lt6NztPq0jgvmWd6fKR6WOcox6qmriMLGbVz8iaQBEmEmJypq3OARIui4Hz2mg/IMB74c/Qnjlk4wfxzyyZiOY5e4X/kM8y1QlJDP8wyHBJ3sT83ssO49XAo\"]" + }, + "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/\"456-BEqZ/4URg88GuKk3uigGbiuvPPQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ac24a645-26b5-4362-826f-38285099e3eb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:58.710Z", + "time": 707, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 707 + } + }, + { + "_id": "19c6699f7faa8d68682358b793f11755", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/modifyUser" + }, + "response": { + "bodySize": 1591, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1591, + "text": "[\"G2kOAOTaq/lfv5tNsTzHyaXjlFeu6dW0QgoWK3tzEugAXVNYXEvv76zsJQ8jpqTtgEARoCKwb+yEfCln5Sz2XP91fGCaZXUKxXtkgxJfUXzHu3eBPAocjbDCf7ohlPhvsBccXBTKAzU6oOyxdE3jLMovPX5vKGqUPca7llDi673Ls7NSBb+m1yUfjALHPwxgyhNfrN/VFZc6srMoe+Twmq469mRQVroOJJBDYSN5q2uU0XcEOBNlj7akxn/ldZlADu858K6mZPiK+MVQzgSakQE820I74tslJm6rg7NQOb/+Ry+PNzklgYwDGvqmMDgrcPjzoO1e44CYCuxep2V4wWGkUJxQYDpHmMNDcUIG/H1oCvPSU8W37wpGE5yB0OanyWzDhYVAyugIKE4um4PDiddVBBidBPojnVQKArxfXjUVxHSJhTWECe7e4emKuhAxCYx0ixqfl3TRe113hBJrd6M/h6Jlf3eiI5GmhI66ITIUljJfMDqSmhuust8F8vD8Kg+Tw0RwFrbigIkDx4Rgi6cUNJCNH2iTW7lUFcjh366OzAo9tff6M2tNKgwnSW8PBIioKGxa/m/dOH9Z1e7GQrP/ePnvf1BCLT5NVznFCVyS9vAcBZdxmIj6VJINeRO1j6AXhmuSEhEm7b22fq8/rcE1tqfWHDGd4n0ydrXbnUeXUqploMoSeqjl5WXxvH24z0s3KotFfRiE7mrnXE3aor+SpZX4CVnG1AihyAy3+0lluETvZYi4bsnQUgnL6EBeA3lY3sGn9FVgF8jX/OhzRCuC1MkSuSR2gTx4Vhuhddbet7ihdu6ya1H22Op4QImj/XoYYJrRbIcDzAh2s6k6gKaNlhNVu6Dg4sRYzuoCedgR2z20oiKYjEEDz+qCMA1kHuAgh7UxQFQA8ypTcHiW7C7NAU4cBbAuwhNCc6Dq6jqdh3BuHQMsprZEq2N5gEbjcDkmayKSkykPoV7xQdVVyNzHtDBBEpBfxK5t7AWfkgv2+rvgOl8SSrzWHoJfCs+gV0jeOx8UgoQvXwUobPLCv7PSlquMI1Bl\",\"FCCfs8lNZIfwgeMhU6gyFUcKh8P+Wntuzl0YeAZ5XN3WHLPBaDDcRn+XJgqegR765MP8LJcp5L0ezcI5QduS9PIOhQIG56dvBwL6JIiJsOZdmVEKZekBX6ZUuTWUrqWX5BsOgZ1VKEG13Z+gUIDC71cd+bszriP5WJexOaKro4FCOKosM/IukP/l7sLAESgcKEzDLVfZg1Ayce4JX8Zf805Gh5B3EzoMexF45twvnLddOGSqjWHrzZA9oiD5REJ0pjLxDuJhsy6q+VzhcJtSn+0v5Z6ZEleZa7rkDcXIdh/y8AeYA7SseM/hEXj27BlE3xE8eQIZ66wuTFf5z9iDobOTc1hnMvDrF1wuzqPnJhvCs2egUMd0SJZAiuIAxutheEY4VWGLSaB10ZaWZb2r6WW15/HFxYK4K+BXgd89XXs2HJwaXWuhhqI2uhsnuoNBTHX/T3A6ni6Px4vj8fztZC6nCzmb5avlZxQ4PBWL+8HF8WR8PF29nazlZCYnk3yynExmk8148RlTAg==\"]" + }, + "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/\"e6a-Pq3tSo6dpMH7HKMWCdxE+6Sa/W4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:59 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0c44c8db-0702-4b04-8693-1d8ab5b44c66" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:59.425Z", + "time": 204, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 204 + } + }, + { + "_id": "80550ff6678ff7a837f81327ddd0cf3f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 239, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "239" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"ModifyUser\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/modifyUser?_useLowLevelApi=true" + }, + "response": { + "bodySize": 724, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 724, + "text": "[\"G0EEAMRPW/qn6/T9BVAs89WjI45/3x1VBIbEWTCdsbtRJq6J8iSvnoXRFus+/xv9bICVmq1cKHttlgzWTRD+KHimzgg9HCqKT73/qSww6EaY96k9Mxw+gmkaL2u353OrcDO6eD7HEe4/auFS4+T3AdRh19bUN9hCsDHIyoJfKcCRzWJwG+U4nOItnICgj6fS/cRw2E7nEYvBsY23hDjCzdCYpWM43LRC4FepodmDRaKoBzn6vzHkYRZ4eemyDkMZtwfuklUqhcWG3lZwn6C/Q9qXHhco/f2+zspSe1TVfNMKZWV521NDNNZPp5DKoi6qdZL7PQFq6F0BtP5sS8F3Kj3Crq1vamq1Y8eM9ngYKl6//FEYmhejjDT2P3kqHo67+P9Sq7dqFyf+wnIOqiGOHo68fx/wMORxdZ1Z7l+FU2LBWhr6FV+vCg9akTsdm5XlY//bnlbkUXgs1ToM5QW04nK1bf9fbGwg+tSy81Wzdyhr/fV2yrovPX4qC0V8xTsCVNCxKUUSOkhp/6ADJWI9qvWy5PU/UQ8vSxjKBgUrvnNKYdyp1R/k/Awcy0XvsqYwhC6wVjYNJclMz59TaToo9pvZA3Yr5bGB84C5p8dHmsttknAuK2oa8oixRlSuIZISlCQme5tVbM1bYzEYY8qlO0K7PfEXiRNLCqxw/9MTdvdqbAyuhG/gLg0aGKbCDe1JeYn9JVEs3JhPpwU=\"]" + }, + "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/\"442-Qjt4FmGxfTVw0Qz2bxWNlOVqGec\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ea2f6ecd-35d9-4a1c-bf61-22495122e8aa" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:59.637Z", + "time": 807, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 807 + } + }, + { + "_id": "86f530aad6790f246058a707dd7c654f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1853, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleGrant" + }, + "response": { + "bodySize": 1403, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1403, + "text": "[\"Gy4NAMSvfbO+frveiREzVuxEZLauSOgk3DIwQdbmWFxL7++tbJMfswOCNL0bIClAVkT2lRywEG5GTmW5XmpYWj8F9pstjIZE8JZfBOUSBCYjTP9e1QyJEgfTZ28ZAnG15VpFyBYrX9feQf5p8bfmpCBbpJuGIXFv73xvslXAZ75X8vYQmP3Q13CfeFf9jl6blUrGO8gWJn7mXTaBNeRa2cgCJr5yiYNTFjKFzHgTIFu4kcq/7ms/ARO/m2iWlpvh/eFngRwJ6HkB3JpB6+LrBhMXVdE7Wvuw+0f3gDeqFAG2AQ0t80rjzGfi2Va5jcIB1Giwuz8bw50eukqvnlJgc4wwO6dXT8mAvzfUK/0x8NpcM5rg9KOmP5NwDScSAYsylF49fZkfJj4Nap20IKIIeCMzeqMhwONjI5O4K52yGAcrS8vbPSHwjnNMKAKJr1HjrZJ2+q5sZkhYf8X8Z4qvGxNunqrEyo18Fx0KSxktaZWY+4azpG+RA926ylX30Je8owNxoIgDZ4RQtk4paCCHfaBGruVSWMDEd9kmwwpzau9+1rVJKiodyAIQ0Ve7lv9bVz5crK2/stCk04/v3tMIFj5tzpJfPaUL1h61R8FlnCSiNJVkTr4kFRLpheGctESErptYIHS3NZ3G1bPPnH7Edpr3kVhav3zuXiklykDIEgZcleLluXoeoVw6Ml0t6sOgdDlL7y0rh+KvuLaMn+A6pkYIQ8b75T9elaNm6jGrusWOSiTM0YG8hiIcr6uliIDPMHyQHDlYIroI607jB6z3F7mBbNGotIVE7zA8tNF1bxHDK9S9HDmgBKnx/BY5wLecJ0cOdLX1ZCJtOCXjNjaBM/DspGI0G8eakjfavxW8ZRrbmY3apOmZvZVKyvoNBHaZw02WdpGe0b0LvrnyQRPvqMLdFkvbUmGLq8sxieteumm46ocI3vI7rpcc4tY0FfgGeV7J+WPBH3V5BZ6Ji32MtXR0IJBvjaFYJFESTgEJd9XCtqWcO3nhllx1hfCYflhBxAKiw9BlUxvd3tmZXeY3fBMh/2Sh7t3hPcT/YNSIc4EbAQu9eEmL6HNYMSQuVaDiq9IBtRU4BB9iBZL051xQhSQb/p2h7JFZP7QQty8aFRG78Q+8XS7EdTVvPYMODg4ohcx0/z49jHDuXfgV/avdnrJbGMIss6b//+nlJ7spmPrhIzo4oAoVHj1qiS63Lg==\",\"SdPpNjluH1aJdCSZSJgn1RUe7RV+/OQeioDz6Z3XZm3U0vJHSVviOvkf51r3Pxf4G/gScjARmEfZHsblvzy/i+QUSJetFag5Ka1OjOAJJOn9noRhfzjt9Ced/vjrYC77UzmZdaej0W8IzLHEVb7LuDOcfR3M5GQqJ/NufzQYDsaz0eA3SgE=\"]" + }, + "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/\"d2f-hvKYzkZiu8xEZ/yS1Bax5CKMrEM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:00 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "39e026ca-ea81-43da-b69c-329c6fe0e7c5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:00.448Z", + "time": 206, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 206 + } + }, + { + "_id": "bc50e1cdf1a6ebfffa4a4fe5ad3fc318", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 243, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "243" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1897, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicRoleGrant\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleGrant?_useLowLevelApi=true" + }, + "response": { + "bodySize": 674, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 674, + "text": "{\"id\":\"roleGrant\",\"displayName\":\"Grant Role\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/roleGrant\"]},\"workflow\":{\"id\":\"BasicRoleGrant\",\"type\":\"bpmn\"},\"uniqueKeys\":[\"common.userId\",\"common.roleId\"],\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"notModifiableProperties\":[\"common.userId\",\"common.roleId\",\"common.requestIdPrefix\"],\"_rev\":16,\"custom\":false,\"customValidation\":null}" + }, + "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": "674" + }, + { + "name": "etag", + "value": "W/\"2a2-fJE20ddhCCsGRlqbL7np5jzzd6U\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "86ebceed-7921-42fb-9e11-34a717d74fea" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:00.661Z", + "time": 796, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 796 + } + }, + { + "_id": "514c7daf7438d09068cfc636df2238e5", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "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/requestTypes/roleRemove" + }, + "response": { + "bodySize": 1402, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1402, + "text": "[\"GxcNAMSvvZpfvzsvpeHWuNpSi24y2KxtcghkQNcUjubU+8TKz107+HTECojuL58BsKoasgN0BLZGzwEL4WbkdEizba9aC1ygnVZ+tYHRkAje8mcu/S1DoDfC0u9VyZAICjB99pYhEBdrLlWEbLDwZekd5J8Gf0tOCrJBeqgYErf3zmdnpYr5zLdLPhIC/R9GGs4Tb6w/0EuzUMl4B9nAxM+8qU1gDblUNrKAiRcucXDKQqZQM+BcyAaupJaXeR0kYOJ3E83ccjK8RfxykAMB3TNAaFVod3ydYuKGKnpHSx/m/ygD3vScBRQHMgzOhcZZw8SjtXIrhQNiOmCXJ2VIehgvXRxLYDpEmGPTxbEY8PeeudAfAy/N/buDognOKKry01S24chCwCo6kS6OX9aGicdBLRPAlCzgj3RSOQhgf3zVJIjpGAtrTgPcPSXwhuuYkAUS36PG6yXt913ZmiFh/R1/9kRlwsOxSiyaI3TkhshQWMpMSavENDec5H+LHOj6VSE6h+nkHS3FgbI5sE8IZfKUQgay8AOdcr9d6gqY+K62yahCj/byKGtNKQx7aV/XTIjopvCw/N+68+Fmaf2dheYffnz3nkpw8Wk6Kbg4phtmj5qj0DJ2E9GUJFmVL0mFRLwwnJKUiDBtFZTze0PpNK7JPXH6EdM5vPtjbv38eWI551oGqizBQy0vz8WzQ7jvoxvlYlEfBqFbmntvWTn4Ky4t4ye4jKkRQpE5fv6PF+EM7zlEKrc4tHQLc3KgrkE8LG+8OYsKn1F4ah05oFKqGTQ7907jB6z3N3UF2aBSaQ2JzkI8DNNlZxjD29SdOnJA9vN+/RY5+JaL1JED3a09mUgrTsm4lWc8zVsmFaNZOdaUvNH+reAtyzjCrNQ0Tc/tLFRS1q8gsKk5PLTTLtIxunPDD3c+aOINFXjaYBmeC0xydSsmcdlJDxVH/RDBW37H5ZxDXJuqgN6gndd4e6EfdYAFvqTFacZaWh8IPPSFbJGEJJwREe2qgcNzvia8UP4zNCQOVTSLz21YyDJxXpVmt3/tzKbmK36IkH/aobINwBb/g3JTrgWuCCyY8ZIG0ddhwZC4VYGCr0o71BTgEHyIBUjSn2tBBRra8O9SeYvM8qWNhH7hVEpsxz/wurlQs6st13NoZ2eHUqiZnj+nl3WcbMNt7V/skVS7wSGsMGv6/59efrKdgilfvqKdHSpQ4A==\",\"1auG5Apti7SUdlXH9cuiKZ1GJhLmBXWB\",\"V1s57U9uIQs4n955bZZGzS1/9LyutE7+Z0nqaZ+WvBb4G/iWetiVMtpTqZKT0upIBx4VsnzZU9Dv9set7qjVHX7tDWV/JAeD9mT8GwKdKSlx7zhq9bqt/uRrbyp7A9nrtXuj2XTUnUxGv5Ez\"]" + }, + "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/\"d18-mYRyJeLWHVWyu/Dt/B9hFhuAM2Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:01 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "44adb9ff-9f0b-4d0b-9e22-9a46198b1fc4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:01.462Z", + "time": 204, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 204 + } + }, + { + "_id": "fa39344a9d10a65f8890b534fab125d6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 244, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "244" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1898, + "httpVersion": "HTTP/1.1", + "method": "PATCH", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "[{\"operation\":\"replace\",\"field\":\"/customValidation\",\"value\":null},{\"operation\":\"remove\",\"field\":\"/schemas/custom\"},{\"operation\":\"replace\",\"field\":\"/custom\",\"value\":false},{\"operation\":\"replace\",\"field\":\"/workflow/id\",\"value\":\"BasicRoleRemove\"}]" + }, + "queryString": [ + { + "name": "_useLowLevelApi", + "value": "true" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestTypes/roleRemove?_useLowLevelApi=true" + }, + "response": { + "bodySize": 676, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 676, + "text": "{\"id\":\"roleRemove\",\"displayName\":\"Remove Role\",\"schemas\":{\"common\":[\"/requestSchema/iga/commonRequest\",\"/requestSchema/iga/roleGrant\"]},\"workflow\":{\"id\":\"BasicRoleRemove\",\"type\":\"bpmn\"},\"uniqueKeys\":[\"common.userId\",\"common.roleId\"],\"validation\":{\"source\":\"var validation = {\\\"errors\\\" : [], \\\"comments\\\" : []}; if(systemSettings.settings.requireRequestJustification === true && (request.common.justification == undefined || request.common.justification.trim() == \\\"\\\")){ validation.errors.push(\\\"Justification is required\\\");} validation;\"},\"notModifiableProperties\":[\"common.userId\",\"common.roleId\",\"common.requestIdPrefix\"],\"_rev\":2,\"custom\":false,\"customValidation\":null}" + }, + "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": "676" + }, + { + "name": "etag", + "value": "W/\"2a4-afD/PygicqrdFrd31okGkJGo2Qo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:02 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e663775a-7dcd-47a9-ac1b-e94e531c38dc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:01.671Z", + "time": 800, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 800 + } + }, + { + "_id": "5675a945c772f7ea5e295b660bedacdf", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2120, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "2120" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1902, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/9c10b680-a790-4f73-95ed-81b345f0f3e9" + }, + "response": { + "bodySize": 1176, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1176, + "text": "[\"G3sIAOS06fenqzVnJnLpu7/04jLOY0UgMmZbxPxf7vmxn8qatvk2tmhtCqzwtDWBxrKJYcD9gArs038JRpjNNR6t9a8p6onUB5BuesCabgQR7k9PWGmhaxpU8dipox3BZmxbv8EE482dIEInt+IOTFD96q++j3lbIcKnW7+xtnVWdd28XtmxU9/Zq3k8MfbOvK0s8FnSPN7ABLYInWbaIT7ASEH4uUHg9ViWCbb8gsp4at+pp7ZpL+khwTlBXz8XH0AvaR07xMc5QZtpqTvEvx63dGi2V/60bANiS8tOAyqw44PcDCCfPnbqa7oR2xoT3bFvtoOlTmxDpda8XmswnftG1rYOE8wVIgTvU6q+YKCmUSev0DvhMFgelMg+2GBgghwOASDCB2XM65UtJaJExpvtGBAf4H3/2HWHKOQEW2s7DYj8nOC2VSZYevP3fV7LfE/LFxUm2NaPntJ6pZQcSXiyOqX63bq8gYGa5Mx99Hm9wgQmMcSpPkCU0iGOftB5/jNCVEhNBk/VomuGozY2YdBOYVCaiKx0WVk4pzlgdJnCnPaDvtkOVtLKUhngyBecodTZ6qaVw6a4Rq10wlCyQ8mldEaH7JynyB/b0dm2axUWKwHPPetlmpeUFwpSoPzI50fBRrLeeJdJZPTJetQpJMy5ZZS2Fu2CED44iv6yU2cJY1JrV6UKK5RCFa2bVxiaJtQ1CfSqEFoulGvS5FIDJf+c+pUGYyp+fFVQeoXB559/2akLLpLNUktvs0HuckItecMglUdrHVdGWU9BUftvT29Y8qK5PyIhtbNM83rFVn5PXqHkpVTKqqCpzaE2tWEw1NBQFTyTCbJYSvjy2MfcdGMFMW30onqlNMHSDHo9Uqckokg2CNN4qRylI4G6qoq5GYO5qSKSs8ERJ+kPVTtdytsx2NiYIxsaZwJi8u3SRPXQLhfdAGUzOfhsCoomM2rLA+aSBUrKptrKZTCKlvGL233rI61DI8SWbW1zv0E9qG9o39OV9G6rRj8Av5tL2UtjDFbSCrXXHFPNGZukFEzItgaC859zfh5aBM/Wc0wucNTNKQyGKnqRlTaNN0UBJviv00uIQk1wo5FqGgniA742rv84DYIIkkuL3CDXP0sZtYhcXqwIf8L0Oi5Q+BSJUv0sVeQuanlR2jmlpDd/wnkC\"]" + }, + "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/\"87c-9L0OPSgAU3RtaOswt+lE139Bf9E\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:03 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "34a1414b-9ff0-4661-88cd-1f4a842481cc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:02.475Z", + "time": 860, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 860 + } + }, + { + "_id": "06264ee08298ecf69c3d62fbf0e2d6ef", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 111, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "111" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 111, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 111, + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\"}" + }, + "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": "111" + }, + { + "name": "etag", + "value": "W/\"6f-oSLp8if86J43ZUpsMr9d2NhV5Gg\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "aaca82e3-f80e-4516-b5dd-986908776789" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:03.340Z", + "time": 948, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 948 + } + }, + { + "_id": "9ed5ac93b6819d13adba45faac8acf87", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 134, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "134" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 134, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 134, + "text": "{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\"}" + }, + "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": "134" + }, + { + "name": "etag", + "value": "W/\"86-KtZex3brHE5gcT3JI3NBqTElUD4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c9a5e0b2-95f4-4c41-a393-d9e7ea426361" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:04.294Z", + "time": 1002, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1002 + } + }, + { + "_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-39" + }, + { + "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": 494, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 494, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"requestType/fdf9e9a1-b5cf-496a-821b-e7b3d5841252\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:03.486Z\",\"createdDate\":\"2026-02-24T00:52:45.670896494Z\"}},{\"formId\":\"9c10b680-a790-4f73-95ed-81b345f0f3e9\",\"objectId\":\"workflow/phhDelegatedUserDisableWorkflow/node/approvalTask-bebe49db4dac\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:04.448Z\",\"createdDate\":\"2026-03-05T19:05:22.729337346Z\"}}]}" + }, + "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": "494" + }, + { + "name": "etag", + "value": "W/\"1ee-ptbfqaoq7JWC1zIEVskgijyVumE\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2f51b3f7-c695-4aa3-b91e-b0fce55c07b5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:05.301Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_id": "2fcbc93d1efeb09e7b2986e776b477a3", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 291, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "291" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1901, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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-05T15:56:25.363709073Z\"},\"name\":\"test_workflow_request_form_2\",\"type\":\"request\"}" + }, + "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-05-04T22:41:05.603Z\",\"createdDate\":\"2026-05-04T21:59:00.455683732Z\"}}" + }, + "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-bv57/StpFXp4Crk4ZXm9X0vtLj0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "75fc2ab4-ceaf-4a85-918e-5b49888b144f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:05.461Z", + "time": 868, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 868 + } + }, + { + "_id": "4434219d6128b83e5bbec4891205cafa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 111, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "111" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 111, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 111, + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\"}" + }, + "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": "111" + }, + { + "name": "etag", + "value": "W/\"6f-QRmStkQydV4b5IV4PEQRFDMIuTU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:07 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "23cf5906-efd3-4796-97ab-a92bb824c510" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:06.332Z", + "time": 974, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 974 + } + }, + { + "_id": "4df09fd95d47de66dd6d0795fe395331", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 119, + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\"}" + }, + "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": "119" + }, + { + "name": "etag", + "value": "W/\"77-07OegBQSrUNJEGpAPb38PxC3cDA\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:08 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9af9998d-8691-48d8-89e4-98b4b3c0687b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:07.310Z", + "time": 1009, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1009 + } + }, + { + "_id": "9c309eaab8228619458bb0721d2ee870", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 119, + "text": "{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\"}" + }, + "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": "119" + }, + { + "name": "etag", + "value": "W/\"77-/wfJPwD/QJWdqD3F8lp8ZhFFC+Q\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "772e359f-ef22-406e-9ca8-fd8a3e3019b8" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:08.325Z", + "time": 1003, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1003 + } + }, + { + "_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-39" + }, + { + "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": 701, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 701, + "text": "{\"totalCount\":3,\"resultCount\":3,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"requestType/af4a6f84-f9a9-4f8d-82ae-649639debabc\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:06.486Z\",\"createdDate\":\"2026-05-04T21:59:01.060154113Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:07.483Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}},{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow2/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:08.479Z\",\"createdDate\":\"2026-05-04T21:59:02.997658111Z\"}}]}" + }, + "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": "701" + }, + { + "name": "etag", + "value": "W/\"2bd-7sArS8pSFy0SNFhEQN/p16jJIxo\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2f3bd8b3-59ae-4c73-a659-c87976078adb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:09.333Z", + "time": 149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 149 + } + }, + { + "_id": "5a071d07f87c3556a079059b430da0ba", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 3700, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "3700" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1902, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestForms/c385b530-b912-4dcd-98c8-931673add9b7" + }, + "response": { + "bodySize": 1787, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 1787, + "text": "[\"G6cOAOT0dV9fv9ZcAXQZiCt2ttSW3T2XySOn4DwlAQ6h/O+aloQx1VUyyU+ZVQfAZXp+QKQB0FXNqJubcYBGnpB7lNusZzQpAwwO59MvkP2eoILr3Q4znfAw0gAFTOdrggoGGkO8GApIg+h3vp7aPkMF7++rYplODArKCuZqaYTqAvUGso/oGOdD1xXQh/8oTrcWXdPgMcOA5+cgmAto+mEP1QXoSHlCulqfX/Y+QXVpCSerHrjletcmetxSl5aLhmvnWV/3Yzu1fX4z7WhYrG7U+cGbMtL02XcH2s5SsMVidUN6QukV81xA01KXRqh+XK5iii/5oesnqBrfjaSnv/u4HcaJvfZ7ggLaBBV4IXhMgVCSsKiSs+h40Kga50L0NsbGQAELc9gNKnjSHikjge54xVBdYPT98+YRKi4K6JtmpAmqci5g3ydYoouqq/ZIGcOqfX6w8/mKlsjxGKgucwED+fQmd2cJQPhu09DmKyigIgY9PcYLWFJXqKbhQPP8U66fwiSVtSQcpkQalSoN2q1sUJJzRJZbXVqYC/Vle+m3b9KSdDYIh0oIh6qhiF5uIyanveNOWGvU5PpwGLLwQT78hzHrzHlF/0P7ob4fWclF9I2TyL13qIx2GMqtwUjN1psmuka6qcWjvW871vkRjO9NliI22hLHVOqAKgiFVpHAciuDNg2VUjYTeMJFYPTKt50Bxm8UKd/Dssz0Ei3UwPBZTu2xTQffNdduxq53faaauuuv2fI1UaLEmn5gDw89G2k40sA6dShXs+ublCEY3QiLpjEalfYeg4gGlTeJJ1dG2sqp6AF1HZXAVcYSG1NCURpDqOBtR34k1j98PnFi5/4wyO+EAmrhCgMV/FrW9T/lHV7X4+pOXS/v1HW6yLmuV3d+1PW4xp+3etwySTX/CbNV/8iaJnETPCF5rlDJFNBHscVQpsan0pRBmUnx1qeDJ30PqaHgHSfUXHFUyRt020ai8kmLkoyS0h+4owiuKUM4UX7o3OHLl7oFpFk3G/aEpoVGHZ3p1J27i6rYD0euqfPR\",\"D7cDXzZ2i8Un2rsVxTIUqK51o8513mxin8e+o3XXXy0XgLI4X80/samvFgVe2Qp+gLZhS4r93brFFiFyP3apM2OMbTbsw64/CVEx0f8TczzuC07qbdgiO2unRyOuhzTu+lPopQAYSUCRmlYvUp5EPm0TebayL2Y+n9VLOQs4IXATI+CkABPAl5ybDeuoW+277syqLHuxdmKdVtexnHb94WrHuvBjrlcZmR+I+e4vf6hmuc/YxmV2H6f2SCutEpyBacpHmpKlgN8PIABH3uxNJijAQjrfPz+kxh+6yZkijyI75H5ARZcp3kAcGODjqYdHCn889Yg3X3t8X77zT9emoNkqxD6f+D4oG3YyzziG3OtN6tLyqJ3HkpuIykeJXnOLSnMhvVQxCTGlCrwFKIWlSdePrEo6BHIOVVQWlW0EulgK5CZyp6LT3tK02ofJDxN76Kfde9DaOe41Gh8tqhBLdNwbjDxwbchZKeLkgSS4KQP0SCIIgpWuyhNUiK3I+Sgn/pHRvEnixm5TKdGlIFE1MqB10qEOQQnrpOdGT+4ogpstOSgncFYJ75alF8hE4k6hDkah0sJjCLzE4JyXZSRbSgvzzzmOP1+UVgctSwyOC1QpJnQ2WnSSm630KbmwhQJ+D3SESm4L2NPkk598QtKoT23TkliPqkCUwmCpsVQfhagUr0q3NtJ+h+L1nvuD76iRC+T6IzeVMpVwa225LjXn/DvMMw==\"]" + }, + "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-lONoeRotNBwKKhtyM+yYJWkszi0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:10 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "902160d5-0d71-4b1f-8c2f-5999dc3eccdb" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:09.487Z", + "time": 853, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 853 + } + }, + { + "_id": "1f27c1ce4d9a727d6aadd21b9224a0a9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 119, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 119, + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\"}" + }, + "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": "119" + }, + { + "name": "etag", + "value": "W/\"77-/gOQXuxUFdUfn9PFUc5/Gky8GvQ\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:11 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "62edbcf8-a4ba-4c85-b837-3d9ef75832b9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:10.344Z", + "time": 1026, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1026 + } + }, + { + "_id": "88afc99a57fbe6fedc0eb779598a8128", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 111, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "111" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 111, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 111, + "text": "{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\"}" + }, + "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": "111" + }, + { + "name": "etag", + "value": "W/\"6f-oGS7SnyB2OvJd+9DW9OVdAYyLGM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "911ce033-6e4f-41b4-8164-0d47860d641f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:11.376Z", + "time": 996, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 996 + } + }, + { + "_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-39" + }, + { + "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": 478, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 478, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"workflow/phhNewUserCreate/node/approvalTask-75cf4247ba1d\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:10.503Z\",\"createdDate\":\"2026-03-05T19:05:28.771987512Z\"}},{\"formId\":\"c385b530-b912-4dcd-98c8-931673add9b7\",\"objectId\":\"requestType/8d0055b3-155f-4885-a415-4f1c536098e8\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:11.525Z\",\"createdDate\":\"2026-01-30T18:27:54.68190238Z\"}}]}" + }, + "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": "478" + }, + { + "name": "etag", + "value": "W/\"1de-UUHcJpjUd34H9s8C6bGtlBUPuv4\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:12 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "b1949016-a75f-43d4-b464-5ff36221d4f7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:12.378Z", + "time": 164, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 164 + } + }, + { + "_id": "ea2378b67872d4e242544baaa0b13c62", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 317, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "317" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1901, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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-05T15:56:18.343008411Z\"},\"name\":\"test_workflow_request_form_1\",\"type\":\"applicationRequest\"}" + }, + "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-05-04T22:41:12.758Z\",\"createdDate\":\"2026-05-04T21:58:55.352331941Z\"}}" + }, + "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-wSrUKyxjl8WoGE6A0J7Uk/H3xMc\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:13 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "fd3ae0f8-0a93-4600-acdf-7322f653a57f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:12.547Z", + "time": 810, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 810 + } + }, + { + "_id": "4b24e059c5b49edb17d5eaa2a5c8a4aa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-pHMpP9vBc9DcKnzRvGSzAAaK/As\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:14 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9403a90a-8cd6-4e87-8902-07aa8a030db2" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:13.365Z", + "time": 1023, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1023 + } + }, + { + "_id": "c6285c61cc9648495aba3ee971afa4c0", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-eh8y8eTckjmCrL+hTtwjgCMnuow\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:15 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6f583eb9-4981-4cfa-83e5-a0904acebd0d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:14.393Z", + "time": 1003, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1003 + } + }, + { + "_id": "34ef2b198509ba2b9144269ede68d7fa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-6I3woRgSX340V/lkyoixPelf1XU\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "c0c49e38-5a3a-4f89-bb2d-5971ae7ff4d3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:15.413Z", + "time": 992, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 992 + } + }, + { + "_id": "e1eab05886f7920090b28656ef217ef1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 116, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "116" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1890, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "assign" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_action=assign" + }, + "response": { + "bodySize": 116, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 116, + "text": "{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\"}" + }, + "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": "116" + }, + { + "name": "etag", + "value": "W/\"74-lJ8cLlCTOr1sxrR78IlbtGFkv0Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7b39442d-9f8b-4d17-b179-94042f9d3353" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 428, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:16.410Z", + "time": 1006, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1006 + } + }, + { + "_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-39" + }, + { + "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/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:13.522Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow2/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:14.546Z\",\"createdDate\":\"2026-05-04T21:58:56.942846391Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow3/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:15.572Z\",\"createdDate\":\"2026-05-04T21:58:57.945623532Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow4/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:16.567Z\",\"createdDate\":\"2026-05-04T21:58:58.95554458Z\"}}]}" + }, + "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-+qQSK1anqJj6a9OQH31ezZcj6VI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "965dd34a-178f-4378-8bfd-76a40a1b027a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:17.425Z", + "time": 160, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 160 + } + }, + { + "_id": "93b630b29e448a6cf078eaf45fc8d31e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"1e679adb-451c-4aa8-8c8c-cda5ec93bdd5\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:30.380227085Z\"},\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event/1e679adb-451c-4aa8-8c8c-cda5ec93bdd5" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Cannot find event with id: 1e679adb-451c-4aa8-8c8c-cda5ec93bdd5\"}" + }, + "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-4KFiaUL+2AOeXR04DfpnkdYXfDs\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "2d230767-3edf-48d0-9008-a6ddfb4ca450" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:41:17.591Z", + "time": 183, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 183 + } + }, + { + "_id": "b82a6cac41b1001f8b5f72a8a41303eb", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1921, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"1e679adb-451c-4aa8-8c8c-cda5ec93bdd5\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:30.380227085Z\"},\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_action=create" + }, + "response": { + "bodySize": 744, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 744, + "text": "[\"G4YFAMTPpfan6+qdIeuehNMvrVvYDFlScD6MnY0Q839NkH/q9w7wTCMSMEGuV5SW2KKNbcPxBj6N57PNRlB7FNGrOE+3+UudlRCG/B9QCV6fCApMkb9P4WCP06WEgMY3QiUsOpRQWPSxhMCiQ/WACtTX1cgCfD0TFKYw3lHkoGUNZIG/D+6CSrDuyBSgEqYA9TthnDxr5wUed76PHJzfQWGOFFZR+zOr0fEVAlnsqM96Eqof/fkjFDRyziLBT9yjFpaC3+gODT79n/URboojWeZG5owrc4KPdcCUydQ6IUPGk/9I7C+O76ASzoGsuzdATMgC9crW5IghDZA3DT3OFtkWrdVGVqeip4irDqDWgnjam6EzyY4J6fs2vPSG7sm89Ew7CqWN+bKN3zH6pglAoOrmkY9Y3y3bDjQ557/5bxbI7LgHCkuFLGDyYfDnqf8WvlDkG1rI883LpAB5dnz9MpFfPUcKEHAGCo3RZk2tkd1mXclmaAa5Jd1KXXdta8pBb8YGAidibTRrqIRUBg8m80QzQaEqqk4WtSzaL2Wr2k7VxareFFW1LjbtL2SB08wug2CAQ/RBuCmjvxxcr8BKX0Jg2Zz4mAjcQv6dV/M/BIqsF6ZDoQbaJ5jbOVK4LWxdteN2K7tt18rGNq0cSmqk3ZqhtLoxo+0gcNLuKHz/A6bIq3E6QSBaUYMwU4XQq18+f/iFIn+NFJD/CkTWPEcov7t+IQj0gRaoMgM=\"]" + }, + "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/\"587-k2UBMHG6HCtyf4ntVKpYQrgS1Yk\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8cb93a27-a623-4bf3-9842-6f8abf1fe810" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:17.778Z", + "time": 610, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 610 + } + }, + { + "_id": "f6f3033106e49705865935afa29e0545", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 801, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "801" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1941, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event/c87b0605-03f6-4372-9ba6-e0f43e0b3bcf" + }, + "response": { + "bodySize": 810, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 810, + "text": "{\"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\",\"_rev\":9}" + }, + "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": "810" + }, + { + "name": "etag", + "value": "W/\"32a-CPAH1BLniro5vrOEXM63Am2lVU8\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "05e50e63-65c6-4b96-af50-c7d42a5e5518" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:18.413Z", + "time": 984, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 984 + } + }, + { + "_id": "27280e858bd630a949d956a9e9a7843e", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1942, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"f168e34f-3ae9-4db2-b210-5f9176b7a008\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:32.632271486Z\"},\"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\"}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event/f168e34f-3ae9-4db2-b210-5f9176b7a008" + }, + "response": { + "bodySize": 77, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 77, + "text": "{\"message\":\"Cannot find event with id: f168e34f-3ae9-4db2-b210-5f9176b7a008\"}" + }, + "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-XBfpAC2170QH/pM8av+9/rqyNx0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:19 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "616ac204-351c-4749-8329-c813445f9284" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-04T22:41:19.402Z", + "time": 247, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 247 + } + }, + { + "_id": "9d3a6708aaa25790b7ea1d436a0a7229", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1406, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1406" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1921, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\":\"f168e34f-3ae9-4db2-b210-5f9176b7a008\",\"metadata\":{\"createdDate\":\"2026-03-05T15:56:32.632271486Z\"},\"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\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "create" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/event?_action=create" + }, + "response": { + "bodySize": 744, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 744, + "text": "[\"G4YFAMTPpfan6+qdIeuemNMvrVvEDFlScD6MnY0Q839NkH/q9w7wTCMSMEGuV5SW2KKNbcPxBj6N57PNRlB7FNGrOE+3+UudlRCG/B9QCV6fCApMkb9P4WCP06WBgMY3QiUsOpRQWPSxhMCiQ/WACtTX1cgCfD0TFKYw3lHkoGUNZIG/D+6CSrDuyBSgEqYA9TthnDxr5wUed36IHJzfQWGOFFZR+zOr0fEVAlnsqM96Eqof/fkjFDRyziLBTzygFpaC3+gObX36P+sj3BRHssyNzBlX5gQf64Apk6l1QoaMJ/+ROFwc30ElnANZd2+AmJAF6pWtyRFDGiBvGnqcLbItWquNrE5FTxFXHUCtBfG0N0Nnkh0T0vdteOkN3ZN56Zl2FEob82Ubv2P0TROAQNXNIx+xvlu2HWhyzn/z3yyQ2XEPFJYKWcDkw+DPU/8tfKHIN7SQ55uXSQHy7Pj6ZSK/eo4UIOAMFDatbnpb9tIaY2VDpZXbdbuW/aap9dYU1I0jBE7E2mjWUAmpDB5M5olmgkJVVJ0salm0X8pWtZ2qq1VXV9W6bDbdL2SB08wug2CAQ/RBuCljuBzcoMDKUENg2Zz4mAjcQv6dV/M/BIqsF6ZDoQbaJ5jbOVK4LWxdtWPfy67vWtnYppXbkhppe7MtrW7MaDsInLQ7Ct//gCnyapxOEIhW1CDMVCH06pfPH36hyF8jBeS/ApE1zxHK765fCAJDoAWqzA==\"]" + }, + "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/\"587-+F2un9VWozFOMm9jNWdhpZOzTJw\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "33ad7858-ee2c-4f00-9244-15b80d90b09d" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 458, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:19.657Z", + "time": 753, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 753 + } + }, + { + "_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-39" + }, + { + "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": 4158, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4158, + "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/\"5798-ZwyhTetdwpBlYDy0abdq/iZR/3Y\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:20 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f4df19f1-af3a-43ae-a1be-d808645c2a93" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:20.415Z", + "time": 459, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 459 + } + }, + { + "_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-39" + }, + { + "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": 4165, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4165, + "text": "[\"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\",\"eIGqiDMKV6jSkNIrmEQsimWutVQuRg==\",\"JJpt6+zMdjNt9GnwSN56/Gkot7LmdOJNt9TVaim3wg49jpjcWio/be//mTNalE/zyJ1dTAzk0YdW9kZD31RHKEXRiScze26r5ka4VVx7qMA5ZwDbBO4a7UYKT7VlJgfVz0d8DJWvFyeO2PMhsO0fTp8bjmM+u63P2oZxeM2WxGgasYjbbHaeW5+7XTfC6G2t5dMTOWwxzSOZy2d46vj1iVtrLrdJlG7N00gm9RH7mis05mFjMnMsBT6ruqmvu5HCoG5N1kjitWz+rBD3IkqyJSvLsmRFmSVFwoqmcnlRusyiOA1ZmEZ5mhcRVrChMHumwVaIjGIGi55SpXayO7hXPe5OXEMFkl+nbgZTMFaQVH/Egc2JBRyXm6Fw3/ZoBnsDT1Y2T0wyEIPRrTfaHx9yJByY8NmoTU8DtXj0UIFcAt74SCn4o6G8odfvkjrpSL3HceknYukqYOmCpx5JdnumpkfcF57EmZecKTCXRrzn/jhGMmjENPiiNfOmhw7d8EBTX2RFHesUJ84T10j94K2XkgAkFjQffRKmQTKfl8R7B3oILGhR/DQPVbXfDLBikyKskwTnEbGPZ2vk5F/KBfEZsQZnGLvLkTwu8KpOymsDuyr4X3I8WMA0zJ4lxbJYSVxkURiz0WJDeN4BNrVGgqPmeRmSVHmQicWCqqHx3X0a+gYtvcYzWVUCaX0Bifcebhy9FjAvEpUon3YEI932uAoY0KzD1LTuaKOdq8GhBYlMJS6HNBuo/ztY0yFI9Qo4ECeMbtT6qRN4LvIR0Yrn8bUaF15XyHjf+IEUz/GAgDcRuCc5SyyjKx8kfKSl3hEVnYZPRPXYXDluqVOQfXsBRQcrszOWLJN/sjguiiIqWHbToGic18P/VNxjcSGeQfbygoKypKOeSd5LTIPsSQPlHSwrNoviuITbpF84LprjvTUn+M6ZiNdMidWIeQhuIrT+GoGVg4zMDknuOOqpK1xlgi020fvC+gA0wjDdqjqusEIqcV4UAdkTSnucds/d8505eq7Mee4HBxUc90NPEij0gxdGZ28HHAE=\"]" + }, + "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/\"579c-uyJkhv7mnbIRTZcJHDfkHz1pVtI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:21 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "6b3bfe99-c4a8-4e3e-a253-5e1007da8c97" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:20.878Z", + "time": 763, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 763 + } + }, + { + "_id": "99f4beabb203c939ec40852de2e838e2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-ydN7M156ZRP29BXD6s7nCW4TmKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:26 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "01ffe039-fd0f-4c44-a15f-efa8c94c4129" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:21.650Z", + "time": 4965, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4965 + } + }, + { + "_id": "895eb95618a77771bf338429eb1458f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1" + }, + "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/\"5798-pp+W5KGsx1qsLJd/g1MvFRAFoKY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bc86f3d1-6eaa-4e41-964b-97ebc067e7f7" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:26.629Z", + "time": 890, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 890 + } + }, + { + "_id": "ff3c4d9ce9c0339d60ab5e4dd7d63693", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1996, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "objectId sw \"workflow\" and (objectId sw \"workflow/testWorkflow1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=objectId%20sw%20%22workflow%22%20and%20%28objectId%20sw%20%22workflow%2FtestWorkflow1%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 484, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 484, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:07.483Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:13.522Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}}]}" + }, + "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": "484" + }, + { + "name": "etag", + "value": "W/\"1e4-1CdqYlMkEEZ7kR5+eAcEY9b5yZ0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:41:27 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "f79a6acd-926a-4698-b502-3b91f217d8bc" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:41:27.528Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/oauth2_393036114/recording.har new file mode 100644 index 000000000..f997c0bb1 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "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": "Mon, 04 May 2026 22:40:39 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-04T22:40:39.098Z", + "time": 135, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 135 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/openidm_3290118515/recording.har new file mode 100644 index 000000000..19fac2c5d --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_i_f_3126144190/openidm_3290118515/recording.har @@ -0,0 +1,2438 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:39 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:39.280Z", + "time": 179, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 179 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:39 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:39.465Z", + "time": 95, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 95 + } + }, + { + "_id": "492e6a89918082b06caf1e567dd9ab82", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 511, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "511" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:39 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": "content-length", + "value": "511" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:39.572Z", + "time": 151, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 151 + } + }, + { + "_id": "2339198114bb7488614b2c5411672401", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 304, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "304" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:39 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": "content-length", + "value": "304" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:39.728Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "199b3f3dc9dd2363517dfbaf6418c575", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 401, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "401" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1960, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:39 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": "content-length", + "value": "401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:39.835Z", + "time": 105, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 105 + } + }, + { + "_id": "4049203414a3265161f47622a3423f9b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 1379, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "1379" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1964, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "1379" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 654, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:39.946Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "011ffcb3080baacf7ae2a0e8c78e45d9", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 832, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1952, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.055Z", + "time": 101, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 101 + } + }, + { + "_id": "d188e77c8fac307f9e596a9e2f3a1248", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 657, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "657" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "657" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.162Z", + "time": 101, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 101 + } + }, + { + "_id": "078068cd6ed823ecc7b6434849b69b60", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 642, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "642" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1951, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "642" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.268Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + }, + { + "_id": "3466dd12863cbb1d2196ddeaf8f8d69a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 832, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "832" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "832" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.375Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + }, + { + "_id": "77942fc647b15a6cd0e2e9de86db1253", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 672, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "672" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1952, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "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\"}}" + }, + "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": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "672" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.489Z", + "time": 109, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 109 + } + }, + { + "_id": "322ac2714e36d4f8b9e577210c2a31c6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 919, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "919" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationAssigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, please review at your earliest convenience.
.
\"},\"message\":{\"en\":\"A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, 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: Violation Assigned\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationAssigned" + }, + "response": { + "bodySize": 919, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 919, + "text": "{\"_id\":\"emailTemplate/violationAssigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, please review at your earliest convenience.
.
\"},\"message\":{\"en\":\"A violation created for {{object.user.givenName}} {{object.user.sn}} was assigned to you to make a decision on the user's violating access, 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: Violation Assigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "919" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.603Z", + "time": 82, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 82 + } + }, + { + "_id": "1da9352f0c1df15f60320af430fd36c6", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 749, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "749" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1955, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationEscalated\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} has been escalated to your attention.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} 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: Violation Escalation\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationEscalated" + }, + "response": { + "bodySize": 749, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 749, + "text": "{\"_id\":\"emailTemplate/violationEscalated\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} has been escalated to your attention.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} 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: Violation Escalation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "749" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.691Z", + "time": 99, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 99 + } + }, + { + "_id": "21e64760df62e1d019bdd61b395c4cfe", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 732, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "732" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1953, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationExpired\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} has expired.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 Violation\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationExpired" + }, + "response": { + "bodySize": 732, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 732, + "text": "{\"_id\":\"emailTemplate/violationExpired\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} has expired.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 Violation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "732" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.795Z", + "time": 100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 100 + } + }, + { + "_id": "282487c15e400e4850b3b530672c1a67", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 908, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "908" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1956, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationReassigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, please review at your earliest convenience.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, 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: Violation Reassigned\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationReassigned" + }, + "response": { + "bodySize": 908, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 908, + "text": "{\"_id\":\"emailTemplate/violationReassigned\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, please review at your earliest convenience.
\"},\"message\":{\"en\":\"The violation for {{object.user.givenName}} {{object.user.sn}} was reassigned to you to make a decision on the user's violating access, 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: Violation Reassigned\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:40 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": "content-length", + "value": "908" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:40.901Z", + "time": 105, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 105 + } + }, + { + "_id": "56140fbc7923c777ff9f401915b492aa", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 772, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "772" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1954, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"emailTemplate/violationReminder\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} is awaiting your action.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 make decision on violation\"}}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/openidm/config/emailTemplate/violationReminder" + }, + "response": { + "bodySize": 772, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 772, + "text": "{\"_id\":\"emailTemplate/violationReminder\",\"defaultLocale\":\"en\",\"enabled\":true,\"from\":\"\",\"html\":{\"en\":\"
The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} is awaiting your action.
\"},\"message\":{\"en\":\"The violation assigned to you for {{object.user.givenName}} {{object.user.sn}} 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 make decision on violation\"}}" + }, + "cookies": [], + "headers": [ + { + "name": "x-frame-options", + "value": "DENY" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:40:41 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": "content-length", + "value": "772" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-74980281-c740-4755-9166-9e2e537b49f3" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 653, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:40:41.013Z", + "time": 100, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 100 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/am_1076162899/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/am_1076162899/recording.har new file mode 100644 index 000000000..1dca28ff3 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/am_1076162899/recording.har @@ -0,0 +1,312 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_workflow-id_file_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:16.624Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:16.932Z", + "time": 103, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 103 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/environment_1072573434/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/environment_1072573434/recording.har new file mode 100644 index 000000000..855e7d139 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/environment_1072573434/recording.har @@ -0,0 +1,125 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_workflow-id_file_no-deps/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-39" + }, + { + "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": "Mon, 04 May 2026 22:42:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bd95a0b9-ca97-4f3e-b177-07a5002bff48" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:17.041Z", + "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-import_3803419662/0_workflow-id_file_no-deps_1253733815/iga_2664973160/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/iga_2664973160/recording.har new file mode 100644 index 000000000..e0daa9a12 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/iga_2664973160/recording.har @@ -0,0 +1,645 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_workflow-id_file_no-deps/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-39" + }, + { + "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": 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/\"5798-pp+W5KGsx1qsLJd/g1MvFRAFoKY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:17 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "1f6f8818-8c9d-4f0d-a86a-ec4cca59bc42" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:17.259Z", + "time": 549, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 549 + } + }, + { + "_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-39" + }, + { + "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": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-ydN7M156ZRP29BXD6s7nCW4TmKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:18 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7440e4ad-badb-4e5e-a682-713a904d33e4" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:17.818Z", + "time": 389, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 389 + } + }, + { + "_id": "99f4beabb203c939ec40852de2e838e2", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22377, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22377" + }, + { + "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": "{\"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\"}]}}]}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4246, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4246, + "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/\"579c-ydN7M156ZRP29BXD6s7nCW4TmKI\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:22 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "e3ebdae1-0c7b-41a3-acc7-1a9c47f7691f" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:18.220Z", + "time": 4149, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 4149 + } + }, + { + "_id": "895eb95618a77771bf338429eb1458f1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22373, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22373" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1876, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"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\"}]}}]}" + }, + "queryString": [], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow/testWorkflow1" + }, + "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/\"5798-pp+W5KGsx1qsLJd/g1MvFRAFoKY\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "51b2e249-11e3-4ab6-b9ba-7eb4184f6ed5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 459, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:22.386Z", + "time": 927, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 927 + } + }, + { + "_id": "ff3c4d9ce9c0339d60ab5e4dd7d63693", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 1996, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "objectId sw \"workflow\" and (objectId sw \"workflow/testWorkflow1\")" + }, + { + "name": "_pageSize", + "value": "10000" + }, + { + "name": "_pagedResultsOffset", + "value": "0" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/requestFormAssignments?_queryFilter=objectId%20sw%20%22workflow%22%20and%20%28objectId%20sw%20%22workflow%2FtestWorkflow1%22%29&_pageSize=10000&_pagedResultsOffset=0" + }, + "response": { + "bodySize": 484, + "content": { + "mimeType": "application/json; charset=utf-8", + "size": 484, + "text": "{\"totalCount\":2,\"resultCount\":2,\"result\":[{\"formId\":\"9e3fc668-4e96-4b03-9605-38b830bea26c\",\"objectId\":\"workflow/testWorkflow1/node/fulfillmentTask-7fce35a32915\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:07.483Z\",\"createdDate\":\"2026-05-04T21:59:01.978419266Z\"}},{\"formId\":\"fa1a5e72-d803-4879-bc2a-07a5da3d8ee9\",\"objectId\":\"workflow/testWorkflow1/node/approvalTask-7e33e73d6763\",\"metadata\":{\"modifiedDate\":\"2026-05-04T22:41:13.522Z\",\"createdDate\":\"2026-05-04T21:58:56.030897009Z\"}}]}" + }, + "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": "484" + }, + { + "name": "etag", + "value": "W/\"1e4-1CdqYlMkEEZ7kR5+eAcEY9b5yZ0\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:23 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "72c3fd10-a87b-4d07-99e4-1f298cc4836b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 429, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:23.320Z", + "time": 154, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 154 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/oauth2_393036114/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/oauth2_393036114/recording.har new file mode 100644 index 000000000..56432a74b --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/oauth2_393036114/recording.har @@ -0,0 +1,146 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_workflow-id_file_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "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": "Mon, 04 May 2026 22:42:16 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:16.797Z", + "time": 129, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 129 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/openidm_3290118515/recording.har b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/openidm_3290118515/recording.har new file mode 100644 index 000000000..682d63cf9 --- /dev/null +++ b/test/e2e/mocks/iga_2664973160/workflow-import_3803419662/0_workflow-id_file_no-deps_1253733815/openidm_3290118515/recording.har @@ -0,0 +1,310 @@ +{ + "log": { + "_recordingName": "iga/workflow-import/0_workflow-id_file_no-deps/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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:17 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:16.975Z", + "time": 175, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 175 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Mon, 04 May 2026 22:42:17 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-67377baa-6c00-4494-9a7e-9bd9065eb409" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-04T22:42:17.144Z", + "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-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..c76cc6ecf --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 14:59:48 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:59:47.993Z", + "time": 156, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 156 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 14:59:48 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:59:48.344Z", + "time": 107, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 107 + } + } + ], + "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..bceb526b1 --- /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-39" + }, + { + "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": "Tue, 05 May 2026 14:59:48 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "590eee13-a168-4e79-9f39-f818639161d9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:59:48.456Z", + "time": 102, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 102 + } + } + ], + "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..b86dc641c --- /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-39" + }, + { + "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": 44902, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 44902, + "text": "[\"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\",\"Mfua3Wmt2xYmfKStMdG0oUTrgE+z\",\"aNVR3NbW6bbBRJ3SZ10Ufbf/JPBcjNS42/LaUWfbhSxk1bmiXsrlDTb5IiwymASNE8YcmrdjStj5GB1EwTiyXy6TnEJhiuS8vZYy5tEueEYNESGgGDO63/lJ+esy4yyxZ6BSyUeHtIyYWoatzUKGb3YsnnHvS+WpILvYRsgNpXBwPr12PYoLRS1pe5tRSeAoC+j5yidn1JI2zNbo7Zt/cKCB7CJNnKj3LZq8yHJjeKqEfrwnLVKaMS4w47R42MXx3aGjuT0PdMhOJYp1iXZvbGsypV7PTTyqx6sdFRtpqQgFZf97q2gXQliEH1A6doN0UtAjm62rn1KSkylqjTXdw29JIqXHmeWIs6/jHqMLp1sg5eYBncLJyevxcK6gQPGPVuha83DF65IDQfLIfN5mwwqTKkplQ5sHwnqx+SAQCKzErhdkCWTgnlRcDEWPAZLFbDLHAI1j1HEa/KiC/tkzRilj3tcxeSYVValIWf5437BojDLY6Jqj5Ag/FTm8z3pUAldCVl3J+10kTdq+zZcyxsu6Pkwxlk/R2+zsv8UJzvozfr0RiIPVToCQAumW0WiivYmLL582L8NucpZDoHyV6yMLHOfcV6R1Q2STSaDc0eWGWa61kvXvDFrTW3d/Z8kkO7qTt2nPOE5Cd+G6qhXqIWzTiv5+O2mOqlYZ1qkGZWlp0tQaRbuiTaHiMU6/4V5tDztZEAYWZE3ltF5XFZgqYKqoZZhENkGEfAn7fnLl6+vKhCI7QqfZd10SeVozxFwz+TAoC0sqa0MC62dOVt86tuZJgXi+9L0dul7XXOaLvuiIG6Nx1NG82wUvn9MguNFGi7ZRrXrouJllh0MQla7BijgkZlmE+yyaJm7MjKDz7eKysrxZulTEL/skIsb8Ae1dj2uULSa+irzGMC+PxD4WK95hdFCMQfP1sNXoxTT2gAOujSqs++3GNS/LTN6LZ24q8mlSIBW+YcM8d+RZlDS+UDqx+ngRxl4KtdC2c8omehgJlUS7EPypU5xjVLDQuUcIaIwJhnEsU3UrduY0WrqVj7uNcj5AoCrnlEhogqN3nIJV8REbmlE0BvvHIx/EXA82KbefDnafirxbWJQphLeGyM1jDqxpjNWX6mIfCJ5NtyH0xDhDiW6HUfmyxrI06w7Fxy6YoWQdQZIa3VrCy3CN88IiyZ7bpEUD+LTbOE2LpBnoHWyWjf9p/6vkKJEJUcJGAxcRc5PE/xSHo93q9hXHbTPu4U0WAIAXbNYv4Bo9LK4vlLk66Dn8iqLqqNdhM+pEH5g4OQWniuKejSBF51oB7TkYpcqWRMNIpa0eOOEXQVzBbwGb0L+75S8j0MAmOouBBCafT2CaRaiR8wxtU8AIBYIozsS2vuAXOcRPdbbyTKaTvrkDbRxj8lRzBwZFrf2whJKeiJu5cVeJn3x1FpiANbqvPLwE2zBLZW0jKD/qfFtBbcdi96ViiG7up2iVgYnljxK/CBT37eJZwd6+42fDHRdFtrhcnJMFH4gUozAbdLMpkUj77KmjpSMqCcvnEyvqkiSgHQvn9lblt4xlFcs3j2MtNVpJjCauUOqzzlM+W8EqthD3zqOL6CwqoHGjPhwS9ujfULPE3sVWA90QdZREpELzBd/C9tWqG7niZFRWiylWCM+m/x3xKFrwE2AMfoYx54fBkbFeA3c1+uCm7fQss6ysYiCRoNT8mAGi49o/tsN99WFrCWIdqgR2HUi4O9YP0pMFlmhnwz2tjsHF2JWvAyY+oLH7c+IML/+bJBbHUVqMNMocREh6SEQiFDNW/0oTKWW8VDLJEW8MhQw3yZtNEuMITSIRzCq8B6B5WJ7Wo/KMLAa5aRIxlQ==\",\"2/ILw6jcCybmvtyV2RHcRArbnaK4bE/CnR6dkvhGNv4+Zyo3pi04Z6kxlOxGXoQHAUhtCO1l0rK0qMlx08ZapIxlVKeqflRu8HFtIMmhSnbKAmkvJRqKQdAWkU+sNGdfBKBr7Rc2bkREl7bQE/5I7K8HEKIgaKgMv5dP9vON2bjjjWaFEWmIWQi9kIXEJpNJQ2aim6ED95f2KKs6sFu45vndxS9RHORmUNf4ToPcKIhrQgi7j1SGnS1OtDBcEyXB6ViCtbemLYESxnkHylqUw3Yjw1WzdwE/a3nYm/dM00a1TSobNLwqt3lcH7aIoHYBJayRJ1K3sEyI8eGLrbYbamfGUJ8aHNwU/M2FG1WPZu7JkI/P5xB+qESG4UmVVhDsGXNSpiyXBAzWVkIV/xfofLdZo9MsLTJQkkL2E/CnTIjooPodRDW4PGZpAEEIsE1j6+XKjPdPxk+J+P9Y0Qxw4hLqdBrt5CtDVYGVmtdf+aNunmBwcOl1O8An56eLuv1DM9yXyYs67JB7uiyHcx5s5DtiH5vwJgPcqHcIa+rb7IQbt25Zm23/1iL5TD3ZY38YTklGWB6qH4fjlZgu6VaEyGVBB9TuR0UI+lhmfNjs0t+IhNzMYsxPoq8/h0pPN9J0HVlSrxCrMuE8Sb40sb+wkCJTw/lFxjnALGL54ep0Nap16bxQXAp+sZmhARWioaafjcsib3wfJj5OoVVGcTR1LEFSvgIXRaKUUpmSBZeLTnvbvNBbOewUQ1/8oo/wpBFbgWDMdoirMva5DDpmNIpC8khs9g8R6+XA1eysIbDLMzsCJZEXe71mxqBqKDaczfa2PUQoNosVb4U6tut/h8d/+sshja5BtT9LbWQEjL5LtYrGfMi2J3YRQvd+RBc3imcjmfd2tn1m2LRQKgdd+0iB3Z1TNSx5w3l/1CqemYRD23ZEDUEgWYjdL8pdQsMGhEUBFMGT7H9k9jFOmODO4tgXtNvQNyasCl/TO6BDyxR6zfXY2csFr79nYB9ZOnoGLIreerOHZzZk9UakgtJct6yVdbfvecwgyi94M8mF2BngpM7vGFC9dcQqdAsxkjjG8w1rlNI5Z4bXSoQLcJtbO3IT2oWkW0yzYA2DJkWroAwWheG3ora9bItmMs3m+PZXu9emC+dc8R4G8LcTLuOuz7OgC4Gc0VrR4b3epx1NPO2xzLxvB3Tt7HNaMEvbpjY005l50WY1wRB3mn+8ZmzKVufo0jAg11jBh6runwROU3KQw4e+nQUkEXsY8fbVkFs6cygQRLvI65T4i2OpZip2Ptk/3DbqrnnRzRINuEBkwUJ2+WyGdMSTNSiG1KMx2HOtViqNYoYYiaO8aLm1WnRELSGZiZiMI6X6m1LNqVo6gm2yiotwmStmuJKO7sBamHX+/s0QWVo8lMYuMaIx7KyamLt+eW2Mo9Lh8RGIZeoNfrza2c1cgyxr2Gul1dP1J7oA29BU5U8U0s2MhHrmPaXGHPneCNPmbZbWVGKTP0JOLIyZ+Rf6aOq7dvuvM0Ubk2rTsHp+mIzJ+lee7qYtmGhlkSuutETQDObrJ7fosfWhx8TQEPf5Rr7QHjg9e9qE9cT8c0FwQCbUCILm27zGsSgINynHRxCTh7ak/Oiyj6Bb9SExHA9B8bLegmvRVjg9yy3p1SAQm8ljyyXaTs9H3jIhMZ1grOv40rXYnJoek+QE/vGbGwN8AAlQZyMoa11F5kkrSFsSD6jlGSvJwec2Ng+0RgrJzmAvuxnHAiMd/EaAZxRWiaVbUGKeOitpnJtyzZBLWeeS1+nLsDLEns5uHFf+gubgNP1lSwrDx6w3Kp6eGmEDxDS7BWZKE3BXaQaa3FTqUg==\",\"JUyiGSc0JErWpS6HF6VqVHplXzVYD8tVGuJr0BmUQ1n6HM7jPInjZ+nQee94NI8Dyx3BEKxFxBuQTwrTxUQMEwChlM4L/JaKbq0IEhcp5Z1GF50sMX3YfwXnfe+efVcZmN+gy5j/adrPR/ZbHXCNbOnrwpMxnyMWlII8hzZ6sPoRZkDfwoM2DHLq3bOMbiqoIbBPTAQvKty1ANigIDvDUn0J6F4Vi808mthjxGUdbEEPQDLwBXgkjyw39j4RxUHDGSHkxDP+umkjSTiuM49ENG3IuB5PZUOfXOle0wTbQHAR4E6xSF/4jUu9h6j8FBHXEDAm+j3pQFwsT18JytNfabXydaQeKasLoXgzmFuWQbYK83m7Gj+6MrBYDMoE8TGztSJBKWL0AvPlDh5yb1CGRUrzGhvNRVv1jbJXwc+f8LW4lp7Wz59w2breaLv00N/XXu4FMLiCbBk95o0cpGHDNkLIlWzaerfVBA9PxSW7UCYWYLV+ubCm9H2MucyxO/Jc/ROaAOeHwcXWg/XoqvQ3WtXjpdPURK8ZZks8qByxulYPW/+PJZC1ATe3TouOKCA9vg+Regj90it5ibDyZfbOPR3232KIoImsDMRMOlWTVwwB9bwhClTlv7OPta0iGZqg+GVd19+T0Yi+hmTsrKpowwVOHV4oxzvjbDQrE2Axg+vLAFvTC274RcC1qpMdrNrNeY2IUFRODA6IEBbcy+aVWfVn4IK+86Rxu70L3YArMy1ox4kj2dJZ1B78Q3FcxZmQgNW6odFmJEFuV0toObYe4G7hfqAhzJ0wRB57KhKrOEN5n4t4Z99UKgVOdgPuUOm4JhNm6mjuzi5lW/fUz7/Rw/aZuhYmksGsSA+i6T+DTggAGl78UjkAAviftGSlE0pX8YwrLv0vtqdmz95uNb7u5O+6P1SSQz2KxnX2Jp2pI6cMBsgSUtrjoSJWQMgcoagubiAa8sgUY0/oK6WRgZt+HDRJyPugBLTCMIXTQQEoMF1nFU/i/CO67faWjJXA/LYLjUwk2Cvw+qssFDVvU8UliISJ4bOezRCYCNUJpLH5wRuvmhis91ihM/Y8mKtyVmNRpR4GEflYUV8LTI8kpmp+Xf74BFSpTGsGsk59OFCxKk5YLUyaUtSlJN+YcWBNZNVJRPtFk8NNEml0rkVpYdeg2lMR4jEOExYxPNa3VJFAgKq5TZjQxwzarKpvov5iM4I5uohvO/T+mBAgrRvJLuN5K9u6qdDLO/SDmL2HfrjvZoT1spP9IWwnhmcbJs8cy4d13uD6GdlwZDw5IX1ijV0KpcDRN4K7hNqpevj9pEsYwj6lUPdqfcDxMl4VwvUCNGanPUz+Wqkic6hobgoLAfmGO7Dnqc7ZebH1xLx2jwb1mO33JN8V8IyD8INsx0xYofwyvafvLxk2x/gaUNAsA/ry7Gjj9mCO2M/ydJQI4MDmjUpo//cYsxD41d+V2ififY1FQejrKVL68KoWfwtiHNhfQcrcRZjGgES1kOobtmg75oK9PHMW8jReAWLXDCRWjnW5Lk0zHpdkmSRApgFiqECRu5da9VCQJtTLmNGp0/sIFzTpVwwOtZcc9iWBGhN92ii9oHH6si5LHgUmZA4Qunl/gcXnqfcUhYsqDJ+RNBt7VGUv3dIArI16kMavnWNEDA489H/FTy0rHvxMDJHGbX4HkY1odBPMgj8J6Th0FQ/rXtjsHUlF+IqchgQi1UA+JSPxqxxN/wDT5K/Khe57WH0+h/ObVTynbvaEzboRqoajJVBpjtozoXEOJEBNyFkYo3w0W0TVSUBZ0mo0SR1Fp4Nhcg9aoCq1scwvmr3TPlLdUrjB1Wo+Hmhbl4i9tqTliA==\",\"TsoXC5bjTkFgD3++l/TP2bqz53P4eOj63a9B+D8WFRp28+jBTTozmGpU9dJOaGuWGhKGJqqeXjZ6bv9cMJ5VRGUo3MDQtb2kNyKlY3iHdRKOQCuiBR5E3HEVgHY4GZmYpy1mnTVoOG2ZO/cj6RiRZDOGps3OrrVu2qlraV3C7G7zYp3dJASP1t2u4jCJenIMmrbe6SxuSFLqYAN42NhKHPYu4ribMU7jcwr+ln8Gn+X+LKF62iX6VpMPHNv3pvVGciFYPZvSWK/pJlWIIs+0yJu70DbCTtqBpMflvF6LKnu94xQ84lW4mU3wq6VsOox6mxjfZtjOLiSutI9w1lOsaK8GtK5lbVUMkLykvXUic3auHYsRiTHqbqwHI4hm/bRof8zc0qyK5CswUpDAiYYBDSTkY2bcZycYPzXmncTMD7bXiZa3vslVDoNrZAX11F8KGaDEWDgKRFAjTSp6U06oQcBeMiwl7OaTmSr1ElOzcsRkAPBjaNbI3Bq31rH1TxTFJlieDUJD1aR3hbQBaqRf0ZCGeULfTVTm8E4FtvBJw0lVqOgptdiSxi//nyxO1TdzLG/Sx3KRvFbm8o/uH1XFKDmFgm7ckBnSwSqMvg7o0Pd7unYaHYFEanDKzy67Tn2i2LGUHG172HbSySXSIhGTkGvFsoSS0/79WBUSOEV/faopsODncxeS5h8Wwzu4/MXOvnPiPU4LIKXYzsHtmNFEkQf0gwQF27ONTRabQtJF+Ofk/Wg6Cn/W+rLRt4EaALrtCLSuUAbcETsTx2lbpQ5uRCeV5eSqxNq6ouSfKr5yOe/IbQlUyojSZSVMj0Mg1b8f72CCe+ivGyEhCnGXI3+R9fLgRoQIk9QixTOHfdXag9oFyEZw08yMUp7X5mRnjAwWGJdLo2GzWIEMkc49dmHBMhSfosHeuc6+soRRbFRK+6gCV4rC1nkoTsaoK/pQ+Q4oJoPfFKvFgsMprthNJmCUvq1KEiySACZi8YKIDU1AWfI8xjFiGFy6sNkO23QrDJCNLhvbKK/PRboEbd+q9IwCjrcy3T8qJn7c2PAPScgL+SdW0cjwWXU31Q8W2vpFFUCVCs91ew2jQN2YNGcjCSLFzpozkcEOlPDml85J1X27hQt91lzui+iStgrXhQ/0sQ6SUGKfuLjOCF0X2QeFbcNjToiCu7eY7kvqfp7Iix9pY8ULT1rcOrOhXy1UL23Oj2DfQsvcnhawlWtDYWMmOiGcaeBXi3yn7/2g4llJHXbWV5JkEE1HR582sBewp791cFnyKOnjIDQV3RstmiVFUk6EsUf8nlRut5TpBa4d3SFVtKvTXb04TBGuJL7SSQR6F7fiuXio0sz8URmg20jQN4JZsvM27kjfWsRUfkhZGaq4pgaFYgEkIwm0KDKxM6waoRK6nSxLl+Z2TViX7qkiDdPOVxE5Sko1QlhZlHVrfoDRxQU+dmZq4utaw0yhtIC6OeWdi64MMONs53plxtp2A5xDRTq8nTVdu2luMxruIHyLq7RqX/RWBaC966qzoAmemCnvbiukjfnCfTfKu4sFMD6eCl2UYfIIgtiXA8dL9AqqLVxiRtGEmdv13xYYiHy8APM1XeTa0ELpVBbyJix0+C0UmljkbwE/ocF0dx2Kx1Bi4vFFGzBj1rpwwTDfEnqwXv+W+QkCHxkQjtjla9F02gLxI4M/YCSvUcLFCfG7QBWyjRSLaExkGwrpRspvZaVDI+SGpbjwbaRk5UEVrM04a97dZFq+X6HJG/SrKrX2rD9/whvPkVItntHK+Bqq3luMyFKZeZ6krztulCF2PQnbkgYjkZcDb9+aUmkh19tRWGH93AiRpXVKdU2pLmZinlDbFg==\",\"a94smoJrkeamaMRLs7IJwcUo9hk0N5USc1I+T4GC5LnBE68o8cp/b/NspYFVlN4PJLCNQ/xFYmzGflIY1hJczW7x0VolCDusO2fR60AjyO+S1X5r2+PWXXPiH72ElpOwSTPEKlEYXt9qr3TImL/xb80oNS6Wc8nTZ3IAKYRMPZNR8sCc/BDcgVoWa3xlMZrfZkrsSn/NHpBwOekrgSNSw+oiJmX2S5/DGsPeD5cxrwr2hI7LhMTJinQhyCmqguX6qbfZDia6E9i5tj8ULozBDUsfT6VqPmkES0jaD1cSOUyOHfATqsRn28IHrfHY4XO4nFc5SyLbP0K7md4gOiLiiq6FiSGA1ZkbvIDo9q/bu+XXyOJApKVGLBCbDcbagaU0JVJakSjixx/YYzZmD+rd6XM0NVLPZUKtlM9UdFvp5tg3TOnp/PJH4xoquN4dksdM5ojDo/H2lsUiKWDpXUpPf5xhhLE5Uos6SUb/ZsUNp7g4x1RRa78H00utvpgqmjdWr/ySm5vZaCr80hWJM+ZWujYhFWmnbgGeMnFhxBLTuNpy4ixPB3MEJQkyZ64uxRvQNFhIneU0p5kQUau+hc99Y7pw5Qb1hPEMkNmhHeF0fkPadwctaoR+BB8o3Jd9mbIW42KTlsSxz5ISaFdsuVwuJlMpkdF6QomEKyCRj+sMV3Ix/w5Av7YUg5T1K1Qe+XRNlPAnshbR/kVHhx1HqqOLRSQEIt7NaFqAjdzP59r4mss0aPt9zrhzvosQNul7l4m8pPWguB9IuaPhGP8a9JJIl+vn5Pm/UZyzmH1YE/oQeMlwVwlI61qOIzN7+8FSNHLPrtftxgh1nWCM489bfG3E6gCMmawwcH64+lhh0kXOpcDpD2vaYQ/LlFrrRaz+omBR9dIsk5rUZXNYEWAtVcxcM3Bh2otg3QHq1/3sbIOs6nQf1jkoRL+jqsUWZrWSEUaihHWJaoa+8WehLrWvFlH7Q4AoXT8jDMnHlq87MLG57N2AsW4MkYmiKiX660Y2CIVko2BHoK0D9g/qAcrkfdAhMspbSPyFklAW89SPaU4bBHEUXKA5QJ5qBqAMthlmtSfqDi2vmQh23VAtJl8VlSkHOmuNqJsC1RgASHQazflw0LfsZsAu408etncrJ6eI4zGnKGSJjMDPEgmU02Ncw4BY5BMXMKt8Dz7hCc7fFkurE1Pp1NxOAANj1vOYZAvbtx/LmuR5LmVVesFPSxXZoNZYKIXJuks/4eniwZHJuIh1vsjDE54excV77sCp01rfxldvP+I+sSboqnNe2azW6LiUiYDltmvL4uJmBdKRUB2AneTgQDlieGgES3LClgFhVfJOAxs4wnC0wlTFWI3i4Fcdlbcy3RMRJDSQQDGuPRjWgwOlwTYkdiMI2usF2s0ebMrFHzW6ZVQEM7HcjNZg4Btp5iOkNnwbjxVd/MbekxNkrc+QkBUUSi0WLYC5vSmlk++IK7qDDQcqqLqTCbcuK6lDK6mxP1Ib0nMLF7FKkozfRqV5JXp3o57GYlVDslPoFRa88zP/go2lWatiRVZc//RYVuArjJScpaavkrwo1N413QWXTYT5NzprHnqFRUZHcZ45dgPPXmhJrYrV1UvrZZbPR2mCeZn34bs8UorrkpmwKbu+8NYsdcVAxV9Qa5X3csER68JNgNBAQtoAuqJXQa0FmwfPRa+VML18cUyUDk5Ct7Xe5nnN+AbHoJK1Q3VknQskNDuSqPuKV23rbuKTYWZ+9X9WLtwPqKJUQkuAVO2tdnlXXS/CJntTgkimU3HwEYR1pWUoj7RsY2SoRI6V61t06N9nHBPSjOvyZ6RkhvWwFO9R8tJQKCFylpnTf2IN1A==\",\"TTks299OyvmJhOgk7kIIc3wPCpZF5L15Vpd2A605K9inSPNi91EBIC/9jwSjvo36A/D5RINIJBKE+Tbj2IEgqNq0i6ej8DTrKk2RNfqgJGkOCkBHFX3pJH4xjVjz/8qUaW4oUjXTSjczyRo90y2Xs0K3NOWNLGjLSbaKONBBkeYwafKlyWPnI1uVP8B5VEEg/KDYYV6o4+7AM2waTcAlIHXt/BvlltfZEIIIFjvboUcGEDu/3XQA0PVUTpaX1jZ9EJgaNwUoOxeHAwYninO1JKnNDpIaVgGwaMiwDS1BpIOV/Q85YC7KecYa+6uwQlIsBm0G9zHzuysizdlGBG/pR+zuQEJmBAuP5izPVwcqAvKc0x3TdGfmaJ7CzjfnTQ/eJzzlfHVILZkCpJXprHkKMV52iNpyPmbskF5IFKIbE0x7UNY1R1nWLTdbsjBNOPRKNbgtigxzWozaTyl+NAicv4lfALCQ8aiuc80N0LehEJWE2i25H61taAJgHS99GLb/XU9hgnyaHGzjgRyGFQmFJsvo8q0Q1+1SsE6G80ObB2Gvm3Tve5YCsBgIrJVh1e7B/Fws5LkfVOoKArw13QjWDO/Giw+rh0NXEKg9ssCxIfJDLlQ3GDWXcDH+xME16LJm8jxMQ0hCvt2wxCmxHJCXjzy1w8PrX0gUxuIf0XApxv+NV2Hw3c5nwgZHThKf9AoV+eaxVYtvCk69D/jxYJPLK5MHUfLVjUwnqsxEhP0KKsyMl01ugpl67F7EOmyK0v4hOreYF5i1zCf4hEsQXZBFGlrljKaOWS/8ZMYdVoAKBvk00KCB+jCYE2FtPjOOWwdKmmv1j3l4/5i31CGUIJ8epCMWQrfWc+7ysMTkZoLTcYKEPuvdsQEbotjFjp+JGLetQo4mrpwORumOdmy+5Z91N4TmbOrj9HddnMyInt1DKUnBuN000HcHOMJhfeE+yWrOBrMxhoLStg3gQ6gQI4XM2sIqrDvihmSQJqCwq3Oax9HZQKEBrtvECSO6hTqbR1+PAxgssYc44ZsJTUFmBGfzzdL2ehP+DcVvWhMT6EAjDdlkaBsnIqlowMloHAf/QObArjmzCcz6WjE18TLzditkr02ryzfTOzjvoQ6ilGtSeGQwDcsDa9damLaEGFzAaoQqnR0sKaZ+3qlID8sd/NkCdlzkuv5+zSoA9PtR/xcWIk+26z+mSWdexEw+LInF36vRoxzqFg7uDkKiiKGtK61enORUp/bsp7NTKpboaDNA/KlmvFVfp7LVUA3V4O0VCAUCNbwiesPx2bhtysuz/LWWfOucOUu+TTVEAQnCK2dCpe6keQ0Hyh9mFBTCcf5kXzX3hcv/mHQD7q6tTVIpU6ai1//he0TVQRmR8lNeSBFBw4AqsbEQwXDwW3cEhL3UTx2uvHdu58nwF9uZp8phxl33f3GbTiDJlmCgmedrwOB1199sKzSFmeS4320uMvyh0SoriTdZGVT+tv49pC/YB4+BaJJ4iu71W+DeLOkh/UrQgxW655LGea4YJX2oFDtpZSu8T8cnPWR4xJIYQF4ZKymXZ2VnDRPnSP1ZAjGHaDyhR8xTupsp47UR+IsKijl29XhIDb/EhoKQEvi1nn03IPQO3qx5GSQ/uNICnFO0HalNIXl4vxwydz9JMvtefoFVTawUqA7etbs1SP3byvhQulsrZvkJE++hHgobREhfBtlwK7GLGhMtE6RRFSeX9lN9qa3bQb6hZYtvdwj9eTyMrpThjrKiaC7A1AlQYBtYTV6aQpkS0a20b8jfpsSbUAIAzesdsG0u6AOT3SWTL/lpnrlok1Ee0Y36b2cVkwREyZ25HhQE52i0582+BgBiZzU30A==\",\"3oaCUhLa7+9SKmddjNOhKe0Yce3dbU+2zJVv/2yYR1Z637dNeaZpViiZC/HSWDJE+0WUh46AisAQO3Vs8X7XE813LwpM4C+XbmBIeXQR3SGcm50l3e+hVhpv8c6kOQTDgIfqBFfpVAzzA+rWK9gTj0aK6fLdmpdXu6R+K8VAZMiwmh3m8/C3vl0Y3hdxBm3UFrc/RYhn8WE0meWqnNOUoLIlTWViH5YeiS+Pplp4dj3Q6u/qIjuBb24TAPCzrAsUzbRdoxBrbfhXGpPJiVwtv+54hlmdZjozWf3ygX4z36wVGEeEm5gQTzCvHbmC2Y4SyBS9r52ZRvKilanSxYvLWJ470ZItHrjPBYfaF2VpecQKtqnecTJ/GxX50Bj8i02VZ4+RUjMwWl9MpZYiLkGEoI7njBLzmVXRW5oiKVWNOd2qarPkY7owhZKqCowJX0aRZeIU96z8IFaOd5Hn7CZHSVUV+d6rmUUxfhXbmmphnu7vRR4jVRVmeLTKOdKy7S9Gq4qnXGQiX1OcCdExqjpmfPSeJvIRfPVTqypk2HLEZNNKGqrVZiJXVaTk0XaR0zs1TdGrerqFyN80biTe41GaK3hJmRaidP6Bbi6Pc8TLFCyhgulQp/9QnWVGt8DEqZQnqdvLyT7YGfgyoDWEsUT/N0JGIPa8AYIHollUxe7k0hoo5Hlo+TKgpePjGDZZPtwFTsHgQJ0R6KlpGwPKI4D5dzB7Ulrt29g3KfxZlT0GVRwFu5Lr5rVNwhxnrSA+gQBrEtrk/WGAmkwCIw9j9xof1IQaTyRzmGO/AElwTukeWkfSkHKUuuj78JPsmhiZJeOs2fL/gq35hDEPU/hJAsIA86y8Nd7H34gg0pz8FNqKzzTGHlP0FaTdyvjTuJky9Vf7efoDpeV0UfpzPWcmJPQXt+lSVaLv+NucY8ZFzmsiFiH5fIt1yiQ02MLjqlYbX4MtYnv/QXI/vg/kxtsnB9HUm2e1FGAEjaEffpCS3N6i9/PNqQGArQAjNfa59LRRuuamaE1eLyIEehiI7o9O3bnLR5neHBfvwE+g1nh0T5j1RZ0Karc9r+cQJwMBZJjYSCj9WEFTJtHWBu/Qz6Ku2DM1LINQ80aRi/z8CV/lbIPzWUq46nTzQ8PWu2dbBU/x0KQiK4tlZ5kpnD2bSP9CJtSN9JRWXFBy009hPaeQoP3e9KB7t/nUYW++6v2ePU6pS1z7bGJKVhGAGSZaVV2soKghiBREfy0RdQhRRsklhkHtKmRFs4e5k0VURcOyzMybKqFAqwP6yBGDDx+kXc/jTVq5t+cVp9ALBcxBb9aNcixWhSdVZNB+gwPb+nEQL4xYXc9CjaOsifGQ1o2cvzWf8PK3+/Mvt1yGTVTyDV/VP36ld4SPQ+SEBaS40NLwwjCFrisVObbhl6xZSww1o45huFObq03rBmNxTFyzfodBxTitNgJG5W7XmNVwIDr2VvfoJkync8H51SXmO0lBv1UZtmHkBEI2jY8+anDh9dH0wsKUO6mizyAHB26ZIJqoWHWeSe7VmyXJCKptRbZ/+1ZhGqYy79O6HEr6WtMYu4KFLHsf6CNYw8j0ivNmPsSz5jdK5Cm1ONwXskJQprQTBt8VIqH4s/1kUlKfM/z8CdewBVxssVj8cgSKm65cghmnPbUPptzcOhsL+XrbgJuTjtJ5cIGGkS+jxyFVz591xYEnNlttN7jGl7EcuFDkMnocCNijT6l6WVLCFQKMCOnZKOKrIkk7jzVbgMH9T4msTXiFKfuqC9UA4DEALsNb/u3G/SmRm+gclc5DEoQGys2ko6EOb7lLW3xORQa1OQGp7anTqv5w1JMe08RjY3YwORxWPEbH6Q==\",\"pyXL0vWIPA38dkWzu/ZdJkPP/pA2W/9jgk+Dkw1go630tGoydW39TUwDKAO6kBIUUVuNVgjE+uOzeeTxO3fEpTVHBnQ8IPIkwbEyk50aSUmK+0SmJclZtNCjNJB4AjKBEAhkDunq3luJTg5xzJ9cZ2sdEPahHmczYRQs334MnihCRlFWKMixibsslUZJ1Ecb3kvs2UlG1oSih8M3e3DovUZYddboZRikDrEvw6AUQloI48vKOyeBkSI6F6fGffr3wUGT06f1XKNt+hA0A4EuoVIe3GJURMZBdv1XKYDrvU5D29egqLJqKGRc+Hnt3ns/tzTCkDy6fCWoIh/i2qfK8+PEoxD7yX87kZ+HHjoiIwEt2ShEK4zO1cU9S104SuKKdEqd5COxPslkO+sWx79vrxYa+PPuMAy8NslZ37czizPOHD6B2YBhmLWk47lOj1id45GtP5TS8m4EZ4LVNYosE31PF/Mrc9sFjLmbfaZaJYwRiqZDGoV3gvv1dDC772IJYYuJqiOpRxwFiC31bq1huTScM5plhA3fFWeZVJiZrOVavDiVtm8EabJl1RFvpi3X3OSIqGT3hbgmAtvw1K81DxeMHrcuHnV33GtygSJQ9V56paLkjXPrd0l5jmMT2ckirMy9yFRUUkGoiZn5b8FX7Z844Bvirt9/Q84FK1LZ1kKaOm3bDf3Vc1EDwiLZMtEvNVhA5rsFqR/30GkcCdhbvdsZ6E7n+c4NVJZpG1gSHHnXiTThx4wo2MSi5lzdP9EVgQ4AN8rHtrJTwNI7x3ErD+mxzpVhE0KhDSnpmram4VmWLJpFDuiV+Dv+den5HDqFc2I+B6yC0ZU+dGhIBTpFGuqSie4kQeEknYm9heeNt52CvX6bYC/kg4zG+pAT+EmaqO5PNpqzo0vcuZv/HN4zKyxSeThaiH/eRcl+bPYGMKMc5Vki7RRIDNpImw5R0oCBnwnmbM6MiIKsntMZEVRcfz0nonwmAmBGPMNhjQhNwjxQVfbmdKWxLg2HLg09zqwq+8VtuhXncP/JHfjXfgJs0WO5A6S/T7dHq3ezjTvODB5nciNIw/aJ7oX9g/196N38z/vV/INH3e8WPWva5v/MLaVwtswzNkruhq6xYphumNtPy39k7zzzRlZN7lrVAC3ES9IkdVC6E7oIcKc4LljYGTARYUM7yPsNLtzilcud7uqHHSo8ACAQKcAPI6n5dEZaMIWFpcEVZPyA9DA4+5/Bd8fOn+0P4Tx/UEf4A7GKtfXbpcHP+FU3T/CLZGMSg0Mq/rxYIXF8gtCSbZ30uHN0sa6rsaQkSqVKyELE6dANKEo8IkcIxNcJg27bK2TdwGK7jyN2SKqQwJIaz+rgOOP96hSYGFQpM+X0USHaYfHnHQefCk54mfVE6oHRYJ/wKUS2LOnccuCTRGUYiD9zWxFMDnrbMT4jHcwjpsE4gBomGpSU4pU6m+A4Tx/oKbHuilJtV2h4xLDeyMnXYFhx5JpWWrN1+Djo01pFWjKMu4P1Xn21FbtaKT4zz/E2kFCd99JFgXXjCD24rqWy1unpwWdwcZ7yY1YgoZQPi24vJZQ8QQGiMiKQIwpSxkLgHTO6Pf0vIgU7/gVs+KwJwaJbzm2mZIbeDscQ/Yf4Q9hmwKYKbvyDDH1irRvxDBTMDm/nr7xg0vhew/ACNDyB5PryOLs4V4UD80Th+O8lGWNnrMFFGc01lZMY5Yn9ZnssuD9vwLXeE6I8vd9sZyeuztLMP2uQoYxepIe5NvbYgAZr4AYxlhqm65xnK5CeTfBvMKzPb2A0JqHYmwU3UqSsTZs8X31mjMf4KGxwuGG5j0lzDiY4trJFYcIds9Kf5oGkw4L3zA==\",\"//Uqz8o4Z+pv2j8UaiDPoPREGNCn7057TO9/bO9Oe9SQFC8Pph2Ubm6jbow5x6Q0NiBDuIDJGkyVV9eR81wnwd5wRBlYwzANvK3WNIFB+3UttgJqDlTLIdqvxKu5Yj2lXYaLLxVNwQqwxg3fry57xepBO1bEMJTtZZdHGe1PMYYufNJd7wMMow9eKfeslCCWcqqnSnjzRpqoDV5sp7tJ9dzUhYpUEpPHw2o/eYmtsPA0AVBFAI+1zziAxtT0jICChVnqE+S1BJIxQvzwmpozgQHvBa+QGC8vSPZuP0H+nQXxKFA0TBsG/CmuayyQOg2rS5h79OF+9YFMVkYhnWPrMp6ArJpcWDc1FYe6KEEkVJbvgySEtuoWukwbvNqDFYlBvETjxy5/PP/KGUzyLNgREGWdlhWJCM8wTujjUqQKYIF1X15hvsV+bzA8zbzez49Tn8p8aUxU41UxEEHoNsI86Sax6tGz73bO8qC71IWlD9Yv6bxNiS8aNFRIYhLA6PVQbXhyp/FqdcaXTW52MYvv0CG4yqJ017HXB73elzb8TInXe+WE6trGLC+t0JcisESsvDWxC4pWK7KE+9Gp9/P7p7MbWJ/fUDnpxWqxVvrjsMRP9gGIz3fKIAj8qPxakJRCMgzAzDabE9JIZhJyzyqAoiWm3ZT24+241oZmpcxJZrgRrVQtp4YpJsdJx1SivmWFGppXFyoIc9zcZ1nLM8oZMw1tcUrz04W6QanmdS6MUWaFkimEs8Ymmedi+Z4Oqb+WJCqywm/nWD9akjgs2zAYsjfm1QrMGpKmcv4k5BOWKVi5lWDD+wAtCSHIa5ZynUkivRJdbiIuYGi+6jcZXrGuMa1nJeYWmFg1yX1ffaOH7aIc408Q625bkbjeFduaHvYAIQXMkNQy7YscBzFKcEMGOV/CS7l9Rzop4lojeYjH1IM13+4DQN+QwpMVyhZPx+fTZZYtSKGEe9x9Gd9Z7l/aN1SuoZu/fGDG1YC12sbv4M+WKg29CjY6s5+CZfe9s4spmKHKVqFg/nTtdCCLYcJ1swqBWlIiqHzMNO4YJeL/MSRuXu+IV19maQNedw/Ytl1OrfbuStg0ssy76X0xaLCA7LOwtvMUPAcD05pM2VHb8mz16NFQCAx6hRIR3p7/HyorbOyO62OPFX8acTIGa7EApX39ZUmKYG/rSgZRFkbbRKhPYZM/5PyyETlMCw+kOabxEk3M72K7GUUa/94G4ti7URKbo3XCo5i+vedopJSGFjqjSr15goshukeUhQaXlbwcOrr47ktvon005A5NXy+rweeo8SjqEk6MxDuORsOqOqppQX27JIngy6wF2oDm2JJdwKhOmlL7NKPM8fquaIxFYBwnt3mIsPVtR50bB8KDKyFjF2SUxQGuq96/SV0AcN95o5EHI8G24b5YRTTpVjtE79bSrhs4snN3Dsfe/VOposQuG8zqvethA3m6O6SK/n6B3Nz6NiXOBvXbXx+/8AXjWoY0i/8VKGiKNSDa25acmDfgKNS1BFcdhLuEIQmwiB+7L+P3kHfIMOTrCrC+NaFNAHhHdFtZO5tZA9ZQPpLiJHVbufW37+vsHcw56jhdIDLurT5vGu94kVDTudtpAMA5/in6cv2xLHgT4W1tBOZap3e+wwGI1dKiabkJsguEGhtky1NWlMy8gEoYJM5fo3c1OZFWuxGOwxoTGk8kaDZiszTXkE6MzTDb7mMkHARuJZMb1pQSmUvfBN4SrT1ptZxAC5cng7vdeOW6XYzCl37+HKZhaIZ4lxUR9mm1d7U0UU/P1VOrS1sYJtDLgPWwUfi901azbzp6NsvS5SYWYMFnLKAiQU/QMF1WgP8vUg6uSA==\",\"BeCOG5AaZlSTmkJchFihsngs2tThBFmjVzyqvyalpCqjNc+lNG/bbb3C6pkqxOsNg0vnr8lMG8Xbpkalirfgn/RGw78VtZD3lG2rhS5ErUxryvpOe4zhzMFWWiZ8aGtXVAWjDt9bArM1w8sTCenI9pYLm86W3XJh04Vkc3v0VvcY6H628TB5lHXcczA+KvKz\",\"/9MNw2Gepb4bCFd1T+GbbO4SmzUzrpVcjBOevvpy7pHG0ACsSNjK12bYPsHCTfaKjIoiyaVSioucZvSepPx7IFNJnqUZLwomM5XzfEy2jMRw38hJf8Uq4b86QkgNRt832u4p/9oZZbUigGrZbRM3IytSDi84ld01XKBtDTbOm1m5cR/46zCi8UH7RltPzdBgY/sV5yJLYOWBnFqNe+8/oaIeHsWjx6tvdH+bPlfT4uDBlyyoaFp1St7k6+wdtS9qJX6T99sHZ7mt/F3ALdI93R4Vu2Cs/yQZbih/fZhm40Gba2kDmLNc3ymjN3G2bxUH0PWS8RxpSyeA5nFKNrUTK9z4Vyxk4Sp8k7c0VpAAB5F75yzPO2oXmRnSNQ+mvqziAPMeGfue7vywfV6CwJApfugafxw639lNDSKDx++wPuJDZt71GGb+86aZ/mhAd3Ida/P/zbCV0ZbsjaCYybalDcuUuNovdon1YdMZEeF1M5GUpNAeKqj6G8WslZgLLrNUTtRKGntcYFFB9YQgs4+E6K34FKpYz+lF0PtnPgT0RGjElSQQm7HkWlCAQZPqiUBV9aM9ZfU32aZ1awRNGhFKYZdaFTn8S0NF3v8qN8Pqdf19WgwmCMFOtgjUWPTf2SpTeytRW05B7REi10fhFk7dPVT3rk5ka+yfHQQ1GskVSfbdGGGk+SmVsSXpw0/sb1KqHVpby1nVrUyRjt0Zuk3wd3tXzZI3tFxx5JLmeVGzt9ejoamWWcMxl28JBSnrotA2i2MD79e0frKjyUlCxXEUhcWqP6kzQPHMyrrIFF7VyqgETDvFsL7q9R4WJD3nFYQXJ4N1R69+L+5gGK0v2YGT2C0CFb8s8DHxBbX4RDiVof9JGCvbiRMBu3prB0FAxHkf6AjXpl4+w7knuN+jP3EI16miTWMzoWVUAu2K3KbItfhzjx2Ug+zYLNcHzefzzzh4VCDwh3m6zakx2deS62eI5TpDXhLmvt8TcEAfkiNZeMKd4iiXzWLuV37kDsMpuUofa6E/LThA6Fo67LUGSz4SSeeOnohkKueLw36ydR6mTmWvyyNs7qySwT/Q7bDA5+o97L/p8WyPRy561Ha3h5LBd7tcCp0OZ77j4FXuc/2JtXRFCa8g3nlRimTcSxq+30tiENq8Wp50NI6d09ATcAz3x2Gr31rCqbder09L1jEYR+iA7CpSZMJbZErmlMhWSYZyvH9Krrq5vr0TnUiqivJpw0RWR+cgocbRzWgNO6KQxC72wgBPeNJb/6MpLafbbF6cmU4mMpP4kjg56Wb1oTNuSK888NGZk0uFxheXXD9wdic6Ux5/POmMnUc0Tkw60S7JNKTnE6+VXY33zyyhIr175peCg44FUwOg381lSx4kWL1gMjhqv25xtuTfSxiwwJQIeqCEB4gRVx5jMw6DOR776MwpLmVCto9NfeLKndcz7o+rwZ+4rVLJfYaBUYwVUv8sLtdfLtbL87vV1WdYL3+7v73jiRkpFw9qAd6TfFk4q/ZfpBcwyWZ4bZUbJaAcV8SRUkqjgqc8Lyt/wZTAy3PoJ2slOnj1HsASnH2kw4V/x/ATmLzULVKwy/pQ2UE4pWJbbTTb4Fk93ReiXMskz9MfoTwxNU4Z2ahM0gVj91BXVU/jIGGkWVGmmi6mVLoIa2bOrvWps7rv/ivjM6ylCkTn09BqyUKlN4KZxqYthFBKzj5w0xS9EvL7k9aUmsMFK3/QIhpIRGPghsF5TfDh6HbgZaSPUK8PImDZxJujIJNDNU3zhsjSwkIIgDRmfl0cFOorAJ0LRKbcClN20fzGoPVZdD6hvI9zrfbMdlhDt/+JDvyirenx8npYug==\",\"fKolhKXDDx9Dehb9jokdHJYYYhztm2QORw1KxNDAHR3kkiT8UqtT1mK9YtodZ4LKRratyEg1G7LsZ8moTGMPF+JFP0s0Cu0eVDeNLZGQ3P1wtIEgX13kSLwKOa81Y01y6xgMyWWWOQug1oqyp1GESFpT5BdvAdvkniUUpIz9zaa+daEGd19mdEKEne9U0LKcc4k9bvSAl3Zj9bILXDBJpiODjmVg9sbFOZEfvBubZs+/jSJgjuNs+pXErQwZyG6EMEUqURVK0O7APvLFaQMWckHn7MOUrLlFVZvc72bFM6Ra8YzLbBVmuyS8A+0ThB7HpuXD3f7Q6wEDPAoJaG4NDOHROROZtVFDv4LMNyBZKL59xOX58Ma7HpPebSYVWSwWRqCRiFxbLBZFauNIzkVuu7rkRYcshgM3R5LfyiGxuaTYaRTjf0kMZOCjJQ3KEOfvqnXE3mvb36YhMFNIaC401E+Sll4sQAaeGFqGjNoVCK9lcO3jc4mjz57P4bcD+jnGsCnA018rPGZ54P/zsoaGuhh4o1pALWRgt6Ui01UARFGlQ2EMuT4B/AEViXT0OHgPUUUkFFmtyLeLdtgPiSrPTrxKLEbrI8HG37ohix+OpkFKLIaVc7Zj9h+ryGLNj0JLsBacyAzh4VnT0+vrxVrfhYlEQxEenxWn32J/Hab4qUvTW7jP9LOdehdjxXX/AugJkbAJIPzUUSHcr/rvnv5oZcJ5eKHw6es1XX5Ljc9pA9ECLLhtv1xCvElr2wCcNdzA9YGYZOsh9OIhooknvV9ARf7///1/eK/BYXp8iWmkV5m8GBXMFY6iXxNT3YUmNOJ2F7MtOtYC4kGHjoBqI6YWADuN2JADlDEEJRGzs+XLZ9oBXMEXK26d1okFS262bB0uYhOYpIfC6HKAJ/GBoegwsSMyK43MyQ5XLla//2CNiaS3fsHt4Dzep7IXOA/PLrylQ5ANzQXWQuNJi3jmisTwAlphujrgoPZ3cOaE73u2OqTWJ88PwxYv5FANLvpE9SxYExpCdSXygcHBPp2EaO6sLfZ79JcMkiID4K2F0EmcmiSnW+d38UBIQlnI/eFRfOfam8b4ZDN5UtQzOVoK4oWHACpSs5vTGwxh+MWd3/2ELuZwKj9xaRvPXJESXEsdLjm2Buat9B81YwzLxTgc+vEsUFmgrhvBg/LBkNzbLaNpv0q8S7UdqXFSnqYvwGtpXveunrfO7+bGlmoNjr0P81gEmLvy6FWMpBStM4QuSAXYz8AiBYQuwkrYA11rofl6y2byRr0j15ThX84hVz2ULtkDQ6VtDC5jeJwXDcTFl4jANBeIJzxpbO6cBG561AFBDGu6GfYzHswgm5wHhefJKYZ2iOm3BqEnZLJNQPo3+Plh2HYu1hE/xTnXi0Zu3S3p3ogCucyVRFUji0TnGetbTvbe4VqQp3yjEwXWTLTSYNPYQKjNlN6mrjpxzHVGboY7fALM4MqBzTYWlZgH20EFMVunslQTNA0XyBR3FJfatOgaXKe7eNQIO20oi9Wci4XEieO0CivWm2lUBMahNmCfqK556VcN/gPjdg9eg3aINt1NPwTeI9z1B0anuFjB81tC7myOkDGjabpgONcAqhiShNa0XI+nxX0fAl0LJ3eAR1pJkPRgpO3o6uyQRGUczmAYRa8YaseRgJdLWoC5IbPQ5CipRz0Su72en+yc/44lo4bqxZICz/KyjvQTu0U3M8ovr6NZMwoiiQQmMAEiNFZzSRns6qA3PZPWec2R64JqGJHXFHofmMDFGB890tn9Ybj8SOLACR2XtQFCJAVCsOBCGN2JhPRl3egQ0NSREunsY0vvnZ/pvcCrGyK8J9/4zjbdXg==\",\"988eBYNFN5IM9u/pRvUeMq4jSBOFIIIyYf0bLCn8k6wHff1GrFO0CPB07nwOy5fB6wY40t+xrR+E6MqyaV5FKBPJd9da52Mr6U6VlQGE8+RUVhwsVdRrK0gO/en1GGSGs4iwf56oBo9WB6u3ueUPeQ+MDA3lend6B0XqYA04j9iH8BrismwU6OuH8ISJCJdYw6OVy4KfP3VJBLowHoTgJbhoZ4Y6JAmN2cbgcCKaUfDPofNoQDAhV8Gt6lmhF4GXVp8kbChkgE2FXynGQ4gkq4utgnt0IWhzOZmd/QfM0VICDDGcnoT//UxdC5O9p63BhJHuQOZzB+BPD/2CTPaXAB0QfdFK1eLT/zewT5GHRAxAK6mnkkBWz4tyZU49Si9hHRYidL8RjJ5iiv+65nwOv6O/7Y8QQI7Q5Z5f+SXQrnVYG4KzTn+jo0GixtP4+RP2CkMVPoQ/8jh6uMrnmDcOGmf2GBwI8Q/Z6bA0XcHUUA6WQiiGDDpd/csdGn4ZWXcRrNg2du9aR4fsZMi+D+HBamYDwqed4BFxg2o7TYnIyTCzYKghC2JguLZVtmD6j7j8fi67AvcNe1zUbiBMO3LBdOapY6qACeIArioWeNFY6rrTz59pbt5kQKViZaUAQo8b8Vvk7zSPO94X584a5Vu6Fj6Q/y0eg5HmKTQuKFNEr2zajN4jhrdjzkTtNCtST9WZNLswR/86t72rBeg5MRaHEk8xLNP/xbIfE8KeDQuRYRtGYgYnw3M4ch4kylOOFB76aL1aIiO4gI+DSB+jKAkrHkvCovRKF+RQ3TW81y00bjO4X/At5YQyjlqymY9VeqYIaAp6KmlBDY74pBVmjvOMNdSEs8D6lYvAz5+75o3rJn9V0hnJPWvXwuRs3JXAj+X/AKO/2U+p5+rQ/YzCo7BiasAJjm48VfPpgH1LpAPz5F8Awdiu4jmTS8Dbt8ESLjJG7IAgepPtXVW+xhV4aH1YYI1Ch0tGepdpBDDaivblHJURiBodm8hb6lq4hzjpaoA9KIG9h60dch6jC75C0wEQIaWVRoMF9CsAWfAyTEwEagJYPyGKfUUSsAsX9say3uI+2MUKF5XruEAFzByK/2Z8OvR9tK8tjr1xMdHMpQHssL9Dwco3AcIT1BWxorKoeFyZbEciklXWYysZ7YGMfd5ESxFnxMELsM+VxyqMmG8bEkeFhjoWDMMRQjgu0emHcbRLkis7gH/4d9fZSUXOIHGisGojU2NBjeF9zoijf3s912Dszrj/MEIxR67ZZ5ows8qjue1ilI5qzy0OHX0NxBZOBjmm0Z6xIjEY1z30BKbpDTUMmwYym/VOAa4s4hUVK+on9v/tfICK3Jzf3i4vb1yC3qelpm5UkUnOnAEtq+HaHug7THt0OO8GfkDPRrxQRsQsR9BA5HsjaqxRKlNLo5dqi+jZSkHKvueQUmndZDUr6uJNnziGLpfoTulvcGjwG1vBs0TMrK3dOE4WSimYRo/RxB0kWVAjUbIebIXe3wzpo2jaZKU02E9pp5EQ7kHyUofLhMdHM/dDZrHt+FyfLomacVqUqkBB3sC/9jxeHaZlF+4GV/oOkb3cG27wAYsLwnViZpXsYVhVm3TpkDV4V2csav5sL3+3P5JlK+si54rJj8qRFOvU3YRJAke3NLbYDH9dBBbmpMWEu9hZxl25YXvtQ4Mt7BcxGNMh3qQAoVpRCLem3kd1RiZHramMO85Ax0B3Ri8i+TKWZAEWIYS+bGruRpVlzVyQKueGgzSgzvyuoXjhPB6wiHlKD/RkpogCRS1Zjf5qSWj7gb1bqJ2kyvEWiRz3J1dXtBmHodf9BrJDIpdBxs5pFbJh+vykmGGwcA==\",\"OwF4FRkzgsqdB/FiEFj9GcYcSe2FsQaHeVEu0Qs8xol0Y0xA++t454UFYABZ1QffeNxrjxe5J9CNw4TAUQBB4Z0BVwSHVK4/rHNBhF7vJ52QQYiuta3J1QOZ+emKdNYoeEoAPU48GgrvlQPZ16Ph/HFSd0rX7oAFZTAn0vQxQFLan+wnUnBQy8wIkS7JvLIrSo4fDi0BBOBkVdmH7KiM9XXiBHsOHiOtOgN0XoP6lJt1BW0chmdkRkWITwPOBW5NNfIMSFVOm3JXS0izpR8qKmITMlDhbReDFV7ATiar4g4i0iRBC9hbjohHdAFR27UI1EZMO+0e0RUQSQhZVnSijAAI6BRDRUql+ZalWA04zHVZESqFVghYR11mU9+cMGApln6IBrDHfwAvCzieVDX6XwVWQoo6wIpT/JJiIeEevZg52IxR34lSaoRuEG31ic5ZeTRmq0SNpPpSEsnuJdKeBQS1o/AIemNAc5nlY9oHq3PBGoBqEz+zz+cKOfgSpHQhBbQSrrDokaAyXOIyEjGplkFr7AJc1/Q1gNQiGDkTXsGSdF+kfKFRoE9VQHtBsBkKXZyNcZCTUBzyyKWz0TDgFL3ZEFAEmDf7DLh4Syd32j8xFUPgFCpwxV/uAM9ivNGzvuBH/TCOVqr8cQq26PlcJ2XNplzUA9qv4BpUpPNjNNa4Y/Peab4NC/Ey4UetH0XWWU0nFiPC+z2hvYFpFV98jqxjECrC3NALd6SkebGCLTqeddlCN7cLNo7DmKjSiKxjdpSiFainykWnDjU2DhnRvIISLMmVUkWeK65WP+VLMMY0qEKtqkSIHG12zKTWakVPAC21FMcW5IyzC5avZXe7TpliGp9F245MdgXw8rnINgUapu1KKXlyu74UrK2ydVB70vU6eYvqqp45X2YuP/1PjHMENx/6nwbQXb4myn76mDI479wIRutWFlSIrOgjQktE4DSiv/fgbcob5FToQmDBSKUiqU6jRNLM1H5SBTpY468TQ8eJ6QtXjBnFhl4JnTlcXAKd62gPfQ/msNuXV+/G2bpU5ez0qgt4VmllsjpvDqa01oFYkDFU0+MKKi8Az5Rx30hFT7R2VJLNMnWks4yUSAb6ukNku5g3EeHUHFw+tZsR0rEdi5mYF/moYgCbwIGySS0bT7c3rIYXjCnUlOb49oaaMZpL2eZGZOrtvy8rO59fLgeRHEXgyWSjURyo3Zwglb48PdyYiFW7E9gPpIWyusqkF1WwlOg1IMEg222YELfs9UpMkcwG/Km+jtC5x0ckqb0fkdKhb5VhHHinwiK3N1s1v8rUEuk8jyMGvFkDJ6CSEkcK1wG9FjTSfdSdpE9DgKbMMJeHkw5cBowzx+4/pWHVCCayImtqYmIziKdEPp8c1XG4e3dNsCydSzFLhbSCmBk5sG7wqbVrGrhFbuvuPjckdR28SIe95LhgHHrN+wQu7wdyeg6uAXPuXo6pfQkQ++VmfAcmF2c/VVI2St6k3Jebil8Bz4pbCRVZ82JQM6JLkxGievUmFP8=\",\"291mSAT3WjdKs6EKv5jbuJTIKGJt9zxF9ekiCqn15aV5vViPBDMj6MZXSAZptLexbLE6vo02i+xi4uyMrYwGM26QUq1pBcsbefdKqWYb7ke4FZaz5YAFIo2PaxJePfO3A/oOA50TTTJAIlim6OGS6IGjfjPZHiqacLPBivHgbntH1p4fQ4iX7iQ9BkRQl1SttU1VcEMgF3R2w+UZR+O9EqjuzWMHaw0tKE1cwGhkNLKdi4idAv+cYJ3wf7Q14rx+K5zjwGJIyDriF4jHJmo1uWELo+GLtGYoSAMWgbumvIaWKOq+4VLkQwM17JHUHIVqukITJFemQkiHTFf4D3zVgDLKVihY+zSnmuBckuKbTMeEnAblOimc0OQDdJ9GxBekmMveNK26Zr0f7MvbuASqRPZQHf0JMjohp1oFHdDuPwX8LOlD6KcPF61IjLInD0CsIlyqaTbs8reriZX5nWktcMuPKYmul0gIvJulbwaADOnATOSzvdMVeXj0Tlkta71tAwKmJQermYUi9i+5WCxi+JNfnDbsGPY5CHjHGRUrCZb+scMd6Hd1NnKx31yWi3DVXfC8tFN6KeXNigqAhTo4UdxgWnSDCbPJ63KwRmPeumaxDs4Qy9awjzvP2Gd8yf4JW/6fN8jwFJuMMZ1ONcsu3g5R/mXiZWEfptDPEfEBnKq4HJCNGGCmsQel1Zm4xfx+Bc0TzjnnilKhaHbDZvx9zHmRCJlzJnKZMpbzWJZNhZ1XLNm8t8+us+ydgaW34lIjdgivlWMrsDGyvSZoPD6+KekEcCkSZyzQe6/kschjkW/3OwHIuFfZsWTHkr3d7wSQxb3KjyU/lvztfieAPO5VcSzFsRRv9zsBFPHFKD5jOdPV1Bn2N+dVo5z5XlpRik2GKm3yHhFIZYqX1YQe5Zd0n9xTnRTEK4JxMuAWmqNnMsDjJPN1jd3+fpDILjxdMVxL08yjFZJaxJDZckmep7bh/QpZkXcw2CAH/SKOMchSXH7tMSZnKuR/Us7bAf3/4omU5GK//Lh07qPuPv633f19+vLnx+Pfl8tnfXdF9d3fHL+bo/7vX2l9uaSN/Ys3l1fPtf11d/Gy+tyI9db88vt/V5v+2fzxa9B/Xrm///jt68XLava3XQ3NZ/X09e7j/qtY76/s39kVV/7qex++3q1P5vvfz1/Fx8OfXJ3+4tu+EevTX3+u9zVP278//77Tf6R787k/1r0Kf/257hvxW3f557pvxPrPWvzq/969HM1/n75+Pj/fnJ8vFiQm1gCDxdXXIKUsYvL7cRXWfs8I\"]" + }, + "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/\"85d3e-MYJOg69bwx0+cCwJbxKECgc294M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 14:59:50 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "60c99fe5-3708-46a6-944e-00253ba43d9a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + }, + { + "name": "transfer-encoding", + "value": "chunked" + } + ], + "headersSize": 460, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:59:48.668Z", + "time": 1509, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1509 + } + } + ], + "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..5c75265c8 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "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": "Tue, 05 May 2026 14:59:48 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:59:48.183Z", + "time": 155, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 155 + } + } + ], + "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..1cd976a8a --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 14:59:48 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:59:48.381Z", + "time": 181, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 181 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 14:59:48 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-fce34012-b686-4fca-83e5-f3ab6b1318d6" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T14:59:48.566Z", + "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-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..3aec91ce2 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:23.893Z", + "time": 158, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 158 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T15:00:24.251Z", + "time": 112, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 112 + } + } + ], + "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..46f702c15 --- /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-39" + }, + { + "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": "Tue, 05 May 2026 15:00:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "327a25a3-7073-474e-a265-c2e627b50cf1" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:24.369Z", + "time": 103, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 103 + } + } + ], + "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..4d06e15d9 --- /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-39" + }, + { + "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": 44895, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 44895, + "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/\"85d3e-MYJOg69bwx0+cCwJbxKECgc294M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:25 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "7b05d312-b741-47ed-a86c-39ba5e100c4b" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:24.584Z", + "time": 1321, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1321 + } + } + ], + "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..8532df412 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "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": "Tue, 05 May 2026 15:00:24 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:24.087Z", + "time": 152, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 152 + } + } + ], + "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..18ba5677d --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:24 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:24.291Z", + "time": 179, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 179 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:24 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-aba1e5ac-e439-4404-a64a-19592ed1bf87" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:24.479Z", + "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-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..7609c9c2d --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:55.561Z", + "time": 152, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 152 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T15:00:55.930Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + } + ], + "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..8128b1c28 --- /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-39" + }, + { + "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": "Tue, 05 May 2026 15:00:56 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "bacbf459-f6b7-4ed1-b4e8-10bf5991cb22" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:56.048Z", + "time": 101, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 101 + } + } + ], + "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..a6db32d73 --- /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-39" + }, + { + "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": 44912, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 44912, + "text": "[\"Wz1dSBXpOqm9h4CqwNjdEOu4nu8/89X6X21P8KZCKaEo/PgBfTUZx1bS6pvYbtnun+lKg8ShxJgCFICSrXFY9Vbrt16+/9+3tMzlTLTaUDZVECnTLgnOGitnQuOC7Jp3jqp+VdBV3UE3wAAgGNgAGDIAd+be++57/9ev6mpLqGE4C5CcWZo1GI7cGNk1njIuSKQkxxIkKOdjReH/v7rBRgMccr28izaJlQYkZ5TkdhlT687tvgJJOHmAui5jZmfbX/uUKUI2wf5jWHrX7W+7PyY+MYqICJgtkk15stoCLU348zxPWZbluYxZtV5t/6NIqUkIARGh3DTujpL5sVBy0I/STa/kNFn/3iDlwyvpDClJrUPXLO3QDf0pCfx9+dlrO1y4/YnExOodkpJ8DDaaNY/6WIbrvgrOO+b/LdoPnbOPH057JCXZNfx3EDpnO7shMdmZee9u859dq/uAMfnm8UjKPCZhwH2gjBCX//vg39NH3d/p8DTLZdMWaSNSKfKH4jz08+BOhyf4KpFtSLzqWytficWX4XbAfW6KCRbfNintoe9j4g5D4yCcfXOzvv59SdDcRMpd3ANqf6MjZywvdF3QNidjnNYnvF7+ury4e/gr0dhkjchqoWVKxkd8V786Q813Zk8kJroZnA+Fv/JKznD2eaQkFTlL1Fc080NAP68IvIfJxOPu5K+1sgZfEizVz/z1s0UPb99CIGYjvx/+DXQKH8J/Cg/0MekMlKmqGSwy5Lc+JTHpwvJl7zGEvLrW4A84xqR9PBBI+ZoLfQzyh4iJx+/YDGse0SF0mwSWY7J//cFp4dkzlPqTx8eY4BHt8AJxMciWV9L4jpOSZErvPNxVaMgIzRWjWOPDH7+bd5016CnUakzaZP562eZEShETowck5WsODePSDjx46oQn/GV+PxHv2Dsu32X0XUbfMUrpdDpNBre6vb4dfGc3kykZx5jgy77ztKy8kuMaAFWQ0bPE2H+85cu+82hq4yF4/Fxn/rTzOLaMlTHmGbJpvuoCdc2ULFqGzVUyuB4ww7Pgd913pmgDAxENfQuJV3iZx8chgz8geb7COIuNPvD5P6vPesBnfZrJAnNZNJIrJZs+c/m9pCRTDQMOf+dJSXq32aBPOtu6SUXWB2s7u4E2uQQbqqjUVuBI3fVUZHpW2coetT/s5A==\",\"BbCAYw==\",\"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\",\"mdv13xYYiHy8APM1XeTa0ELpVBbyJiw=\",\"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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/\"85d3e-MYJOg69bwx0+cCwJbxKECgc294M\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 15:00:57 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "5a8b85ce-f5e1-47fe-96cc-1d7057baf3ad" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:56.272Z", + "time": 1110, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 1110 + } + } + ], + "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..0cf8dbd76 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "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": "Tue, 05 May 2026 15:00:55 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:55.752Z", + "time": 148, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 148 + } + } + ], + "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..5500d1f0e --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 15:00: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:55.967Z", + "time": 189, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 189 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 15:00: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-988f4d03-e120-4fbb-9927-4dc79d46e9da" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T15:00:56.155Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + } + ], + "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..3d10c607c --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:04 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:05:04.852Z", + "time": 153, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 153 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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": 787, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:05.185Z", + "time": 103, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 103 + } + } + ], + "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..af55b6849 --- /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-39" + }, + { + "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": "Tue, 05 May 2026 18:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ce4334a2-3efa-49e3-978d-a0f403d39413" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:05:05.294Z", + "time": 96, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 96 + } + } + ], + "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..4b01ed816 --- /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-39" + }, + { + "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": 4194, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4194, + "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/\"57a6-AFiHmXSXZF89LCVczb9UrAkGa/g\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:06 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "ddeab8ac-7651-4f36-beae-2a22bc7d8f8e" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:05:05.496Z", + "time": 584, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 584 + } + }, + { + "_id": "b4235e75f6e768ff02ffa4ca90e93467", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 22438, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-39" + }, + { + "name": "authorization", + "value": "Bearer " + }, + { + "name": "content-length", + "value": "22438" + }, + { + "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)()\\n\"},\"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\"}}},\"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)()\\n\"},\"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\"}}}},{\"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*/\\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)()\\n\"},\"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\"}}}},{\"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()\"},\"events\":null}},{\"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,\"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}}],\"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\":{\"comment\":true,\"deny\":true,\"fulfill\":true,\"modify\":true,\"reassign\":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\"},\"events\":null}},{\"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')\"},\"events\":null}},{\"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,\"comment\":true,\"exception\":true,\"reassign\":true,\"remediate\":true}}],\"events\":{}}}],\"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)()\\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)()\\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)()\\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\",\"mutable\":true}" + }, + "queryString": [ + { + "name": "_action", + "value": "publish" + } + ], + "url": "https://openam-trivir-fairfax.forgeblocks.com/iga/governance/workflow?_action=publish" + }, + "response": { + "bodySize": 4198, + "content": { + "encoding": "base64", + "mimeType": "application/json; charset=utf-8", + "size": 4198, + "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/\"57aa-AwCSpMINF5MTOVeBCGx9E1lAHOM\"" + }, + { + "name": "vary", + "value": "Accept-Encoding" + }, + { + "name": "content-encoding", + "value": "br" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:09 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "8ae93cec-6f0d-41e2-bf87-30eec6235df9" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:05:06.091Z", + "time": 3326, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 3326 + } + } + ], + "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..2b75d3c4d --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "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": "Tue, 05 May 2026 18:05:05 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:05:05.038Z", + "time": 142, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 142 + } + } + ], + "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..903e7ff8c --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:05 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:05.226Z", + "time": 185, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 185 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:05 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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-673df8de-b27c-4ccd-bb3f-eeb1351c28ed" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "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-05-05T18:05:05.396Z", + "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-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..8da2166bf --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "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": 614, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 614, + "text": "{\"_id\":\"*\",\"_rev\":\"959929574\",\"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,\"oauth2AIAgentsEnabled\":false}" + }, + "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": "\"959929574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "614" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:32 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 761, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:32.736Z", + "time": 164, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 164 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "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": 275, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 275, + "text": "{\"_id\":\"version\",\"_rev\":\"1171477248\",\"version\":\"9.0.0-SNAPSHOT\",\"fullVersion\":\"ForgeRock Access Management 9.0.0-SNAPSHOT Build 304c60a9fe7797e1045c631600098d4465b73e4d (2026-April-15 10:21)\",\"revision\":\"304c60a9fe7797e1045c631600098d4465b73e4d\",\"date\":\"2026-April-15 10:21\"}" + }, + "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": "\"1171477248\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "275" + }, + { + "name": "date", + "value": "Tue, 05 May 2026 18:05:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 762, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:33.069Z", + "time": 111, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 111 + } + } + ], + "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..1682f1889 --- /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-39" + }, + { + "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": "Tue, 05 May 2026 18:05:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "0b159881-88f8-464c-9da7-d378a9cee9b5" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 388, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:33.185Z", + "time": 103, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 103 + } + } + ], + "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..43f867171 --- /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-39" + }, + { + "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": "Tue, 05 May 2026 18:05:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "9e1a3db7-76b3-4feb-b90f-9577262b954a" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 427, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 404, + "statusText": "Not Found" + }, + "startedDateTime": "2026-05-05T18:05:33.393Z", + "time": 601, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 601 + } + } + ], + "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..66dff0874 --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "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\":898}" + }, + "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": "Tue, 05 May 2026 18:05:33 GMT" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 536, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:32.919Z", + "time": 139, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 139 + } + } + ], + "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..cda1c236c --- /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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:05: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:33.104Z", + "time": 175, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 175 + } + }, + { + "_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-39" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "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/10d76629-78da-4265-868b-9a0cb68ebdb4?_fields=%2A" + }, + "response": { + "bodySize": 1401, + "content": { + "mimeType": "application/json;charset=utf-8", + "size": 1401, + "text": "{\"_id\":\"10d76629-78da-4265-868b-9a0cb68ebdb4\",\"_rev\":\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\",\"accountStatus\":\"active\",\"name\":\"Frodo-SA-1777919406717\",\"description\":\"dsevy@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:dataset:*\",\"fr:idc:esv:*\",\"fr:idm:*\",\"fr:iga:*\",\"fr:idc:promotion:*\",\"fr:idc:release:*\",\"fr:idc:sso-cookie:*\"],\"jwks\":\"{\\\"keys\\\":[{\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"hshlr1hlp8bXdLNDrh3rESiHNsMS68c4XtbZX9i_Seg\\\",\\\"alg\\\":\\\"RS256\\\",\\\"e\\\":\\\"AQAB\\\",\\\"n\\\":\\\"owg6VJta_1o9VqyQk4Xs2kA_BDcyWEN1WMERqaJIFCbtecz_IMBp2G5m76dawbB9QvUsFvMqfJ2OGbaCcfC2o5lkxEu4nxdKLKYZ4-JTGsbPN6j-f9yr0LCjFMPd1BRxKQ98euSu5UZ0_gy9QN-eS4zB5zJsb8E7Y7FXsxG6vgd8dCqCSPjJeSmZhnQEeqJeysGlA5jMzQUP9Lvgm2aZp5wz7DXzF9lvsqRjm49H9wlERjy4KDmjlp5Rr3lz8ZXGgsaIdp18hUrPFKJP5qxkICfnbxdyK858A5puUypj1OAqrOtAnwjk5lMPOYzBWjWV72RPnOY3-6KAHo8uFXK3EH8AN8ErHxhpo-soV0e7-Z7gEnmt0rliY3j_-2AHA0Q5G1k52cGQ-dARGzgAQacpdnQv_pT0k83DGZPrpR6PqBRkyiJBD_PTvySZohxFgjpJfJmkYec7Pg40xri_LN1ozkLRBdQwL2zaQFYtq_VZC20a8Y7NpqpoLcvFIB9W2NS03qTokvId7gdSgdcVmpOo4n7OZZCouD6cyWyJ6Nj9uaxz-mw4Mdzhpd8cclSV_gXeWMBBoW3dZ7zzkEFMWHBT2x9S8JAZor_aaGJ2MXOoNoHRg-q9shNhQ3h7U14MXfL7I9R4ixClZMOpxILa0VT0Vzm-h685xkXwa28WLSw21QU\\\"}]}\",\"maxCachingTime\":\"15\",\"maxIdleTime\":\"15\",\"maxSessionTime\":\"15\",\"quotaLimit\":\"5\"}" + }, + "cookies": [], + "headers": [ + { + "name": "date", + "value": "Tue, 05 May 2026 18:05: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": "\"4b025e5d-c082-45f8-a3e9-0ac1db308dff-21339\"" + }, + { + "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": "1401" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-c2c12025-8b5f-4c8b-8cfd-1cc66fe17c26" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains; preload;" + }, + { + "name": "x-robots-tag", + "value": "none" + }, + { + "name": "via", + "value": "1.1 google" + }, + { + "name": "alt-svc", + "value": "h3=\":443\"; ma=2592000" + } + ], + "headersSize": 658, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-05-05T18:05:33.294Z", + "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/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',