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

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 (https://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/


  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.

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.

For those who spend a large part of their day behind a screen, keyboard shortcuts are great and the time saved by using these shortcuts definitely accrues over time. You are losing precious seconds of productivity every time you lift your hand off the keyboard to use the mouse instead. Effectively using keyboard shortcuts can cut that wasted time down.

Most of us are already familiar with the most common keyboard shorts such as cut/copy/paste/undo/redo (ctrl+x/c/v/z/y).

At one point or another, we all have probably seen some type of chart online that shows all the possible keyboard shortcuts. This list is a bit daunting to take in at once and difficult to commit to memory unless you actually sit down and make it a point to memorize all the shortcuts. Even then, I find that it quickly fades from memory if not put to regular use.

Therefore I wanted to create this short list of keyboard shortcuts that I actually use in my daily work:

  1. Windows key + Arrow direction key – Snaps app window to left/right side/corner of screen

    Examples:
    Windows key + Left arrow direction key
    – left side


    Windows key + Right arrow direction key – right side


    Windows key + Left arrow direction key then Windows key + Up arrow direction key – left upper corner

    Windows key + Left arrow direction key then Windows key + Down arrow direction key – left lower corner

    Windows key + Up arrow direction key – Maximize window
    Windows key + Down arrow direction key – Minimize window

    The most common use case for me is when I want to compare two similar files. For example, sometimes I pull up an erroring work unit log on the left side and a normal, functioning log on the right to compare the two and see where the path diverges. There are also times that I will compare an old backup file to a new modified one to visualize the changes.

  2. Windows key + E – Opens File Explorer
  3. Windows key + M – Minimizes all windows (useful for quickly accessing desktop shortcuts)
    Windows key + Shift + M – Restores all minimized windows
    Windows key + Comma – Temporarily peek at the desktop
  4. Windows key + S – Opens Windows search.
    Simply start typing the program/file name after pressing Windows key + S. Useful for opening programs/files quickly.
  5. Ctrl + Shift + V – Paste as plain text. I use this at least a couple of times a day. This is especially useful when composing emails with copied snippets from other sources.Ctrl + V:


    Ctrl + Shift + V:

The Lawson Jobinteg command is powerful for clearing up orphaned jobs that may be causing users issues. This is usually in the form of a job that can’t be deleted or is corrupted and likely caused from patches and or upgrades to the form or job.

Disclaimer: For v10, a patch may also be needed to fully resolve some jobs when running the jobinteg command.  The patch is available for LSF 10.0.6 and 10.0.7 only, as of 8/2015 and may have changed since then.

jobinteg -v

Brings back all bad records and NTIDs tied to them.  This is useful if you need to create a report to analyze which potential jobs are corrupted/bad or get approval to delete them.

jobinteg -t

Brings back summarized report of all bad jobs.

jobinteg -d

Wipes all orphaned/corrupt jobs listed in the summary or full report.  This usually resoles most jobs that receive errors upon inquiry or running them.

Hope this was helpful!

In ServiceNow there are a ton of buttons when you first start using it and it can be overwhelming and easy to ignore them at first.

When a ticket finally makes it to you, it might be in a hierarchy of other ticket types (requests, changes, tasks, incidents).  For my example it’s under the “Request Item” field.

The Request Item in our case is another ticket type in the hierarchy and usually has more detailed of what the task is to complete this ticket.  A useful button that you may overlook is the “I’ button which is essentially an Info button with tons of helpful information.

This button shows a plethora of information that may be relevant in resolving the ticket or task and essentially allows you to view more specifics about the ticket without just searching for it elsewhere in ServiceNow.

All these Info buttons could be useful, some give detailed user information while others give location info.  It saves a bunch of time. Hope this was helpful!

Often people have spreadsheets that they are using for data gathering and don’t want to change the familiar format to accommodate a Lawson Upload.  Especially when it is a multi-tab spreadsheet that data can change depending on which tab you are pulling data from. No problem. Using advanced Excel techniques can pull the information from the specified tab in a format needed for uploading.

In this example, time attributable to projects is entered on a multi-tab spreadsheet one tab per period.

As the tab changes on the Instructions tab, and after the macro finishes by clicking n the Create Upload button, the total count and amount can be validated that the process worked as expected.

Each tab can have a different order of users and/or different active projects across the top.

As the tab changes on the Instructions tab, and after the macro finishes by clicking n the Create Upload button, the total count and amount can be validated that the process worked as expected.

The macro extracts the non-zero time entries and formats the data in a way that the Upload Wizard can then load the data into Lawson. 

We normally write stored procedures for nearly any transaction that has more than one component to it. For example, creating an invoice record that has many lines would require you to insert a record into a header table, and multiple records into a detail table. But what happens if you insert the header and one of the detail records fails to get inserted properly. In these cases, you’re usually greeted by a SQL Exception and error out. However, depending on how you write your stored procedure, you might now have one header record and some of the detail records in the database. In some cases this might be okay, but in most cases it is not and the preference would be to avoid inserting any of the records if even one of them fails. Luckily MySQL provides a really great solution for this problem.

You simply define the action to be taken once the exception is encountered, in our case a rollback, and then you start and end your transaction in between a “START TRANSACTION” and “END” directive as shown below:
BEGIN

    .. Declare statements ..

    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
    BEGIN

          ROLLBACK;
    END;

    START TRANSACTION;

        .. INSERT  ..
        .. UPDATE  ..
        .. SELECT  ..

    COMMIT;
END

Grav is an open source flat-file CMS that we use for client documentation.

Requirements:

  1. Web Server (Apache, Nginx, LiteSpeed, Lightly, IIS, etc.)
  2. PHP 5.5.9 or higher

Advantages of using a Grav CMS for documentation:

  1. SEARCH bar: Can search entire collection of documentations for a search term instead of going through each doc file individually
  2. Not reliant on database: Flat-file content management system means that the data is stored in folders rather than a database = fast loading
  3. Easy to maintain since all data in local folders
  4. Simple HTML format written with Markdown syntax (https://nogalis.com/docr/how-to-use-docr to learn more about Markdown)
  5. Many useful plugins freely available (https://www.nogalis.com/2018/07/27/grav-a-modern-flat-file-cms for more information on plugins)
  6. User authentication and custom user privileges

Documentation Sections


  1. Introduction – Screenshot of the IPA flow and a short description about what it does
  2. General Data Flow – Box diagram showing step-by-step what is happening in the flow. Also accompanied by a paragraph explanation
  3. Components Table – A table that lists all input/output files, databases, scripts, triggers, jobs, and configuration variables
  4. Dependencies – The files, triggers, jobs, or SQL/server connections required for the flow to function
  5. Scheduling and Triggers – How/when the flow gets triggered
  6. Recovery – This section provides instructions on how to manually execute the steps of the flow if it fails. Each step here represents a box in the General Data Flow box diagram.
  7. Archiving – Table showing archived files and their archived locations
  8. Notifications – Details of the notifications sent by the flow
  9. Troubleshooting – General tips for troubleshooting
  10. Maintenance – Maintenance needed by the flow (usually involves cleanup of archived/done files)
  11. Security – Overview of user permissions and connection credentials needed for the flow
  12. Key Contacts – The person to contact for questions about the flow/documentation
  13. Related Files – File uploads related to the flow (these are able to be viewed/downloaded from the page)

For full examples, please visit https://nogalis.com/docr/demo_documentation