MES Main Menu Customization

Hello All,

I have searched high and low on here and on google as well for the answers that i am trying to find.

I am trying to add a few things to our MES Screen, mainly the main menu, I cannot get menu maintenance to pop up so that i can start to mess with other menu items. I have found countless customization’s on the subject and then deployments but i cannot successfully get it to work.

I have followed quite a few forum topics and i have tried the following,

i have tried to create a menu process for the menu.mes.dll and then i tried to search around for it in the customize /mesc version of MES but i cannot figure out what i am missing to get this to work.

If you run the executable with /MESC, developer mode is turned on. Once you do this, to customize the form, right click and select Customize. I’ve never needed to customize the main mes menu form…I think the buttons are turned off and on based on user permissions. Also, I don’t know what would tell Epicor to launch the main menu screen with the new customization, but you might have to mess with the .sysconfig file to tell it to launch the customized form

tanner, i can get the customization version of MES to run but i need to be able to add the specific trackers to MES, RMA Tracker, Customer Tracker, and Serial Number Tracker with Customization’s.

However i don’t know where to really start to get this moving as everything is mostly about how to deploy customization’s.

CodaBears has a training on MES customization. I know we had people go through their course. Would be a potential resource.

@Woko Is there already a way to get to these trackers from the MES screen? If there is, you just need to click on the button to see the menu id it is calling since developer mode shows you the menu id and process key. Then based on that menu id, you should be able to locate the menu item being called in menu maintenance and attach the customization to the menu id or enter a record in Process Calling Maintenance to map it to the menu item that has the customization you want it to call.

If it is not, it could be quite a bit more involved. Unfortunately, I have not done anything more than that when it comes to customizing MES. You may want to take @chaddb’s advice and look for training. Hope this helps


It’s a pretty involved process to edit and deploy the MES screens. I’ve not actually edited them. Our SE does that. I just deploy them.

I can’t tell what exactly you’re trying to do. But I’ve customized the MES Menu, mainly to change the programs launched by a couple buttons and to add shift descriptions to the clock-in dialog. Does any of that sound like what you want?


I read wrong at first I think… I think this is what you are asking now and how we call items in MES
First you can call the screen using code like below. In this case I am opening UD101 on a button click.


Then in Menu Maintenance under Processes Create a new item and link to the form/customization

Finally open process calling maintenance to input the form and also the menu ID

It’s been a while since I added a button. If I remember correctly, MES will handle the LaunchForm for you if you Just add your button and then do this in your InitializeCustomCode.

Lets pretend I want to name mine UD_MassIssue

this.oTrans.MESControlView.dataView.Table.Columns.Add("UD_MassIssue", typeof(bool));
this.oTrans.MESControlView.dataView.Table.Columns["UD_MassIssue"].ExtendedProperties.Add("MenuID", "XISSUTST"); // XISSUTST is the Menu or Process ID from Menu Maintenance
//Not sure if you need MESTab, cant remember what I was doing in this snippet
this.oTrans.MESControlView.dataView.Table.Columns["UD_MassIssue"].ExtendedProperties.Add("MESTab", "XISSUTST"); // XISSUTST is the Menu or Process ID from Menu Maintenance
this.oTrans.MESControlView.dataView[0]["UD_MassIssue"] = false;

RowRule UD_MassIssue = new RowRule("UD_MassIssue", RuleCondition.Equals, false);
UD_MassIssue.AddAction(RuleAction.AddControlSettings(this.oTrans, "MESControl.UD_MassIssue", SettingStyle.ReadOnly));

Once you have added this code and you restart your MES Form then add your button, you will be able to EpiBind your button to MESControl.UD_MassIssue and when you click it, magic happens. (atleast back in 10.1.500.31)

The RowRule applied will drive the state by managing true/false, if user is clocked in or not.


I cant remember if the RowRule is correct or not, worst case remove the RowRule from above code and just use the Row Rule Wizard to setup something to make the MESControl.UD_MassIssue field readonly, I know MES Does the following

// This is the way MES does it - use this snippet to determine your flag
public bool isLogged
        if (this.oTrans.LaborHedView.HasRow && this.oTrans.EmpBasicView.dataView.Count > 0)
            return true;
            return false;
1 Like

Also note, you might not be able to open up certain screens with the MES User License, the types of menu names is restricted. So a Ice.UI namespace might not be allowed, unless your user is running the Full Paid License.

If I recall the list of names and logic is in Ice.Lib.RestrictedLicenseLib.dll in your Client Folder.

I have these notes from E9 atleast (maybe it changed):
From E9:

First Check: Epicor Checks a DataCollection Programs List to make sure your Assembly is Not in the Allow List
Second Check: Epicor Checks that your Assembly Name does not start with EPICOR.MFG.UI.HH
Third Check: Epicor Checks that your Assembly Name does not start with EPICOR.MFG.UIRPT
Fourth Check: Epicor Checks that your Assembly Name does not start with EPICOR.MFG.UI.UD

Maybe it changed in 10.2, try it.

Kind of, i think i am fairly poor at describing it, I want to add RMA Tracker to our MES Main Screen and i think adding it to a button is what i want but i haveno clue on how to make this work.

when you do the menu maintenance is this in regular Epicor Menu Maintenance or is this in MES Menu Maintenance. because i don’t have MM in MES.

This is done in regular Epicor Menu Maintenance

followed that part now how does one get it to pop into the MES Screens for selection. Like on a button.

Add a button to the MES screen in customization. Then in the Wizard for Events choose the button and the click event. Once that is updated to your code put this in the clicke event.

Should look like below except for the form you want to open.

1 Like

Followed and then i changed the menu ID in the sys config to try and pull the customized version and i got prompted with this. image

Post a screenshot of the item in Menu Maintenance.

When i tried using the UDMESRMA in the config file it didnt open anything or say anything on the customization.

At the bottom where it says customization you need to select the MES customization with the button that you created in MES. That will tell it to load that version of the MES customization with UDMESRMA in the sysconfig file.

I kind of don’t have that option.