QUESTION:
How would I cancel active sync processing if the incoming data is insufficient? If canceled, would that cause the workflow to not execute? How could I create an audit log entry that could be seen in some IdM reports for this particular senario?ANSWER:
To cancel active sync processing, one would set the IAPI.cancel variable to true within in the active sync form. If IAPI.cancel is set to true, then no workflow will be launched as a result. If you wish to have some type of audit logging, then you would not want to set IAPI.cancel to true, but instead let the workflow handle the audit task. One approach is to use form logic in your active sync form for data validation. You can then set a view attribute based on the data validation which will trigger the downstream workflow to audit the bad record and then end (i.e., bypassing actual provisioning). Because the event is audited you can use IdM reporting to send nightly/weekly reports of the invalid feed data. For example...in your active sync input form you have: <Field name='processInputs.IgnoreRecord'> <Expansion> <cond> <isnull> <ref>activeSync.givenName</ref> </isnull> <s>Record rejected due to invalid feed data : givenName was null</s> <null/> </cond> </Expansion> </Field> You then modify the workflow to do something like this.... <Activity name='start'> <Transition to='Audit Rejected Feed Record'> <ref>IgnoreRecord</ref> </Transition> <Transition to='Approve'/> </Activity> .... <Activity name='Audit Rejected Feed Record'> <Action application='com.waveset.session.WorkflowServices'> <Argument name='op' value='audit'/> <Argument name='type' value='User'/> <Argument name='action' value='Create'/> <Argument name='accountId' value='$(user.activeSync.accountId)'/> <Argument name='status' value='failure'/> <Argument name='subject' value='$(WF_CASE_OWNER)'/> <Argument name='error' value='$(IgnoreRecord)'/> <Argument name='resource' value='$(user.activeSync.resourceName)'/> </Action> <Transition to='end'/> </Activity>
No comments:
Post a Comment