Request data
Input protocol for plugins commonly includes a "request" inner KVGroup that contains details of a request:
"request" "" = { "certifier" = "<profile ID of reviewer>" #Certification campaign "certround" "" = { # If the request results from a certification campaign. # Empty otherwise. "certround" = "<certification campaign ID>" "description" = "<certification campaign description>" "endDate" = "<seconds since epoch>" # or 0 "startDate" = "<seconds since epoch> "termby" = "" } "entryDate" = "<seconds since the epoch>" "macroStatus" = "<status of the request>" # One of the following codes: # N -- Request initiated # O -- Needs authorization # A -- Approved # D -- Denied # E -- Profile ID is denied # G -- Canceled # c -- Approved, performing requested operations # C -- Processed # H -- On hold pending administrator intervention # W -- Scheduled for later # U -- Request unposted # d -- Confirming delete "notes" = "<notes entered by the requester in initial request>" "batchauthnote" = "<authorization note for batch>" "prequest" = "<pre-defined request ID>" # If the request originated as a pre-defined request. # Empty otherwise. "reason" = "<reason filled in by idwfm service for finalization>" # As this is always run before finalization, reason will always # be empty. "recipient" = "<recipient's Profile ID>" "recipientEmail" = "<email address of the recipient>" "requester" = "<requester's Profile ID>" "requesterEmail" = "<requester's email>" "requesterName" = "<requester's full name>" "requestID" = "<request ID>" # For auditing purposes. # This is included in email messages and # CGI web pages. "requestModule" = "<report used to submit the request>" "segment" = "" #Certification campaign segment "reservationid" = "" #output by attribute validation and idm-suite id plugins "authorizer" "<authorizer's current Profile ID>" = { "authorizerRenamedFrom" = "<authorizer's old Profile ID>" "actualAuthorizer" = "<Profile ID of authorizer who responded>" # This might be empty if there is no response yet. "reason" = "<reason given by authorizer who responded>" "remindersSent" = "<number of reminders sent to the authorizer>" "starttime" = "<hextime>" "status" = "<status set by authorizer for this request>" # Can be: # "O" -- open (no response) # "A" -- approved # "D" -- denied # "I" -- irrelevant # When a request needs 1 of 3 authorizers to approve and one does, # the other two are set to "irrelevant" since their answer # (approve or deny) is not required any more. "resource" = "<resource that the authorizer is in charge of>" = { # 1 or more # If IDP APPROVE SINGLE RESOURCE is enabled: "status" = "<O|A|D|I>" # See notes below. "reason" = "<reason given by authorizer>" "authauthnote" = "<authorization note for authorizer>" } } # 0 or more authorizers "implementer" "<profile ID>" = { "remindersSent" = "0" # Number of email reminders sent "resource" = "<resource ID>" # Resource to be implemented "status" = "O" # Task status } # For each implementer/resource pair, a KVGroup is included "attribute" "<attribute ID>" ={ # Include only profile and request attributes that have been changed in # the request. "oldValue" "" = { # included if the value has changed # (attribute validation / request rewrite) "value" = "<old value>" # 0 or more values can be listed } "value" "" = { "value" = "<current value>" # 0 or more values can be listed } } # 0 or more attributes "resource" "<resource identifier>" = { "authorizationsReceived" = "<number of approvals received>" #Deny actions are not counted here. "authorizationsRequired" = "<number of authorizations required>" "authorizer" = "<authorizers for this resource>" # 0 or more "acctauthnote" = "<authorization note for resource>" "autoselect" = "<none|mandatory|optional>" # Auto selection can be: # none -- Selected manually by the requester # mandatory -- Forced selection by IDWFM REQUEST REWRITE PLUGIN # optional -- Optionally selected by IDWFM REQUEST REWRITE PLUGIN "enact" = "true|false" # When used with the WORKFLOW VIEW MODIFICATION plugin, this key # can be used for displaying or hiding information about resources; # for example, set to false for resources that won't actually be # deleted. "finalized" = "<true|false>" # All attached resources are not finalized by default. By # default, resource operations wait for the request to be # decided (all authorizations received) on all resources. This # can be overridden by IDSYNCH AUTH CRITERIA MOD PLUGIN "groupApproval" = "00000000-0000-0000-0000-000000000000" # Used to approve a group of resources only if all # approvals are received for the group of resources # by the IDWFM REQUEST REWRITE PLUGIN. "implementer" = "<profile ID>" # a key-value for each implementer that can fulfill the task "implicit" = "<true|false>" # If true, this is selected as part of role # definition. # If false, this is selected by the # requester. "notes" = "" # empty - only filled in upon provisioning "operation" = "<opcode>" # Operation requested, can be: # "CFYU" -- Certify user # "CFYA" -- Certify account # "CFYG" -- Certify group membership # "CFYP" -- Certify application # "CFYM" -- Certify group members # "ACUA" -- Account user add # "RLUA" -- Role user add # "UPDT" -- Update account # "DELU" -- Delete user # "DELR" -- Remove a user from a role # "RENU" -- Rename account # "RPRO" -- Rename profile # "MVCU" -- Move user from one context to another # "ENAU" -- Enable user # "DNAU" -- Disable user # "GRUA" -- Add a user to a group # "GRUD" -- Remove a user from a group # "GROA" -- Add an owner to a group # "GROD" -- Remove an owner from a group # "CRTG" -- Create group # "DELG" -- Delete group # "LUPD" -- Associate account with profile # "LDEL" -- Remove account association # "ORGADDSUB" -- Attach user # "ORGDELSUB" -- Detach user # "ORGTFRSUB" -- Transfer user # "ORGADDMGR" -- Designate manager # "ORGDELMGR" -- Designate non-manager "parentRole" = "<role ID for the role this resource is related to>" "password" = "<new password>" # Optionally set the plain text password for # the resource by IDWFM REQUEST REWRITE PLUGIN "pseudoData" = "<Data for replacement in pseudoTag>" "pseudoOp" = "true|false" #Is this a pseudo Operation? # If true, this operation is NOT handled by idtm "pseudoTag" = "<m4 tag for display in the GUI>" "reason" = "<reason for the resource being part of the request>" "result" = "<status of the resource>" # can be: # "O" -- open # "A" -- approved # "D" -- denied # "I" -- irrelevant "itemType" = "<item type>" # Can be: # "template" # "role" # "groupID" # "accountID" # "subordinate" for OrgChart operations # "networkResource" for folder/shares and other resource <item type KVGroups or key-values> # Depending on the item type, there are key-values or KVGroups # as described below. "phase" "<phase number>" = { "authorizer" = "<profile id>" # 1 or more authorizers } # 1 or more phases # The following is only relevant for BravuraPrivilege "managed_system_policies" "" = { "msp" = "<managed system policy>" # 1 or more msps } "primaryMsp" = "<managed system policy>" # primary managed system policy }# 1 or more resources }
"
The following additional information will be added to the "resource" KVG group depending on the itemType.
role will include the following:
"role" = "<role ID>"
template will include the following:
"template" = "<template ID>" "targetid" = "<target ID>"
For a rename account (RENU) includes:
"template" = "<new account ID>" "userid" = "<current profile ID>" "targetid" = "<target ID for the old account ID>" "accountID" = "<old account ID>"
For a rename profile (RPRO) includes:
"template" = "<new account ID>" "userid" = "<current profile ID>"
accountID will include the following:
For updating a user’s profile, or enable, disable, delete, or move an account:
"accountID" = "<long ID>" "targetid" = "<target ID>"
For an account association (LUPD):
"targetid" = "<target ID>" "accountID" = "<long ID>" "userid" = "<profile ID>"
For an account association (LDEL):
"targetid" = "<target ID>" "accountID" = "<long ID>"
groupID will include the following:
When using a group long ID:
"template|accountID" = "<template ID|long ID>" "targetid" = "<target ID>" "groupID" = "<group long ID>"
When using a group short ID:
"template|accountID" = "<template ID|long ID>" "targetid" = "<target ID>" "groupshortid" = "<group short ID>"
networkResource will include the following:
"template" = "<template ID>" "templateuri" = "<template URI>" "targetid" = "<network resource target ID>" "resourceaddress" = "<target URI>" "resourcetype" = "<folder|share>"
subordinate will include the following for requests related to the OrgChart:
"manager" = "<manager profile ID>" "subordinate" = "<subordinate profile ID>" "newmanager" = "<new manager profile ID>" # only needed for ORGTFRSUB operation
The "resource" KVGroup may include additional groups. If a resource is part of a role, the KVGroup includes the key-value pair of "parentRole" with the value set to the Role ID.
Optional resource detail KVGroups
If the PLUGIN DATA REQUEST RESOURCE DETAILS setting is enabled in the Workflow > Options > Plugins menu, resource key-value sub-groups are included.
The optional detailed input for a role request includes:
"role" "" = { "roleid" = "<role ID>" "desc" = "<role description>" }
The optional detailed input for a template request includes:
"template" "" = { "description" = "<template description>" "hostid" = "<target ID>" "id" = "<template ID>" "location" = "<location associated with template>" "longid" = "<target account ID>" "modby" = "<last modified by>" "numberOfAuthorizers" = "<number of associated authorizers>" "type" = "<type associated with template>" }
The optional detailed input for an account request includes:
"account" "" = { "associated" = "<TRUE|FALSE>" # Target configuration flag "helpdesk" = "<TRUE|FALSE>" # Target configuration flag "hostid" = "<target ID>" "invalid" = "<TRUE|FALSE>" # False if the account is not valid. "list" = "<TRUE|FALSE>" # Target configuration flag "longid" = "<target account long ID>" "modby" = "<last modified by>" "shortid" = "<target account short ID>" "user" = "<TRUE|FALSE>" # Target configuration flag "userid" = "<Profile ID associated>" }
The optional detailed input for a group request includes:
"nosgroup" "" = { "addtype" = "<MODR|OPEN|SUBS>" "deltype" = "<MODR|OPEN|SUBS>" "groupid" = "<long ID of the group>" "hostid" = "<target ID>" "location" = "<location associated with nosgroup>" "mgrpid" = "<MANAGEGRP.MGRPID>" "subgrpid" = "<MANAGEGRP.SUBGROUPID>" "type" = "<type associated with group>" } # followed by template or account KVGroup
When the operation is related to the OrgChart, the optional detailed input for a request includes:
"<subordinate|manager>" "user" = { "id" = "<profile ID>" "name" = "<profile full name>" "account" "" = { ... } # 1 or more; Accounts are listed for each associated with the subordinate. "attribute" "<attribute ID>" = { "value" "" = { "value" = "<attribute value>" # 0 or more } # Only one per attribute } # O or more; Profile and request attributes of the subordinate are listed. }