MForms Automation in Mashups

Let’s explore MForms Automation in Infor Smart Office Mashups.

MForms Automation

MForms Automation execute sequences of steps through M3 programs, e.g. run CRS610, enter a customer number in field W1OBKV, and press ENTER:

MForms Automation Builder is located at C:\SmartOfficeSDK\External\M3\Tools\MFormsAutomationBuilder.exe:

In Mashups

To use them in Mashups, we tell MForms Automation Builder to create an MForms URI encoded, we copy/paste the URI into the desired property in Mashup Designer which will XML-encode it, and we carefully replace the hard-coded values by parameter names in curly braces with the corresponding parameter binding:

Smart Office will do the variable substitution, and will execute a CMDTP=RUN with the XML:

I find the whole process of URI-encoding, XML-encoding, and curly brace replacement too error-prone and time consuming for routine maintenance, so I found an alternative.


I find it easier to preserve the original XML in a CDATA section in the XAML:

Note: We must omit spaces between the CDATA start and XML declaration; the rest can be indented.

I find this alternative to be more elegant and easier to maintain than the double-encoded surgical process above.

Let me know what you think in the comments below.

That’s it.

260 subscribers!

Published by


ex- M3 Technical Consultant

7 thoughts on “MForms Automation in Mashups”

  1. Good post. My preference is to use the second method as it is easier to read.

    Does it make any difference putting the “mforms://_automation/?data=” part of the MForms string outside the CDATA tag? All of mine it’s inside the tag.


    1. Hi Scott,

      I don’t think the order makes a difference.

      One problem I forgot to mention is the lack of URI-encoding with this second method, but it doesn’t seem to have any impact, the result works equally well.

      Question: how did you think of using this second method? I’ve only seen the first method. If it’s already mentioned in a document somewhere, I will make sure to read the rest of the document for other good stuff.


  2. Thanks for the Post above,
    It helped me a lot.

    My only question for the moment is that does mforms automation builder have the ability to get Values from fields rather than set .
    For example:
    If I am on crs610 (customers open),
    I select a customer
    could I use the mforms automation builder to get the Customer number(CUNO) from the selected customer
    Open OIS300 (Customer Orders) and then filter by the customer number?

    Any help is appreciated.


    1. Hi, thanks for your effort spreading the knowledge…
      I have question, scenario : we have a Mashup which lists some lines, let’s say Distribution Order proposals.
      I’ve created a button which releases the selected proposal through MForms automation. But if I want to select multiple rows and release them, how should I implement it to my button? It only works one by one…


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s