Small Change for Customizations in Infor CRM (Saleslogix) Mobile 3.3 and Higher

There is a small change needed for mobile customizations in Infor CRM (Saleslogix) Mobile version 3.3 and higher. It’s a small change, but one that will prevent your customizations from loading if you don’t make it.

The Problem

You’ve probably seen customization ApplicationModules before that look like this:

define('Mobile/CustomApp/ApplicationModule', [
    'dojo/_base/declare'
], function (
    declare
) {
    return declare('Mobile.CustomApp.ApplicationModule', Sage.Platform.Mobile.ApplicationModule, {
        loadCustomizations: function () {
            this.inherited(arguments);

            // customizations here
        },
        loadViews: function () {
            this.inherited(arguments);

            // load custom views here
        }
    });
});

The problem comes from the line:

this.inherited(arguments);

This line isn’t really supposed to be there although it has become sort of the standard for custom ApplicationModules. Calling this.inherited there has been around since the beginning of mobile but the custom ApplicationModule isn’t supposed to be calling it. The base ApplicationModule from argos-sdk does call it, and it should, but custom ApplicationModules are loaded side-by-side through the modules array. So, each custom ApplicationModule that calls this.inherited in loadCustomizations and loadViews calls the the base ApplicationModule loadCustomizations and loadViews. If you have multiple custom ApplicationModules these are getting called multiple times. This didn’t really matter before since the base ApplicationModule in argos-sdk wasn’t registering any customizations itself. However, that has changed in version 3.3 and the base ApplicationModule now registers the configure quick actions view. So, in version 3.3, when a custom ApplicationModule calls this.inherited it calls the base loadViews function and attempts to register the configure quick actions view all over again. This will cause an error that you’ll see in the console stating that it cannot register the view with the ID “configure_quickactions” because it is already registered.

The Solution

The solution here is pretty easy. Just remove the call to this.inherited(arguments); from the loadCustomizations and loadViews functions in your custom ApplicationModule. That’s it. After all, it was never supposed to be there in the first place. Before it didn’t matter and caused no problems, but in version 3.3 you’ll see this issue.

Note, this really applies to all versions (removing the call to this.inherited from you ApplicationModule). It never caused an issue but was not supposed to be there in any previous version either. 

ABOUT THE AUTHOR

Ryan Farley

Ryan Farley is the Director of Development for Customer FX and creator of slxdeveloper.com. He’s been blogging regularly about SalesLogix since 2001 and believes in sharing with the community. He loves C#, Javascript, Python, web development, open source, and Linux. He also loves his hobby as an amateur filmmaker.

Submit a Comment

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) news and product updates!

You have Successfully Subscribed!