If you are like me, you find it frustrating that you can only see the scheduled IPA processes that you created.  As an administrator, this can make tracking down process triggers quite difficult.  It is also difficult to determine which process is triggered by which schedule in the front-end Rich Client.  I have created a query that can show all schedules, and which process is triggered by the schedule.  Feel  free to take this and make it useful to you!

 

ORACLE

SELECT NAME, SUBSTR(AAR.ACTIONPARAMETERS, INSTR(AAR.ACTIONPARAMETERS, ‘<field name=”FlowName” id=”FlowName”><![CDATA[‘)+46,

INSTR(AAR.ACTIONPARAMETERS, ‘]]>’, INSTR(AAR.ACTIONPARAMETERS, ‘<field name=”FlowName” id=”FlowName”><![CDATA[‘)) –

            (INSTR(AAR.ACTIONPARAMETERS, ‘<field name=”FlowName” id=”FlowName”><![CDATA[‘)+46)) FLOW,

SCHEDULEWEEKDAY,SCHEDULEHOUR,SCHEDULEMINUTE,TIMETOEXEC

from LMK_LAWSON.ASYNCACTIONREQUEST ASYNCACTIONREQUEST INNER JOIN

LMK_LAWSON.S$AAR AAR ON AAR.ASYNCACTIONREQUEST = ASYNCACTIONREQUEST.ASYNCACTIONREQUEST

WHERE “GROUP” = ‘pfi’

ORDER BY NAME

SQL SERVER

SELECT NAME, RIGHT(LEFT(AAR.ACTIONPARAMETERS, CHARINDEX(‘]]>’, AAR.ACTIONPARAMETERS, CHARINDEX(‘<field name=”FlowName” id=”FlowName”><![CDATA[‘, AAR.ACTIONPARAMETERS)+46)-1),

CHARINDEX(‘]]>’, AAR.ACTIONPARAMETERS, CHARINDEX(‘<field name=”FlowName” id=”FlowName”><![CDATA[‘, AAR.ACTIONPARAMETERS)+46) –

(CHARINDEX(‘<field name=”FlowName” id=”FlowName”><![CDATA[‘, AAR.ACTIONPARAMETERS)+49)),

SCHEDULEWEEKDAY,SCHEDULEHOUR,SCHEDULEMINUTE,TIMETOEXEC

from LMKPRODGEN.ASYNCACTIONREQUEST ASYNCACTIONREQUEST INNER JOIN

LMKPRODGEN.S$AAR AAR ON AAR.ASYNCACTIONREQUEST = ASYNCACTIONREQUEST.ASYNCACTIONREQUEST

WHERE “GROUP” = ‘pfi’

ORDER BY NAME

 

Nogalis would love to assist with all your IPA needs!  We have some great resources on hand who can provide managed services of your system, training, and project work.  Check out our managed services program today!

With Infor Process Automation, there are several ways to trigger a Process.  This article will discuss how to trigger a custom process using 4GL.

First, create your Process.  Test it and upload it to the Process Server.

Next, in IPA Rich Client (or the LPA Admin tool), you must create a Service Definition (Process Server Administrator > Administration > Scheduling > By Service Definition) and attach a Process to it.  There, you will configure any variables that should be passed to the process.

Now, let’s create the trigger in the 4GL program.  This will be either a custom program your organization has created, or an existing Lawson form.

The first step is to initialize the WF SERVICE.

INITIALIZE WFAPI-INPUT

INITIALIZE WFAPI-OUTPUT

 

MOVE <serviceNameString> TO WFAPI-I-SERVICE

 

PERFORM 1000-WF-SERVICE

***Verify that the return code != 0 (anything other than 0 indicates error)

IF (WFAPI-O-RETURN-CODE NOT = ZEROS)

GO TO 600-END

Next, create the Work Unit

MOVE WFAPI-O-SERVICE TO WFAPI-I-SERVICE

MOVE <workTitleString> to WFAPI-I-WORK-TITLE

INITIALIZE WFAPI-OUTPUT

PERFORM 1000-WF-CREATE-SETUP

 

Now, populate your variables.  You can have an unlimited number of variables per Service Definition, but you must populate them in groups of 10 (i.e. perform the 1000-WF-ADD-VAR-SETUP for each group of 10)

INITIALIZE WFAPI-INPUT

 

MOVE WFAPI-O-WORKUNIT TO WFAPI-I-WORKUNIT

MOVE “company” TO WFAPI-I-VARIABLE-NAME (1)

MOVE HR11F1-EMP-COMPANY TO WFAPI-I-VARIABLE-VAL  (1)

MOVE “I” TO WFAPI-I-VARIABLE-TYPE (1)

 

MOVE “employee” TO WFAPI-I-VARIABLE-NAME (2)

MOVE HR11F1-EMP-EMPLOYEE TO WFAPI-I-VARIABLE-VAL  (2)

MOVE “I” TO WFAPI-I-VARIABLE-TYPE (2)

 

INITIALIZE WFAPI-OUTPUT

PERFORM 1000-WF-ADD-VAR-SETUP

 

Finally, release the Work Unit

INITIALIZE WFAPI-INPUT

MOVE WFAPI-O-WORKUNIT TO WFAPI-I-WORKUNIT

INITIALIZE WFAPI-OUTPUT

PERFORM 1000-WF-RELEASE-SETUP

 

Nogalis would love to assist with all your IPA needs!  We have some great resources on hand who can provide managed services of your system, training, and project work.  Check out our managed services program today!

Common error with conversion upload file: “CSV Read Error: Bad Field Data Format for Fld: 5 on Record Nbr 1”.

 

This could happen for example when running say PR530 in Lawson.

 

There are a couple ways to resolve this issue:

 

Resolution #1:

Fix the headers of the file by removing spaces or bad characters that the program doesn’t like in the file you’re using for upload.

Also keep in mind that if there are problems with the header records, you will be able to see the exact errors in the examine log after you run the job (Job Scheduler > Completed Queue > click on completed job and then select ACTIONS from the menu and highlight Examine Log). This gives more detail as to the exact CSV Header Read errors.

 

Resolution #2:

For the job that’s throwing this error, in LID, go to jobdef and enter the username and jobname

Move down to the form field >> F6 >> C. CSV File Attributes (PR530 is the example below):

Turn off File Header and Xlt Header Names and save.

When you run the job again, it will ignore the headers and process the data so make sure the columns are correct. This has to be done per user that runs the job.

 

Good luck!

Here are a few mitigation procedures to use when Landmark applications are crashing or performing very slowly and throwing core dumps on the server.

 

First, check the environment.properties file.  Validate that file is pointing to the correct version/location of Java.  Sometimes, Java is updated on the server, and the environment.properties file is not changed accordingly.  It’s not a guaranteed issue, but should be validated and resolved if found.

 

Secondly, make sure there is adequate heap space provided to the jvm.  Here are some examples for heavy processing:

 

com.lawson.was.nodeagent.jvm-init-mem=1024

com.lawson.was.nodeagent.jvm-max-mem=3072

com.lawson.was.dmgr.jvm-max-mem=4096

com.lawson.was.dmgr.jvm-init-mem=2048

com.lawson.was.<app Server>.jvm-init-mem=3072

com.lawson.was.<app server>.jvm-max-mem=12228

 

àThese values will be deployed every time a CU is applied, so you don’t have to keep updating them

 

Be sure to recycle the Landmark application server once these changes are made.

 

Note that clustering Landmark WebSphere would not do any good.  Landmark applications behave very differently from Lawson applications, and it would only waste resources to vertically scale.

 

A user accesses their inbasket they can see the workunit and the associated data, however when they approve the requisition it leaves their inbasket view in portal with a success message.  The workunit does not move on, nor does it show action has been taken within the workunit.

 

Also, no actions can be taken from that workunit.

 

Error from the lps.log

 

Thu Jun 16 14:19:48 PDT 2016 – Message “com.lawson.bpm.errors.ErrorMessages.com.lawson.rdtech.framework.ProcessFlowException: Unknown security exception has occurred.

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutor.getActorContext(ProcessFlowExecutor.java:651)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutor.getActorContext(ProcessFlowExecutor.java:617)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutor.processProcessFlowQueue(ProcessFlowExecutor.java:409)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutor._executeFlowPrivate(ProcessFlowExecutor.java:332)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutor._executeFlow(ProcessFlowExecutor.java:212)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutorProcessorImpl.sweepPrivate(ProcessFlowExecutorProcessorImpl.java:284)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutorProcessorImpl.processMessage(ProcessFlowExecutorProcessorImpl.java:81)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutorProcessorImpl.runPrivate(ProcessFlowExecutorProcessorImpl.java:186)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutorProcessorImpl.run(ProcessFlowExecutorProcessorImpl.java:150)

at java.lang.Thread.run(Thread.java:744)

Caused by: com.lawson.security.interfaces.GeneralLawsonSecurityException: Unknown security exception has occurred.

at com.lawson.interfaces.security.LawsonSecurityFactory.setRunAsUserOnDuplicateContext(LawsonSecurityFactory.java:1549)

at com.lawson.bpm.eprocessserver.grid.ProcessFlowExecutor.getActorContext(ProcessFlowExecutor.java:634)

… 9 more

Caused by: java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at com.lawson.interfaces.security.LawsonSecurityFactory.setRunAsUserOnDuplicateContext(LawsonSecurityFactory.java:1545)

… 10 more

Caused by: com.lawson.security.authen.SecurityAuthenException: com.lawson.security.authen.LawsonUserContextImpl.security.authen.actor_does_not_support_run_as

at com.lawson.security.authen.LawsonUserContextImpl.setRunAsUserOnContext(LawsonUserContextImpl.java:1497)

at com.lawson.security.authen.LawsonUserContextImpl.setRunAsUserOnContext(LawsonUserContextImpl.java:1460)

at com.lawson.security.authen.LawsonUserContextImpl.setRunAsUserOnContext(LawsonUserContextImpl.java:1451)

at com.lawson.security.authen.LawsonUserContextImpl.setRunAsUserOnDuplicateContext(LawsonUserContextImpl.java:1592)

at com.lawson.security.authen.DataCtxUserCtxWrapper.setRunAsUserOnDuplicateContext(DataCtxUserCtxWrapper.java:432)

… 15 more

” not found.

 

 

 

Resolution:

The lawson user does not have Run As enabled.  Infor Security Administrator by default has the enable Run As set to “NO” for the lawson user.  When a change is done on the lawson user and saved in the Infor Security Administrator the run as gets flipped back to “NO” in Landmark.  Go to Infor Security Administrator and change the Enable Run As to “YES” save it.  Restart LPA and Async grid nodes.

 

 

Keywords:

 

In LID, type in jobdef, select a user and job name, then F6 >> B. Report Distribution

As you can see, this job isn’t being distributed beyond the prt file that is produced in the users print manager:

You have three options to None, direct to a printer, or to a distribution group:

If we use a distribution group, a distribution group consists of a list of users which can all have different printers setup under them within this group:

The printer itself has to be defined in printer definitions (prtdef) as well as setting up in the distribution list group definitions (dstlistgrpdef)

 

In this example, if the job definition (jobdef) was set to BENEFIT distribution group and ran, it would auto print to PRINTER123 under the lawson user.  All other users are not set so it wouldn’t print to them.  That’s it!

If your organization still heavily relies on Lawson recurring/custom jobs and are looking to support or migrate those jobs to IPA, which is harder and harder to find individuals who have all the skillsets to do so, we recommend you look into hiring a Lawson consultant team who offer managed services at a fixed monthly rate.

These Lawson teams have a wider range of expertise and knowledge and are ideal for larger organizations but also are great for smaller ones that don’t need a dedicated Lawson employee on-site that may only be an expert in 2-3 portions of Lawson.

In Lawson Security, you may come across a problem where no programs are found with any securable types enabled. This is a simple fix. Follow the steps below to learn how to fix security not registering Lawson (when given all securable types):

When editing the class select Add Rule, then in the Securable Types Online, add all top system codes (HR, AP, TE etc.) as shown below:

Next, you will need to validate that the objects are added:

Clear Server cache in LSA, Clear IOS cache in Portal.

Logout then log back in and test again. This should enable all and solve the issue.

 

Good luck!