5 needs your technical documentation should address

Here at Nogalis we perform managed service for several dozen enterprise customers. Most of our customers are either using Lawson V10 on premise or Infor CloudSuite products in the cloud. Our customers vary in their level of complexity but they almost all have several custom interfaces that support the operation of their businesses. Most of these interfaces are built with IPA (Infor Process Automation) or with ION which are both Infor supported products. Here are some examples just to name a few:

  • Positive pay interfaces to banks
  • Invoice import interface
  • Vendor creation interface
  • Automated user provisioning
  • Employee benefits exports and imports
  • COBRA interface
  • Batch job automation
  • Invoice or Purchase Order Approval interfaces
  • Journal entry imports

And many more

Many of these interfaces were designed and developed years ago and have been modified several times since. Unfortunately, the same cannot be said about the documentation that was once made for them if any. In an upcoming webinar and subsequent article, I plan to discuss how to develop accurate, useful, and easy to maintain documentation. But in this article, I want to focus on the reasons why we need these documents because without knowing why we do something, we’re not likely to do it right. The reasons below serve as guidelines for our documentation:

Reason 1 – Supporting the interfaces. This is the primary reason for creating good documentation. The goal of the any documentation should be that anyone can read it from start to finish and be able to support the existing process when it breaks. Therefore, one of the first things we do for our new managed service customers is to create detailed documentation of all their interfaces on our DOCR documentation portal and give them access to it. You can see some examples here. What’s nice about storing these documents on a web portal is that there is a central place for keeping them updated that everyone can contribute to. For support reasons, we make sure that we have a troubleshooting and a recovery section in each of our interface documents.

Reason 2 – Updates and enhancements. We’re routinely asked to update and enhance existing interfaces. While we can dig through the entire code of the interface to find out what every piece does, it is always helpful if some documentation exists that has an overview of the different components of the interface.

Reason 3 – Change Control. As we make changes to interfaces over the years, it is important to document these changes for change control purposes. Having a web-based documentation portal makes it easy to do this as it is the only version of the document that exists, and it is always updated with the latest changes.

Reason 4 – Application upgrades. As we upgrade our large enterprise applications, we always must study the impact of the upgrade on any custom interfaces that we have. The only way to do this quickly is to review the documents and specifically focus on any sections focusing on dependencies, and general data flow. Having proper documentation during an upgrade process can make the difference between a 1 month upgrade and a 6 month upgrade.

Reason 5 – Training and new hires. We pride ourselves in our one-to-one client to resource ratio in our managed service group. That means that for every new managed service customer, we add at least one new member to our team. This new team member goes through a rigorous training that includes reviewing all existing client documentation. This is an indispensable tool for our team as well as any client newhires.

If you need help creating your interface documentation, or to subscribe to our DOCR documentation portal, please contact us here.

Building Serverless for Enterprise Applications

If you’re reading this, you must have already become curious about serverless computing or perhaps you just read our other article on the topic. There is no doubt that the future of computing will not have any traditional servers in it. In fact, I would venture to guess that by 2025, nearly every new development project will be a serverless project. This is not very hard to believe given that we at Nogalis have been developing all our enterprise applications for the past year using this paradigm and have yet to come up with a real reason to spin up a server.

There are a few things you need to understand about “Serverless” before you can start your project.

  1. Firstly, your current server-bound applications cannot run serverless without going back to the drawing board. In an ideal Serverless application, each request needs to stand on its own. Each request needs to process within a single function, verify itself and its caller’s authentication and permissions, run to completion, and set the states as needed. Your current application doesn’t do that. Your server is likely holding on to user sessions that have been authenticated and running so that it can handle the user’s next request. Without getting any more technical, the important things to understand is a “Serverless” application has to be designed and developed that way, it cannot be ported over magically. At least not today in 2019.
  2. Most, if not all enterprise applications deal with a database. AWS has made some great strides in the area of “Serverless” databases and at the current time (2019) offers two database options that are serverless:
    • Amazon DynamoDB – Amazon’s own NoSQL database service
    • Amazon Aurora Serverless – an on-demand, auto-scaling configuration for Amazon Aurora (MySQL-compatible edition), where the database will automatically start up, shut down, and scale capacity up or down based on your application’s needs.

It is obvious that if Microsoft, Oracle, and IBM want to remain competitive in the DB space, they will also have to offer Serverless versions of their database products or go the way of the mainframe. In the meantime, you can build a serverless application, that connects to a server-bound database in order to store its data. We won’t judge you.

  1. In a serverless environment, you don’t have any local storage. Because you don’t have a, ummm, server. So, you will need to figure out your storage as a part of your design. No more writing log file to d:\temp. This is one of the biggest reasons your current server-bound application can’t just go without a server. Luckily, AWS offers several API-enabled storage solutions to deal with this limitation. Our favorite is still S3 because of its ubiquitous edge availability, it’s incredible speed, it’s flexible use cases, and its many other advanced features.
  2. Last on my list is the method for accessing your compute logic. For this AWS provides their API Gateway which can trigger any of your functions with ease.

Of course, the items above are not the entire story. For instance, AWS SNS is a fully managed messaging service that you can use for messaging. Cloudwatch will help you with event monitoring and debugging. A whole host of applications exist that can help with nearly everything else. In the past two years of developing serverless applications, we have yet to have a need that we couldn’t eventually resolve with AWS available services. I say eventually because our developer brains were accustomed to think of every problem in a very server-centric way. Once you stop relying on the server to solve all your development challenges, you’ll think of some innovative ways to develop your applications that will surprise you.

If you’re considering developing a serverless enterprise application, we’d love to help. Please use the contact us page to make an appointment with someone on our team to discuss your serverless project.

Upcoming Events June 2019

We are kicking off the summer with some exciting Lawson User Group Events!

NELUG 2019 Spring Virtual Meeting

Hosted by: Northeast Lawson User Group
When: Thursday June 6th, 2019  from 9:00 to 4:00 (US/Eastern)

Register Now!

Topics of interest to all Infor Lawson areas will be offered during this special event.

No travel, No hotel fees & No conference fees.

Participate in this conference without leaving your office.

The agenda & other details will be available in the near future.

Anyone how has a completed registration will receive the URL/Link to attand the sessions list below the day before this event as well as displayed on this event site page the day of.

MWLUG Summer 2019 Conference

Hosted by: Midwest Lawosn User Group
When: Tuesday June 18th – Thursday June 20th, 2019 from 7:00 to 5:00 (US/Central)
Where: St. Olaf College 1520 St Olaf Ave Northfield, MN 55057


One lucky attendee at the MWLUG Summer 2019 Conference will win a complimentary Infor Tech Ed 2020 registration ($1,800 value)!

Who else from your company is attending?  Click the colleagues tab to find out – If you know a colleague that would benefit from attending, let them know!

With nearly 60 sessions planned covering Human Capital Management, Enterprise Financial Management, Supply Chain Management, Technical, and General tracks –  including a Demo track this summer – you’ll have plenty of opportunities to learn and network during this conference!  But wait… there is even more…

Show & Tell!  The Midwest Lawson User Group, in partnership with RPI Consultants, are providing a day of Show and Tell.  Find details on the Show & Tell tab above.

Opening session will be held on Wednesday morning, June 19th, including important updates from Infor.

Join us Tuesday evening for an informal networking reception in the River Side Room of the Archer House in downtown Northfield. Relax with peers while enjoying appetizers and cocktails as we gear up for two spectacular days of conference sessions, networking and fun. The Archer House is located at 212 Division Street, Northfield, MN.  And stay for the trivia contest – show your smarts for prizes or stick around for the laughs!

The Grand Event Center is the site of this year’s MWLUG reception on Wednesday night.  The historic Grand building in downtown Northfield has been restored to resemble the original theatre that it was in the early 1900’s.  Join us for fun, food, drinks and entertainment at this premiere event location!  Prizes will be given away!  Located just 1 mile from St. Olaf in downtown Northfield.

Make sure to follow the Midwest Lawson User Group to stay up to date on upcoming meetings and educational opportunities.

Special thanks to our vendor sponsors this summer!

GOLD –  RPI Consultants, ClearSky, Velocity Technology Solutions, Dashboard Gear, Bails & Associates, MHC Software, Hyland Software, Inc, Cashbook

SILVER –  Kinsey, Ascend Software, iTK Technologies, JK Seva, Intellias, Avaap, Analysts, HyBridge Solutions, ROI Healthcare Solutions, Prodigo Solutions

BRONZE –  BSI, Emkat, GForce Technology Consulting, Huron

and a special Thank You to Infor and Digital Concourse!

If registering by June 14th, 2019 – 

  • Five people from each member company can attend at no charge. Each additional person from member companies will be billed and additional $50 per attendee.
  • The registration cost for attendees from non-member companies is $150.

2019 Membership dues need to be paid in order for “member” pricing to be available for your company.  If your company is not a member company, become one today!

If registering after June 14th, 2019 – 

  • Member companies will be $90 per attendee.
  • The registration cost for attendees from non-member companies will be $200.

Upcoming Meetings – save the dates:

  • September 23-26, 2019, Inforum in New Orleans
  • November 21, 2019, Fall meeting at HealthPartners
  • February 20, 2020, Winter meeting at HealthPartners

Follow us on Twitter @MWLUG

View/Register Here

Lawson Error – “Unable to log on RUNUSERKEY Account”

If you run into this error, it likely means that many of your batch jobs in Lawson are going into recovery. The reason this may have occurred is due to a domain name change or possibly an accidental password reset.


To resolve, first login into LSA, then go to Manage Privileged Identities.

Once there, click the Environment named service ie. LSFPROD, LSFTEST or however yours is named. Select the BATCH key and find out what user is assigned under it.


This BATCH key may be named differently so check your lajs.cfg file under RUNUSERKEY as shown below in the system folder.

If you know the latest password login to LID with it first to confirm.


After confirming, type the password in the password field shown below and remember to click CHANGE after you confirm the password:

Go back to the job scheduler and attempt to recover your jobs.

How to add a user into Lawson Business Intelligence

Lawson makes it incredibly simple to add users to its reporting wing LBI.


First what you want to do is add the LBIUser GROUP to the user in LSA:

This group may be spelled differently but typically it’s called LBIUSER and is defined when Lawson is first setup for your organization.


Once you add this group to the Lawson user. Make sure you save and clear your server cache.


Log in to LBI, go to Tools, and under System Administration click “Synchronize Users and Roles”

LBI typically auto-synchronizes once a day but you can manually do it now and you’ll notice the users and roles will be the same after your sync them.

The user should be able to login into LBI but likely won’t be able to access much if reports, dashboards, and links are assigned additional Lawson groups as a means of restricting access. Again, these are called “roles” in LBI but “groups” in Lawson.


There is also a matter of bursting reports to the user which is another form of security that will be outlined in another article.

IPA – LSF Server Configuration Recommendations from Infor

Infor Process Automation should be configured correctly to ensure proper functioning of other Lawson System Applications. Here are the official best practice IPA-LSF Server Configuration recommendations directly from Infor. (KB 1946828)

Recommended Configurations

  1. JT-973173

    This JT resolves a memory leak issue in the Event Manager Java Process. Not having this JT means the Event Manager Java Process will slowly grow in size and if left unchecked, can consume all RAM and even crash the LSF Server.

  2. Remove lpsMaxHeap=XXXXX and lpsMinHeap=XXXXX from LAWDIR/system/

    These settings are only required when using JNI.

  3. Set useLPSBridgeSocket=true in LAWDIR/system/

    NOTE: The use of the LPS Bridge Socket connection means LSF batch/online programs will no longer initialize a JVM, it will simply make a socket connection to the Event Manager process to make the request.

  4. Set Windows pagefile on LSF server to 32 GB


Additional Recommendations for Infor Cloud Clients

  • Verify and ensure that
  • NOTE: If this setting is not pointed at the internal domain, a grid session memory leak can occur in Event Manager on the LSF server
  • NOTE: Changes to this file should be made by executing pfserv config lps and they require a restart of LSF Process Flow and LSF Web Application Servers.

Additional Recommendations for LSF on LINUX

  • Ensure LSF JT-875069 is applied to the LSF system
  • Add “useLPSLocalServices=true” to LAWDIR/system/
  • Follow KB 1936921 which has two process definitions files used for synchronizing services from IPA/Landmark to LSF
  • In the GEN data area of the Landmark Rich Client, navigate to ConfigurationParameter BusinessClass and add: Component=ipa, Name=useRMIWebServlet, Value=true
  • Configure LSF to look at IPA Services in the LOGAN database instead of connecting to IPA. This requires LSF JT-875069 which allows you to add “useLPSLocalServices=true” in This also requires the use of a ServiceSyncFlow to move the services from IPA to LSF. To implement this procedure, please follow instructions on KB 1936921.

Infor Knowledge Base (KB) and Documentation Search Tips and Tricks

Troubleshooting Infor/Lawson issues can be tricky at times due to the scarcity of resources online. Finding an Infor specific solution through a standard Google search is usually fruitless. In these cases, the absolute best help usually comes from an Infor Knowledge Base (KB) article or actual Infor documentation as the instructions there are coming straight from the horse’s mouth.

Unfortunately, it can be quite tricky to use the search to find what you are looking for. Even when I know exactly what I’m looking for, I have seen the search results display wildly irrelevant articles. Even when I type the exact title of the KB article, the results sometimes do not show it.

Here are some tips and tricks to help you search through Infor’s Knowledge Base (Full article: KB 1182904)

  1. Do you know the ID Number?
    If you have the incident number, KB article ID, or Documentation topic ID on hand, there is no need to mess with search terms at all. Simply search the number and just the number itself to find your article.


  2. Try to favor Singular words over Plural in the Search Phrase
    Infor recommends using singular words in your search phrase for better search results.
  3. Using Wildcards in the Search Phrase
    There are two wildcard characters (* and ?) available to use in the search phrase to expand your results. Wildcard characters serve to complete a word when you are not sure of the entire word. Wildcard characters apply to single words and not the entire phrase.

    Asterisk (*): Adding this to a word will add zero or more characters to the word to look for all words that include the characters provided. For example, searching for term “account*” will return results that start with account but can end with any number of letters after account. Words such as accounts, accounting, accounted would all be included in the search results.

    Question mark (?): Adding this to a word will add one character to the word to look for all words that include the characters provided. For example, searching for term “?ate” will return results that end in ate but can start with any one letter. Words such as late, date, rate, gate would all be included in the search results. If it was an asterisk instead (*ate), words such as elucidate, satiate, plate would also be included.

    Note: if you use the * in a word in the search phrase and the search engine finds too many matches, you may get no results returned.

  4. Using Special Characters
    The only special characters that are considered by the search are:
    • slash (/)
    • dash (-)
    • underscore (_)

    All other special characters (such as !,@,#,$,&) will be replaced by a space when the search is performed. These are not searchable.

  5. Types of Searches
    If your search contains just one word, regardless of the setting of the Search Exact Phrase checkbox, an “Exact Phrase” search will be performed. Only those KB articles/Documentation topics that include the word, a form of the word, or a synonym for the word, will be included in the search result. If your search phrase is “execute”, you should expect to see KB articles/Documentation topics including: execute, executed, executing, run, runs, and running in the search result.

If your search contains more than one word and Search Exact Phrase = unchecked, an “All of the Words” search is performed. If there is at least one result that contains all of the words in the search phrase, then the results are displayed. If there are no results that contain all of the words in the search phrase, then an “Any of the Words” search will be performed and all of the KB articles/Documentation topics that contain at least one word in the search phrase will be displayed in the search result.

If your search contains more than one word and Search Exact Phrase = checked, an “Exact Phrase” search is performed. If there is at least one result that contains the exact phrase, then the results are displayed. If there are no results that contain the exact phrase, then an “All of the Words” search is performed. If there is at least one result that contains all of the words in the search phrase, then the results are displayed. If there are no results that contain all of the words in the search phrase, then an “Any of the Words” search will be performed and all of the KB articles/Documentation topics that contain at least one word in the search phrase will be displayed in the search result.

Refer to the Search Terms Match filter on the search result page to see what type of search was performed:

  1. Search Exact Phrase Checked vs Unchecked

    If Search Exact Phrase is selected:
• Automatic spell correction is not performed. The search terms are searched as-is.
• “Noise words” are not removed from the search phrase.

    If Search Exact Phrase is NOT selected:
• Automatic spell correction is performed. There will also be a “Search instead for” option to search the original phrase with no correction.
• “Noise words” are removed from the search phrase.

  • You can surround a word with double quotes (“”) to avoid auto spell correction and noise word removal.

    • The numbers zero through nine (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) are also considered noise words.
  • The individual letters of the English alphabet are also considered noise words.
  1. Infor General Recommendations
  • Use the Advanced Search options on the search criteria page only if you know for certain that the search result should include results with only those criteria.
  • On the search criteria page, select multiple product lines if you are unsure where an issue might originate.
  • When conducting a search, start with a simple search phrase and if too many results are returned, try adding more words to constrain the search result.
  • On the search result page, only use the filters on the right if you are certain that the search result should be filtered by those selections. If you are uncertain, you might consider modifying your search phrase.

Setting Up LSF Java User Permissions for IPA

When working with Infor Process Automation (IPA), code or programs can be executed remotely on the Lawson System Foundation Server through these four nodes:

  1. System Command Node
  2. File Access Node
  3. Resource Query Node
  4. Resource Update Node

These nodes work by making a connection (via RMI call) to a java.exe process running on the Lawson System Foundation Server. Therefore, it is vital that the process owner has the proper access to run these commands.

Follow the instructions below to configure your LSF system so these processes will be owned by a user that has the necessary access:

  1. Create two files (pfrmi.cfg and pfem.cfg) in %LAWDIR%/system directory. The next time the process flow is restarted, the java.exe process will refer to these files to specify which user will start the java.
  2. Both files should be identical and have just two lines each:
    line 1: LAWSONUID DOMAIN\accountname
    line 2: 

LAWSONUID DOMAIN should be replaced with your own domain and accountname should be replaced with your own account name. This is the user you are designating to run the java command. This user needs to have the proper access to run those commands. This domain/accountname combo needs to be a valid user defined in the LSF Environment Service Identity.

The second line needs to be a blank line. (Only if LSF system is running on Windows. No blank second line needed for UNIX)

line 1/line 2 are there to show you the line numbers. The actual words “line 1” and “line 2” should not be in the files.

Troubleshoot NoClassDefFoundError (bouncycastle.x509)

After configuring LSF for AD FS, we encountered a 500 error after a login smoke test. The error was begin logged in SystemOut.log for our AppServer. The error message was:

[4/30/19 14:31:41:287 PDT] 000000e9 ServletWrappe E service Uncaught service() exception thrown by servlet SSOServlet: java.lang.NoClassDefFoundError: org.bouncycastle.x509.extension.SubjectKeyIdentifierStructure

To troubleshoot this, we first regenerated and reloaded the ADFS Certificate to the LSF IdP Certificate in ssoconfig. This did not resolve the issue, so then we checked the java policy files. It turns out that the policy files were out-of-date. You need to update the policy files in JAVA_HOME and WebSphere. First, download the latest policy files from Oracle and IBM, and the BouncyCastle policy file from the BouncyCastle website.

To determine the directories which need the replacement files, first open a command line as administrator and type “where java”. This will show you where your main install of java is located. Go to this directory, then jre/lib/security and replace local_policy.jar and US_export_policy.jar. The BouncyCastle jar file will be located at jre/lib/ext. Matching files must also be stored in your WebSphere java home. To figure out where this directory structure will be, open SystemOut.log and scan for the last time the AppServer was started.  “Java Home” will be displayed there. The directory structure will be the same as your main java install.

Remember to backup/rename your old policy files and copy the new ones to these directories. You’ll have to stop your WebSphere services and kill all java processes before you can do this.