IPA to show jobs in Needs Recovery

Does anyone have a IPA flow that would see if a job is in needs recovery, and send e-mail to Lawson Admins ?

The IPA would run every 15 minutes. We are just looking at a way to communicate to users when a job goes into recovery (or invalid parameters).

Comments

  • d-hofmann
    d-hofmann Member Posts: 52
    We have a Smart Note that runs once an hour between 7 am and 6 pm. It notifies the Lawson Admins if any jobs are in the gen.QUEUEDJOB table with a status of 34. One problem you might have is that the Queuejob table stores the user by the NT number, so to determine which user to notify you need to look it up in the listusermap.



    Here is a list of the statuses:

    The $LADBDIR/GEN/QUEUEDJOB status codes are outlined below.

    •0 : Running

    •30 : Waiting - To recover job.

    •31 : Waiting Step

    •32 : Waiting On Time

    •33 : Waiting Recovery

    •34 : Needs Recovery

    •35 : Invalid Parameters

    •36 : Queue Inactive

    •37 : Hold

    •60 : Recurring Skipped

    •61 : Recovery Deleted

    •62 : Cancelled

    •63 : Normal Completion - To delete job.



    If you work out the IPA, I would love to see it.

    Thanks,

    Melissa
  • We have an IPA flow that queries the GEN data area and gets all jobs in certain status (using the codes above) for 31 and 34 . Then gets various information about the jobs found, by job number, and then sends an email to a IPA Task assignment to the SysAdmin, backup, and a lead analyst. We capture the user that submitted the job, job name, time submitted etc included in the email to make investigation easier.

    I can send a copy if you want, email darringt@Nemours.org
  • You can also use the On Error tab in the IPA Node to email anyone if an error happens at any point in the process.
  • keiths
    keiths Member Posts: 15
    Could you please send me a copy as well at sjibb@caasco.ca?
  • Can easily be done in IPA. Hastleless. DM me. I will share some information that can be useful to you.
  • Good Morning,

    I am not new to Lawson; but very new to IPA - I went through the basic training about 2 months ago. We only Have one flow active; but think this Job Status IPA would be helpful. Also we recently Moved to the Infor Cloud from On premise. Any help would be appreciated
  • laura-patenaude
    laura-patenaude Member Posts: 153
    Hi - I was searching for an IPA that would do this same thing - but most of the posts I found are 1-2 years old. I think I'd take a shot at responding to this one and ask if you got this working and if you'd be willing to share your flow?



    Thanks so much in advance,

    Laura
  • serafino
    serafino Member Posts: 77
    We are on-prem UNIX and run "jqstatus -r" in a cron job. Been doing that for 20 years. It works perfectly well.
  • laura-patenaude
    laura-patenaude Member Posts: 153
    Hi Sal - we currently have a process in place as well - Unix script that executes jqstatus and generates a flat file that is input to a Cobol program that reads the data and separates it into separate files by job queue and then generates an email to the appropriate group (AP, IC, Finance, etc) based on the job queues. I'm just trying to get rid of all that "noise" and put something into IPA - we are trying to convert as much as possible into IPA to try to standardize our processes. Thanks for the info though!
  • Hi L, if you have not already received darringt's flow, this should be easy to do in IPA by querying the QUEUEDJOB table in the GEN database, same as Melissa's smartnote process does. You can see her post for a list of valid job statuses as well. Additionally, FYI - a job that is executing will have a status of zero in QUEUEDJOB.
  • I'd like a copy of that flow Darringt, we could use it at our org. Will email you thanks.
  • laura-patenaude
    laura-patenaude Member Posts: 153
    Thanks for the info. No - I haven't received the flow - but based on the information in this thread, I'm going to try to build something on my own.
  • laura-patenaude
    laura-patenaude Member Posts: 153
    King - if you have a copy - would you be willing to share with me? If you don't have it - I can share mine with you once I get something together that works. Thanks!
  • Thanks to Darrington - Here is a copy of it in xml format. Just copy it, paste in a text editor and save as "<filename>.lpd"











    <?xml version="1.0" encoding="UTF-8"?><process className="FgProcess" connectionName="" designerVersion="9.1.0" id="DetectJobIssues" priority="0" schemaVersion="1.0" service="" title="MonitorWaitQue">

    <description><![CDATA[Detects+jobs+in+Needs+Recovery+or+Waiting+Step+and+sends+an+email+for+remediation%0D%0A%0D%0AThe+%24LADBDIR%2FGEN%2FQUEUEDJOB+status+codes+are+outlined+below.%0D%0A%EF%BF%BD%090+%3A+Running+%0D%0A%EF%BF%BD%0930+%3A+Waiting+%0D%0A%EF%BF%BD%0931+%3A+Waiting+Step+%0D%0A%EF%BF%BD%0932+%3A+Waiting+On+Time+%0D%0A%EF%BF%BD%0933+%3A+Waiting+Recovery+%0D%0A%EF%BF%BD%0934+%3A+Needs+Recovery+%0D%0A%EF%BF%BD%0935+%3A+Invalid+Parameters+%0D%0A%EF%BF%BD%0936+%3A+Queue+Inactive+%0D%0A%EF%BF%BD%0937+%3A+Hold+%0D%0A%EF%BF%BD%0960+%3A+Recurring+Skipped+%0D%0A%EF%BF%BD%0961+%3A+Recovery+Deleted+%0D%0A%EF%BF%BD%0962+%3A+Cancelled+%0D%0A%EF%BF%BD%0963+%3A+Normal+Completion+]]></description>

    <processUserNode>

    <from/>

    <subject/>

    <content/>

    <displayType>1</displayType>

    <displayContent/>

    <displayName/>

    <hideActions>false</hideActions>

    </processUserNode>

    <activities>

    <activity activityType="START" caption="Start" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaStart" id="Start" x="20" y="20">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="String" name="ref" propType="SIMPLE">

    <anyData><![CDATA[%27IS+Ref%3A%3A+User%3A+%27+%2B+this%5B%27_user%27%5D+%2B+%27%3B+Service%3A+%27+%2B+this%5B%27_service%27%5D+%2B+%27%3B+Process+ID%3A+%27+%2B+this%5B%27ProcessName%27%5D+%2B+%27%3B+Workunit%3A+%27+%2B+%28this%5B%27WorkUnit%27%5D+%7C%7C+this%5B%27oWorkUnit%27%5D%29+%2B+%27%3B+Productline%3A+%27+%2B+this%5B%27appProdline%27%5D+%2B+%27%3B+Landmark%3A+%27+%2B+this%5B%27landmarkVersion%27%5D+%2B+%27%3B+OS+Name%3A+%27+%2B+this%5B%27os_name%27%5D+%2B+%27%3B+OS+Arch%3A+%27+%2B+this%5B%27os_arch%27%5D+%2B+%27%3B+OS+Version%3A+%27+%2B+this%5B%27os_version%27%5D]]></anyData>

    </prop>

    <prop className="String" name="today" propType="SIMPLE">

    <anyData><![CDATA[DateString%28new+Date%2C%27yyyymmdd%27%29]]></anyData>

    </prop>

    <prop className="String" name="queryJobNumber" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="String" name="queryJobName" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="String" name="queryStartTime" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="String" name="queryToken" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="String" name="queryUsername" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="String" name="queryStatus" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="Integer" name="queryCount" propType="SIMPLE">

    <anyData><![CDATA[0]]></anyData>

    </prop>

    <prop className="String" name="jobDescription" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="String" name="jobNumberExt" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="String" name="jobLogAttachDir" propType="SIMPLE">

    <anyData><![CDATA[_configuration.main.LSFDIR]]></anyData>

    </prop>

    <prop className="String" name="jobLogPath" propType="SIMPLE">

    <anyData><![CDATA[_configuration.main.LSFDIR+%2B+%27%2Fsystem%2Fjoblog%2F%27]]></anyData>

    </prop>

    <prop className="String" name="jobLogFile" propType="SIMPLE">

    <anyData><![CDATA[%27%27]]></anyData>

    </prop>

    <prop className="java.lang.String" name="variableType" propType="SIMPLE">

    <anyData>NONE</anyData>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="END" caption="End" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaEnd" id="End" x="590" y="380">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="processStatus" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="variableType" propType="SIMPLE">

    <anyData>NONE</anyData>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="QUERY" caption="GetJobs" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaProcessQuery" description="This+node+was+created+to+Detect+if+a+job+is+in+the+%22Needs+Recovery%22+status+%2834%29+or+QUEUEDJOB+table.+%0D%0A%0D%0A%0D%0AThe+%24LADBDIR%2FGEN%2FQUEUEDJOB+status+codes+are+outlined+below.%0D%0A%3F%090+%3A+Running+%0D%0A%3F%0930+%3A+Waiting+%0D%0A%3F%0931+%3A+Waiting+Step+%0D%0A%3F%0932+%3A+Waiting+On+Time+%0D%0A%3F%0933+%3A+Waiting+Recovery+%0D%0A%3F%0934+%3A+Needs+Recovery+%0D%0A%3F%0935+%3A+Invalid+Parameters+%0D%0A%3F%0936+%3A+Queue+Inactive+%0D%0A%3F%0937+%3A+Hold+%0D%0A%3F%0960+%3A+Recurring+Skipped+%0D%0A%3F%0961+%3A+Recovery+Deleted+%0D%0A%3F%0962+%3A+Cancelled+%0D%0A%3F%0963+%3A+Normal+Completion+%0D%0A%0D%0APROD%3DGEN%26FILE%3DQUEUEDJOB%26FIELD%3DJOBNUMBER%3BUSERNAME%3BTOKEN%3BJOBNAME%3BACTSTARTTIME%3B%26SELECT%3DSTATUS%3D34%26SORTDESC%3DACTSTARTTIME%0D%0A%26OUT%3DCSV%26DELIM%3D%7E%0D%0A%0D%0ATesting--%0D%0APROD%3DGEN%26FILE%3DQUEUEDJOB%26FIELD%3DJOBNUMBER%3BUSERNAME%3BTOKEN%3BJOBNAME%3BACTSTARTTIME%3B%26SELECT%3DACTSTARTDATE%3D%3C%21today%3E%2526STATUS%3D34%26SORTDESC%3DACTSTARTTIME%0D%0A%26OUT%3DCSV%26DELIM%3D%7E%0D%0A%0D%0APROD%3DGEN%26FILE%3DQUEUEDJOB%26FIELD%3DJOBNUMBER%3BUSERNAME%3BTOKEN%3BJOBNAME%3BACTSTARTTIME%3B%26SELECT%3DSTATUS%3D34%257CSTATUS%3D31%26SORTDESC%3DACTSTARTTIME%0D%0A%26OUT%3DCSV%26DELIM%3D%7E%0D%0A%0D%0A%0D%0ANODENAME_RETURN_CODE+%0D%0AThe+return+code+%28where+0%3DSuccess+and+1%3DFailure%29+%0D%0A%0D%0ANODENAME_RETURN_MSG+%0D%0AThe+message+returned+by+an+Transaction+Service+%28AGS%29%0D%0A%0D%0ANODENAME_FieldName+%0D%0AThe+data+returned+from+an+Transaction+Service+%28AGS%29%0D%0Acall.+This+is+the+field+name+as+displayed+in+the+Fields%0D%0Acolumn+in+ProcessFlow+IOS+API+builder%2C+for+example%2C%0D%0A%3C%21AGS2480_RQH_REQUESTER%3E.%0D%0A%0D%0AQueryName_ColumnName+%0D%0AThe+data+you+are+looking+for+by+name+for+the+current+row%0D%0Aof+data%2C+for+example%2C+%3C%21TData_EMPLOYEE%3E.%0D%0A%0D%0ANODENAME_RECORD_COUNT+The+number+of+the+records+that+were+counted+in+a+query.%0D%0AFor+example%2C+%3C%21TData_RECORD_COUNT%3E%0D%0A%0D%0ANODENAME_RowNumber_ColumnName+%0D%0AFor+a+specific+iteration+of+a+query%2C+the+value+returned+for%0D%0Aa+specific+field.+For+example%2C+you+could+use+this+variable%3A%0D%0A%3C%21TData_0_EMPLOYEE%3E+.+This+variable+specifies+only%0D%0Athe+information+found+in+row+0+for+the+column+Employee.%0D%0A%0D%0ANODENAME_RowNumber_ColumnNumber+%0D%0AFor+a+specific+iteration+of+a+query%2C+the+value+returned%0D%0Afor+a+specific+field.+For+example%2C+you+could+use+this%0D%0Avariable%3A+%3C%21TData_0_1%3E.+This+variable+specifies+only+the%0D%0Ainformation+found+in+row+0+for+column+1.+This+variable%0D%0Aformat+can+be+used+to+refer+to+variables+from+outside%0D%0Athe+query+loop%2C+for+example%2C+to+retrieve+the+e-mail+ID%0D%0Aof+a+user+when+you+know+that+only+one+record+will+be%0D%0Areturned.+This+variable+format+can+also+be+used+when%0D%0Athe+goal+is+to+compare+the+results+of+two+rows+of+data%0D%0A" id="GetJobs" x="20" y="110">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="conversionStatus" propType="SIMPLE">

    <anyData><![CDATA[0]]></anyData>

    </prop>

    <prop className="java.lang.String" name="configurationName" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="queryString" propType="SIMPLE">

    <anyData><![CDATA[PROD%3DGEN%26FILE%3DQUEUEDJOB%26FIELD%3DJOBNUMBER%3BUSERNAME%3BTOKEN%3BJOBNAME%3BSTATUS%3BACTSTARTTIME%3B%26SELECT%3DSTATUS%3D34%257CSTATUS%3D31%26SORTDESC%3DACTSTARTTIME%0D%0A%26OUT%3DCSV%26DELIM%3D%7E]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="stopOnError" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="stopOnZeroRecords" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="autoEncodeVariables" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <OnActivityError>

    <notify>true</notify>

    <to><![CDATA[PFIAdmin]]></to>

    <cc/>

    <bcc/>

    <from><![CDATA[%3C%21_configuration.main.mailFromError%3E]]></from>

    <subject><![CDATA[Error+encountered+executing+process%3A+%3C%21ProcessName%3E]]></subject>

    <body><![CDATA[Error+encountered+executing+process%0D%0A%0D%0AProcess%3A+%3C%21ProcessName%3E%0D%0AWorkunit%3A+%3C%21WorkUnit%3E%0D%0AActivity+id%3A+%3C%21this%3E%0D%0A%0D%0AError+code%3A+%3C%21this_errorCode%3E%0D%0AInformation+code%3A+%3C%21this_informationCode%3E%0D%0A%0D%0AReturn+message%3A+%3C%21this_returnMessage%3E%0D%0A%0D%0AOutput+data%3A%0D%0A%3C%21this_outputData%3E%0D%0A%0D%0A%3C%21ref%3E]]></body>

    <goto>true</goto>

    <activity>Email8300</activity>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="ItEnd" caption="End-GetJobs" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaIterEnd" id="End-GetJobs" x="582" y="480">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="breakCondition" propType="SIMPLE">

    <anyData><![CDATA[2]]></anyData>

    </prop>

    <prop className="java.lang.String" name="breakConditionText" propType="SIMPLE">

    <anyData/>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="ASSGN" caption="SetJobInfo" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaAssign" description="This+node+was+created+to+capture+the+%22needs+recovery%22+job+information.%0D%0A%0D%0AQueryNeedRecovey_USERNAME%0D%0A%0D%0AQueryNeedRecovey_TOKEN%0D%0A%0D%0AQueryNeedRecovey_JOBNAME%0D%0A%0D%0AThe+jobNumberExt+variable+will+remove+leading+zeros+%280%29%2BqueryJobNumber+from+the+job+number." id="SetJobInfo" x="230" y="110">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="String" name="queryJobNumber" propType="SIMPLE">

    <anyData><![CDATA[GetJobs_JOBNUMBER]]></anyData>

    </prop>

    <prop className="String" name="queryUsername" propType="SIMPLE">

    <anyData><![CDATA[GetJobs_USERNAME]]></anyData>

    </prop>

    <prop className="String" name="queryToken" propType="SIMPLE">

    <anyData><![CDATA[GetJobs_TOKEN]]></anyData>

    </prop>

    <prop className="String" name="queryJobName" propType="SIMPLE">

    <anyData><![CDATA[GetJobs_JOBNAME]]></anyData>

    </prop>

    <prop className="String" name="queryStatus" propType="SIMPLE">

    <anyData><![CDATA[GetJobs_STATUS]]></anyData>

    </prop>

    <prop className="String" name="queryStartTime" propType="SIMPLE">

    <anyData><![CDATA[GetJobs_ACTSTARTTIME]]></anyData>

    </prop>

    <prop className="String" name="jobNumberExt" propType="SIMPLE">

    <anyData><![CDATA[%2BqueryJobNumber]]></anyData>

    </prop>

    <prop className="String" name="jobDescription" propType="SIMPLE">

    <anyData><![CDATA[queryStatus+%3D%3D34+%3F+%27Needs+Recovery%27+%3A+%27Waiting+Step%27]]></anyData>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="ACCFIL" caption="ListJobErrLog" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaFileAccess" description="This+node+was+created+to+check+if+the+file+exist.%0D%0A%0D%0ACheck+if+the+file+specified+in+the+Input+File+field+exists.+If+it+exists%2C%0D%0ANODENAME_errorCode+is+set+to+0+%28SUCCESS%29%2C+otherwise%0D%0ANONENAME_errorCode+is+set+to+8+%28FILE_ACTIVITY_ERROR%29%0D%0Aand+the+flow+is+terminated+if+Stop+on+Error+is+checked.%0D%0A%0D%0ACheckJobErrLog__errorCode+%3D+0%0D%0A%0D%0A%3C%21LAWDIR%3E%3C%21delimiter%3Esystem%3C%21delimiter%3Ejoblog%3C%21delimiter%3E%0D%0A%0D%0A%3C%21LAWDIR%3E%3C%21delimiter%3Esystem%3C%21delimiter%3Ejoblog%3C%21delimiter%3E%3C%21CheckJobErrLog_filenames%3E%0D%0A%0D%0A%3C%21LAWDIR%3E%3C%21delimiter%3Esystem%3C%21delimiter%3Ejoblog%3C%21delimiter%3E*.%3C%21jobNumberExt%3E%0D%0A%0D%0A%0D%0A%2Flaw90%2Fapps%2Fsystem%2Fjoblog%2Fed501re.361288%0D%0A%0D%0A%0D%0AReturn+a+list+of+the+files+in+the+directory+specified+in+the+Directory+field%2C+which%0D%0Amatch+the+filename+pattern+specified+in+the+Filename+Filter+field.%0D%0AFiles+which+have+been+modified+within+some+period+of+time+are+not%0D%0Alisted%3B+the+time+value+is+specified+in+seconds+in+the+bpm.properties%0D%0Ain+the+optional+fileAccessCheckTime+property.+The+default+is%0D%0Afive+seconds.%0D%0A%0D%0ANODENAME_filenames+An+array+of+filenames+returned+by%0D%0Athe+List+Files+function." id="ListJobErrLog" x="85" y="185">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="function" propType="SIMPLE">

    <anyData><![CDATA[list+files]]></anyData>

    </prop>

    <prop className="java.lang.String" name="encoding" propType="SIMPLE">

    <anyData><![CDATA[windows-1252]]></anyData>

    </prop>

    <prop className="java.lang.String" name="dataSource" propType="SIMPLE">

    <anyData><![CDATA[*.%3C%21jobNumberExt%3E]]></anyData>

    </prop>

    <prop className="java.lang.String" name="filePathName" propType="SIMPLE">

    <anyData><![CDATA[%3C%21jobLogPath%3E]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="stopOnError" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <prop className="java.lang.String" name="configurationName" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.Boolean" name="ignore file not found" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <OnActivityError>

    <notify>true</notify>

    <to><![CDATA[PFIAdmin]]></to>

    <cc/>

    <bcc/>

    <from><![CDATA[%3C%21_configuration.main.mailFromError%3E]]></from>

    <subject><![CDATA[Error+encountered+executing+process%3A+%3C%21ProcessName%3E]]></subject>

    <body><![CDATA[Error+encountered+executing+process%0D%0A%0D%0AProcess%3A+%3C%21ProcessName%3E%0D%0AWorkunit%3A+%3C%21WorkUnit%3E%0D%0AActivity+id%3A+%3C%21this%3E%0D%0A%0D%0AJob+Name%3A+%3C%21queryJobName%3E%0D%0AJob+Number%3A+%3C%21queryJobNumber%3E%0D%0AJob+Start+Time%3A+%3C%21queryStartTime%3E%0D%0AJob+Log+Attachments%3A+*.%3C%21jobNumberExt%3E%0D%0A%0D%0AError+code%3A+%3C%21this_errorCode%3E%0D%0AInformation+code%3A+%3C%21this_informationCode%3E%0D%0A%0D%0AReturn+message%3A+%3C%21this_returnMessage%3E%0D%0A%0D%0AOutput+data%3A%0D%0A%3C%21this_outputData%3E%0D%0A%0D%0A%3C%21ref%3E]]></body>

    <goto>true</goto>

    <activity>Email8300</activity>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="BRANCH" caption="JobNumberExist" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaBranch" id="JobNumberExist" x="215" y="185">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="Condition" name="conditions" nbrCols="1" nbrRows="3" propType="ARRAY">

    <pfObject className="pfObject-Condition" name="0" pfObjectType="SIMPLE">

    <prop className="java.lang.String" name="naam" propType="SIMPLE">

    <anyData><![CDATA[JobFailure]]></anyData>

    </prop>

    <prop className="java.lang.String" name="btexe" propType="SIMPLE">

    <anyData><![CDATA[ListJobLog]]></anyData>

    </prop>

    <prop className="java.lang.String" name="expr" propType="SIMPLE">

    <anyData><![CDATA[queryJobNumber+%21%3D+%27%27]]></anyData>

    </prop>

    </pfObject>

    <pfObject className="pfObject-Condition" name="1" pfObjectType="SIMPLE">

    <prop className="java.lang.String" name="naam" propType="SIMPLE">

    <anyData><![CDATA[NoJobFailure]]></anyData>

    </prop>

    <prop className="java.lang.String" name="btexe" propType="SIMPLE">

    <anyData><![CDATA[End-GetJobs]]></anyData>

    </prop>

    <prop className="java.lang.String" name="expr" propType="SIMPLE">

    <anyData><![CDATA[queryJobNumber+%3D%3D+%27%27]]></anyData>

    </prop>

    </pfObject>

    <pfObject className="pfObject-Condition" name="2" pfObjectType="SIMPLE">

    <prop className="java.lang.String" name="naam" propType="SIMPLE">

    <anyData><![CDATA[UseListFile]]></anyData>

    </prop>

    <prop className="java.lang.String" name="btexe" propType="SIMPLE">

    <anyData><![CDATA[ListJobErrLog]]></anyData>

    </prop>

    <prop className="java.lang.String" name="expr" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    </pfObject>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="EMAIL" caption="EmailJobError" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaEmail" description="%0D%0AThis+email+will+be+sent+when+the+ProcessFlow+failed.+Also+sent+the+joblog+as+an+attachment.+The+joblog+can+be+located+in+the+LAWDIR%2Fsystem%2Fjoblog+directory+with+the+naming+convention+of%3A++token.jobnumber+with+no+leading+zeros.%0D%0A%0D%0A%2Cdarrington%40nemours.org%0D%0AISAppSupportLawson%40NEMOURS.ORG%0D%0APFIAdmin%0D%0A%0D%0Aricci.barnes%40nemours.org%2Cdarrington%40nemours.org%0D%0A%0D%0A%3C%21LAWDIR%3E%3C%21delimiter%3Esystem%3C%21delimiter%3Ejoblog%3C%21delimiter%3E%3C%21CheckJobErrLog_filenames%3E%0D%0A" id="EmailJobError" x="339" y="425">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="EmailConfigurationName" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="to" propType="SIMPLE">

    <anyData><![CDATA[%3C%21_configuration.main.toEmail%3E]]></anyData>

    </prop>

    <prop className="java.lang.String" name="from" propType="SIMPLE">

    <anyData><![CDATA[IPA%40gbmc.org]]></anyData>

    </prop>

    <prop className="java.lang.String" name="cc" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="bcc" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="subject" propType="SIMPLE">

    <anyData><![CDATA[Failled+Batch+Job+%3C%21queryJobName%3E+with+Status+%3C%21jobDescription%3E]]></anyData>

    </prop>

    <prop className="java.lang.String" name="content" propType="SIMPLE">

    <anyData><![CDATA[%3Cbr%2F%3EBatch+Failure+Job+%3C%21queryJobName%3E+is+in++at+%3C%21queryStartTime%3E%3Cbr%2F%3E%0D%0A%3Cbr%2F%3EJob+Name%3A+%3C%21queryJobName%3E%0D%0A%3Cbr%2F%3EJob+Number%3A+%3C%21queryJobNumber%3E%0D%0A%3Cbr%2F%3EJob+Start+Time%3A+%3C%21queryStartTime%3E%0D%0A%3Cbr%2F%3EJob+Status%3A+%3C%21jobDescription%3E%3Cbr%2F%3E%0D%0A%3Cbr%2F%3EJob+Log%3A+%3C%21jobLogFile%3E%3Cbr%2F%3E%0D%0A%3Cbr%2F%3E%3Cbr%2F%3E%0D%0A%3Cfont+face%3D%22Calibri%22+color%3D%22grey%22%3E%3C%21ref%3E%3C%2Ffont%3E]]></anyData>

    </prop>

    <prop className="java.lang.String" name="attachments" propType="ARRAY">

    <prop className="java.lang.String" name="1" propType="SIMPLE">

    <anyData><![CDATA[%3C%21JobLogFile%3E]]></anyData>

    </prop>

    </prop>

    <prop className="java.lang.Boolean" name="stopOnError" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="filterCategory" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="htmlContent" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="ignoreAttachmentError" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="SYSCMD" caption="ListJobLog" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaSysCommand" id="ListJobLog" x="230" y="295">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="conversionStatus" propType="SIMPLE">

    <anyData><![CDATA[0]]></anyData>

    </prop>

    <prop className="java.lang.String" name="executionMode" propType="SIMPLE">

    <anyData><![CDATA[sh]]></anyData>

    </prop>

    <prop className="java.lang.String" name="commandString" propType="SIMPLE">

    <anyData><![CDATA[ls+%3C%21jobLogPath%3E*.%3C%21jobNumberExt%3E]]></anyData>

    </prop>

    <prop className="java.lang.String" name="commandInput" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="errorOutputMode" propType="SIMPLE">

    <anyData><![CDATA[combine]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="errorOnErrorOutput" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="stopOnError" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <prop className="java.lang.String" name="configurationName" propType="SIMPLE">

    <anyData/>

    </prop>

    <OnActivityError>

    <notify>true</notify>

    <to><![CDATA[PFIAdmin]]></to>

    <cc/>

    <bcc/>

    <from><![CDATA[%3C%21_configuration.main.mailFromError%3E]]></from>

    <subject><![CDATA[Error+encountered+executing+process%3A+%3C%21ProcessName%3E]]></subject>

    <body><![CDATA[Error+encountered+executing+process%0D%0A%0D%0AProcess%3A+%3C%21ProcessName%3E%0D%0AWorkunit%3A+%3C%21WorkUnit%3E%0D%0AActivity+id%3A+%3C%21this%3E%0D%0A%0D%0AJob+Name%3A+%3C%21queryJobName%3E%0D%0AJob+Number%3A+%3C%21queryJobNumber%3E%0D%0AJob+Start+Time%3A+%3C%21queryStartTime%3E%0D%0AJob+Log+Attachments%3A+%3C%21jobLogPath%3E*.%3C%21jobNumberExt%3E%0D%0A%0D%0AError+code%3A+%3C%21this_errorCode%3E%0D%0AInformation+code%3A+%3C%21this_informationCode%3E%0D%0A%0D%0AReturn+message%3A+%3C%21this_returnMessage%3E%0D%0A%0D%0AOutput+data%3A%0D%0A%3C%21this_outputData%3E%0D%0A%0D%0A%3C%21ref%3E]]></body>

    <goto>true</goto>

    <activity>Email4550</activity>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="ASSGN" caption="Assign" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaAssign" id="Assign4650" x="233" y="410">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="String" name="jobLogFile" propType="SIMPLE">

    <anyData><![CDATA[ListJobLog_outputData.replace%28LAWDIR%2C+jobLogAttachDir%29]]></anyData>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="EMAIL" caption="Email" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaEmail" id="Email4550" x="350" y="350">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="EmailConfigurationName" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="to" propType="SIMPLE">

    <anyData><![CDATA[%3C%21_configuration.main.toEmail%3E]]></anyData>

    </prop>

    <prop className="java.lang.String" name="from" propType="SIMPLE">

    <anyData><![CDATA[IPA%40gbmc.org]]></anyData>

    </prop>

    <prop className="java.lang.String" name="cc" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="bcc" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="subject" propType="SIMPLE">

    <anyData><![CDATA[Error]]></anyData>

    </prop>

    <prop className="java.lang.String" name="content" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="attachments" propType="ARRAY"/>

    <prop className="java.lang.Boolean" name="stopOnError" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="filterCategory" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="htmlContent" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="ignoreAttachmentError" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    <activity activityType="EMAIL" caption="Email" className="com.lawson.bpm.processflow.workFlow.flowGraph.FgaEmail" id="Email8300" x="95" y="480">

    <prop className="java.lang.String" name="_activityCheckPoint" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="EmailConfigurationName" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="to" propType="SIMPLE">

    <anyData><![CDATA[%3C%21_configuration.main.toEmail%3E]]></anyData>

    </prop>

    <prop className="java.lang.String" name="from" propType="SIMPLE">

    <anyData><![CDATA[IPA%40gbmc.org]]></anyData>

    </prop>

    <prop className="java.lang.String" name="cc" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="bcc" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="subject" propType="SIMPLE">

    <anyData><![CDATA[Error]]></anyData>

    </prop>

    <prop className="java.lang.String" name="content" propType="SIMPLE">

    <anyData/>

    </prop>

    <prop className="java.lang.String" name="attachments" propType="ARRAY"/>

    <prop className="java.lang.Boolean" name="stopOnError" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="filterCategory" propType="SIMPLE">

    <anyData><![CDATA[true]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="htmlContent" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <prop className="java.lang.Boolean" name="ignoreAttachmentError" propType="SIMPLE">

    <anyData><![CDATA[false]]></anyData>

    </prop>

    <OnActivityError>

    <notify>false</notify>

    <to/>

    <cc/>

    <bcc/>

    <from/>

    <subject/>

    <body/>

    <goto>false</goto>

    <activity/>

    <log>false</log>

    <logString/>

    <emailCon/>

    </OnActivityError>

    </activity>

    </activities>

    <edges>

    <edge edgeType="NORMAL" from="GetJobs" id="0" to="SetJobInfo"/>

    <edge edgeType="NORMAL" from="SetJobInfo" id="1" to="JobNumberExist"/>

    <edge edgeType="BRANCH" from="JobNumberExist" id="2" to="ListJobLog"/>

    <edge edgeType="BRANCH" from="JobNumberExist" id="3" to="End-GetJobs"/>

    <edge edgeType="BRANCH" from="JobNumberExist" id="4" to="ListJobErrLog"/>

    <edge edgeType="NORMAL" from="EmailJobError" id="5" to="End-GetJobs"/>

    <edge edgeType="ITER" from="End-GetJobs" id="6" to="End"/>

    <edge edgeType="NORMAL" from="Start" id="7" to="GetJobs"/>

    <edge edgeType="NORMAL" from="ListJobLog" id="8" to="Assign4650"/>

    <edge edgeType="NORMAL" from="Assign4650" id="9" to="EmailJobError"/>

    <edge edgeType="NORMAL" from="ListJobErrLog" id="10" to="Assign4650"/>

    <edge edgeType="ERROR" from="ListJobLog" id="11" to="Email4550"/>

    <edge edgeType="NORMAL" from="Email4550" id="12" to="End-GetJobs"/>

    <edge edgeType="ERROR" from="ListJobErrLog" id="13" to="Email8300"/>

    <edge edgeType="NORMAL" from="Email8300" id="14" to="End-GetJobs"/>

    <edge edgeType="ERROR" from="GetJobs" id="15" to="Email8300"/>

    </edges>

    </process>