Posts

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/bpm.properties

    These settings are only required when using JNI.

  3. Set useLPSBridgeSocket=true in LAWDIR/system/bpm.properties

    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 lpsHost=inforbclm01.inforbc.com
  • 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/bpm.properties
  • 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 bpm.properties. 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.

    YES
    NO

  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.

Top Takeaways from “Process Automation – Performance Considerations and Best Practices” Infor Webinar

This 1 hour, interactive briefing from Infor provides an overview of the best practices for performance tuning your IPA process flows, grid tuning considerations, and tips to leverage the most from your system.

The full webinar can be accessed through a link on this page: (https://technology-blog.infor.com/2015/12/13/recording-now-available-for-ipa-performance-considerations-and-best-practices-webinar/)

Here are some notable takeaways from the video:

  1. IPA Settings Tuning
    Basic tips for improving performance:

    • Ensure you are on the latest release of Landmark Environment.
    • Upgrading your system to a newer release of Java will often result in performance improvements.
    • Core Pool Size: pfi.dispatcher.CorePoolSize setting within Grid determines how many simultaneous workunits can process at a time. Rule of thumb is to start by setting this value to the number of CPU Cores in your Landmark Server. (8 core CPU = 8 max workunits) In order to fully optimize, you can start simultaneous flows equal to your server’s cores and check Task Manager’s Performance tab. For example, if only 50% of your CPU is being used with 8 simultaneous flows in progress, you can probably safetly increase the maximum workunits to 12 or even 16 for improved performance.
    • Max Heap: grid.jvm.maxHeapMB setting within Grid sets the max amount of server RAM a particular Grid Node can use for processing. When setting this value, be aware of how much total RAM is available to use on the server. All the Max Heap sizes for all Grid Nodes, Operating System Memory, and Memory Footprint of other programs needs to be less than the total RAM of the server. The Max Heap should be set as high as possible with these considerations in mind.
    • LmrkDeferred Node: When installing Landmark, some grid deployments create this LmrkDeferred grid gode which combines the functionality of Async and IPA into one node. You should not be running Process Automation with this grid node. Infor recommends that the Async node and IPA node be broken out into their own grid nodes.
    • Configure the system so that there is only one IPA Grid node per Data Area that processes workunits.
  2. Process Tuning
    Basic tips for improving processes/flows:

    • Most important factor is the number of nodes. Try to minimize the number of nodes in your flow as flows take approximately 5-20ms time between nodes and 2-5ms time per variable assignment. An important tip when trying to reduce nodes is to remember that values returned from a query or processing node will automatically be assigned an internal variable name that we can refer to. There is no need for an additional assignment.
    • When using a query to cycle through records and write to a file, using a MsgBuilder versus a FileAccess or Assign node is more efficient as it is keeping the records in memory to write all at once at a later time. FileAccess in between a query is the most inefficient as it requires opening and appending onto a file once for every record encountered.
    • Turning on logging will decrease flow performance so it should only be turned on when troubleshooting flow failure or performance issues. When a flow is failing, turn on Workunit and Activity Logging and turn this off when done troubleshooting. For performance issues, run the flow with Workunit only logging turned on.
    • When creating a large csv file, consider using SysCommand node instead of writing to a file by looping through records.

For more details and the most recently updated KB articles, refer/subscribe to:
KB 1671693 – IPA Support Best Practices

How to Maximize Filezilla FTP Transfer Speed

  1. First, ensure that the Transfer mode is set to Passive in FileSite Manager Transfer Settings


    Passive mode is the recommended mode for client computers behind NAT or proxy. In active mode, the client must accept connection from the FTP server. In passive mode, the client always initiates the connection.
  2. Change Maximum Simultaneous Transfers to 10 in EditSettings Transfers

    As the name suggests, this increases the number of concurrent transfers that can occur to 10.

    If these tips do not improve your Filezilla transfer speed, it is probably due to some limit on your ISP or on the server you are connecting to. Some hosts place tight restrictions on FTP speeds so it may be worth contacting your ISP.

Infor Process Automation (IPA) Best Practices and Performance Improvement Tips

Since Infor Process Designer is an open-ended visual design tool, different users can achieve the same end goal but in many different ways. While the flow might technically “work”, this level of design freedom usually leads to processes that are not as efficient as they could potentially be.

Here are some tips to keep in mind as you design your next flow:

  1. Use a MsgBuilder node instead of writing to file for each record

     

    By using a MsgBuilder node, we can append all found records to a String in memory. We can then call the string when we need to write the records. This is much faster than individually writing each line, each time through the FileAccess node.

  2. Merge Assign Nodes

    This is a common mistake in many processes. There is no reason two Assign nodes would have to line up one after another in a flow. You can simply use one Assign node for all your variables/javascript. More nodes in your flow results in slower speeds so you should always try to use as few nodes as possible.
  3. Remove Unnecessary Assign Nodes

    When a value is returned from a query or processing node, it is automatically assigned an internal variable name.

    In the screenshot above, we see the values pulled from my SQL query have already been automatically assigned a variable. Therefore, there would be no point in having an Assign node to set SQL ADDRESS to my custom variable <!ADDRESS>. It would be better to simply call <!SQLQuery1080_ADDRESS> when needed as the variable has already been created for me.

  4. Remote File Access
    When the Infor Lawson business applications and ProcessFlow are on the same server, file access is blazing fast since all the files are local. However, when IPA is on a separate server, the process slows down since the flow must now access the file across the network and not locally.

    To mitigate this issue, make sure file access is done as efficiently as possible. Perhaps reach out to those in charge of network IT to see about reducing network lag.

  5. Upload the Process with Logging Off
    Process logging can negatively affect performance. Unless you are troubleshooting a problem, processes should be uploaded with Log Level: No debug

IP Designer Email Node – Using HTML and Inserting Images

Using HTML or inserting images via the IP Designer Email node seems to be a common problem based on the number of forum posts on this topic.

Here are some of the solutions that have been proposed.

USING HTML

Based on the responses of senior IP Designer users, the gold standard for using HTML in your email is to write the HTML directly into a MsgBuilder node (http://www.nogalis.com/2017/09/12/ip-designer-series-message-builder-node/) so that we can call the MsgBuilder variable name in the email body of the Email node.

INSERTING IMAGES

  1. A simple way to insert images in emails sent by IP Designer Email node would be to compose HTML as shown above and bring in images from web servers.
  2. Another way would be to store the image in the Lawson emailattachments directory in order to attach it in the Email node.In Windows the directory to store the images is: lawsondirectory/bpm/emailattachments
    In Unix: lawsondirectory/LPS/emailattachments/


5 ServiceNow Tips & Tricks I Wish I Knew When I Started!

  1. Performance degradation? Forms slow to load?
    Try following these steps:
    • Click the Settings Gear Icon on the top right of your ServiceNow screen, next to your name. Then, navigate to the Forms tab.


    • Changing the Related list loading from “With the Form” to “After Form Loads” for a slight improvement in performance. Changing to “On-Demand” can result in significant performance gains as this would change it so that records get loaded only upon click.

  2. Change the form view to a cleaner tabbed format versus the normal lengthy vertical layout.
    From the same Forms tab in System Settings (refer to tip #1), we can turn on Tabbed forms to change to this view.

    BEFORE:

    AFTER:

  3. Using asterisks (*) and double asterisks (**) for Reference fields.
    In ServiceNow, searching for a record in a reference field will automatically use a “STARTSWITH” query.

    This can cause some difficulties when trying to search for records.

    The solution is to use an asterisk before typing in the search term. This will change the query to a “CONTAINS” search which makes searching for records a lot easier.

    Also, you can also use double asterisks (**) to quickly return the first (up to) 15 records in the table.

  4. ServiceNow Keyboard Shortcuts.
  5. Quickly add attachments by simply dragging file to “Work notes” area.

    Attaching files by clicking the paperclip icon and then browsing for the file is a slow process. You can
    simply drag and drop the file you want to attach into the Work notes box.

SQL DECLARE and SET datetime

This article discusses the DECLARE statement in SQL, which you can find the official documentation here: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/declare-local-variable-transact-sql?view=sql-server-2017

The DECLARE statement is used in a SQL statement to declare a variable. The declared variable can then be set using SET statement. Once set, the declared variable can be referred by the SELECT statement.

The DECLARE statement can also be used to declare a DATETIME and the SET statement can modify this DATETIME with DATEADD. This allows us to avoid dealing with JavaScript datetime variables.

For our case, we wanted to query all individuals that were set to turn 18 years old within a year.

In order to do this, we first ‘DECLARE’d the variables we would need and modified them using SET:


Note: First argument of DATEADD function can be any accepted SQL interval (year,month,week,day,hour,second,etc.)

Now that our 3 variables had been set, we were able to refer to them in the WHERE portion of the SELECT statement:

Full query with results:

By specifying the search range using DECLARE and SET, we are able to query the DOBs of just those users that are set to turn 18 years of age within a year of the query date.