Clear global customization cache

Here is a refresher on how to clear global M3 personalizations for non-administrators:

mforms://_command/?value=clear custcache

M3 personalizations

I am currently doing maintenance of M3 personalizations (hyperlinks, conditional styles, shortcuts, labels, tab orders, views, show/hide fields, and scripts), for all users (role GLOBAL_CUSTOMIZATIONS):
2

Maintenance

To change a personalization, either I use the Personalization Manager (for that I need the administrator role), or I change the file with a text editor directly in the MNEDATA folder (for that I need read/write access to the MNEDATA folder):
4
3

Clear customization cache

To clear the global customization cache, I use the Net Extension Manager > Clear customization cache (for that I need to be administrator):
5

Non-administrators

There is another environment where I am not administrator, there is no Net Extension Manager, and yet I need to clear the global customization cache. I realized I can simply execute the clear command, and it will clear the global customization anyway:

mforms://_command/?value=clear custcache

6

7

That’s the actual command behind the Clear button.

I traced the calls, from the Smart Office Dlls, to the MNE server Java classes, and it seems to really do a global clear, even without being administrator:

MForms.dll
MForms.Services.Applications.Admin.NetExtensionManager.IComponentConnector.Connect
MForms.Services.Applications.Admin.NetExtensionManager.OnClickClearCustCache

mne-app-10.2.2.0.jar
com.intentia.mc.command.RunCmd.doChangeEnvironment
com.intentia.mc.mgmt.ServerMgr.clearCustomizationCache
com.intentia.mc.customization.CustomizationManager.clearCentralCache

Maybe there’s a good explanation for the lack of authorization; or maybe I am administrator somewhere afterall. I haven’t read the administrator’s guide or looked any further.

That’s it!

Related posts

Make field mandatory

Here is a refresher of a neat feature in Infor Smart Office to make a field mandatory; it should be used instead of developing scripts.

Right-click on the desired field, and select Personalize > Enable Mandatory:

It will also apply to H5 Client:
2

Note: this personalization will not apply to other entry points such as M3 API or M3 Web Services (MWS) of type M3 Display Program (MDP). If you need to enforce the constraint there, you must do an M3 Java modification.

That’s it.

Missing columns? Restore columns

Somehow I am doing a lot of maintenance and troubleshooting of Infor Smart Office Mashups these days.

Missing columns

Today I had the unusual case of a user that was missing many columns in a list. The list is an <m3:ListPanel> of STS300/B1 in a Mashup. The problem did not occur when running STS300 directly, it did not occur for other users, and it did not occur with his userid on another computer. The problem occurred only with the specific combination of his userid, on his computer, on that M3 program, in that Mashup. Good luck troubleshooting that.

Here is an illustration of missing columns, shown here simply with CRS046/B:

Troubleshooting in vain

We wasted time troubleshooting in vain: the XAML source code, the sorting order, the view, personal views. the filters, the personalizations, the Bookmark in MTS043, the M3 program Java source code, the interactive subsystem, and we uninstalled/re-installed Smart Office, without progress.

Duh, restore the columns

Then, the user selected right-click > Restore Columns in the list, and that fixed the problem [FACEPALM] It is one of those little things that are easy to forget. We do not know how 32 columns accidentally went missing in the first place, it is not something one does by mistake without remembering. That is still a mystery.

Anyway, here is the reminder for next time:

User specific data storage

Where are those settings stored you ask? They are stored in the file MFormsColumnDefinitions.xml in the user specific data storage path, and are persisted to disk when the user logs out of Smart Office:
b5

And those settings are loaded and saved in MForms.List.ListColumnManager:
b6

That’s it.

Please comment, like, subscribe, share, author. Thanks for your support.

MForms Automation / URI generator

Here is a tool that generates Smart Office URI to execute MForms Automation. The tool is interesting to launch M3 programs with parameters from third-party applications. For example, I could have an email message with a link in that launches OIS300/B to list the Orders of a specific Customer number, in one click, without having to type any Customer number or Sorting order; the URI would switch to Smart Office if it’s already open, or it would launch it and ask for user/password otherwise.

MForms Automation URIs have the syntax: mforms://_automation?data=xml where xml is the URI-encoded version of the MForms Automation XML. I call it the internal URI. In addition to MForms Automation, the internal URI could also be a Bookmark URI with a syntax like: mforms://bookmark/?program=MMS081&tablename=MITBAL&keys=MBCONO,100,MBWHLO,AA1,MBITNO,+9D8353.

That internal URI can be launched from a third-party application (i.e. not Smart Office) if it’s embedded in a second URI (the Smart Office installation point) with the syntax: http://server:port/LSO/LawsonClient.application?server=https://server:port/ESM&task=internalUri where internalUri is the internal URI that is also URI-encoded. I call it the external URI.

To access the URI generator, visit: http://ibrix.info/mfa/