Embedded Customization
Embedded Customization
Embedded Customization
Embedded Customization
Course
10.2.600
Disclaimer
This document is for informational purposes only and is subject to change without notice. This document and its
contents, including the viewpoints, dates and functional content expressed herein are believed to be accurate as of its
date of publication. However, Epicor Software Corporation makes no guarantee, representations or warranties with
regard to the enclosed information and specifically disclaims any applicable implied warranties, such as fitness for a
particular purpose, merchantability, satisfactory quality or reasonable skill and care. As each user of Epicor software is
likely to be unique in their requirements in the use of such software and their business processes, users of this document
are always advised to discuss the content of this document with their Epicor account manager. All information contained
herein is subject to change without notice and changes to this document since printing and other important information
about the software product are made or published in release notes, and you are urged to obtain the current release
notes for the software product. We welcome user comments and reserve the right to revise this publication and/or
make improvements or changes to the products or programs described in this publication at any time, without notice.
The usage of any Epicor software shall be pursuant to an Epicor end user license agreement and the performance of
any consulting services by Epicor personnel shall be pursuant to Epicor's standard services terms and conditions. Usage
of the solution(s) described in this document with other Epicor software or third party products may require the purchase
of licenses for such other products. Where any software is expressed to be compliant with local laws or requirements
in this document, such compliance is not a warranty and is based solely on Epicor's current understanding of such laws
and requirements. All laws and requirements are subject to varying interpretations as well as to change and accordingly
Epicor cannot guarantee that the software will be compliant and up to date with such changes. All statements of
platform and product compatibility in this document shall be considered individually in relation to the products referred
to in the relevant statement, i.e., where any Epicor software is stated to be compatible with one product and also
stated to be compatible with another product, it should not be interpreted that such Epicor software is compatible
with both of the products running at the same time on the same platform or environment. Additionally platform or
product compatibility may require the application of Epicor or third-party updates, patches and/or service packs and
Epicor has no responsibility for compatibility issues which may be caused by updates, patches and/or service packs
released by third parties after the date of publication of this document. Epicor® is a registered trademark and/or
trademark of Epicor Software Corporation in the United States, certain other countries and/or the EU. All other
trademarks mentioned are the property of their respective owners. Copyright © Epicor Software Corporation 2020.
All rights reserved. Not for distribution or republication. Information in this document is subject to Epicor license
agreement(s).
ED834905
90521-10-9236-583101001
10.2.600
Revision: March 23, 2020 8:35 p.m.
Total pages: 75
course.ditaval
Embedded Customization Course Contents
Contents
Embedded Customization Course.........................................................................................6
Before You Begin....................................................................................................................7
Audience.........................................................................................................................................................7
Prerequisites....................................................................................................................................................7
Environment Setup..........................................................................................................................................7
Workshop Constraints..............................................................................................................................8
Customization Overview........................................................................................................9
Embedded Customization Model........................................................................................11
Form Customization.............................................................................................................13
Saving Customizations...................................................................................................................................14
Customization Tools Dialog............................................................................................................................15
Workshop - Verify Customization Rights.................................................................................................16
Workshop - Select a Program for Customization.....................................................................................17
Workshop - Hide a Control.....................................................................................................................18
Add a Control................................................................................................................................................19
Workshop - Add a Group Box.................................................................................................................19
Add a Text Box................................................................................................................................21
Add a Label and Link it to the Text Box............................................................................................22
Test the Customization....................................................................................................................22
Add an UltraCombo Control..........................................................................................................................23
Workshop - Add an EpiUltraCombo Control...........................................................................................23
Add a Label for the New Ship Via Field............................................................................................23
Add an EpiUltraCombo Field............................................................................................................24
Use the Simple Search Wizard.........................................................................................................24
Use the Form Event Wizard..............................................................................................................25
Test the Customization....................................................................................................................25
Add an UltraGrid Control...............................................................................................................................27
Workshop - Add an UltraGrid Control.....................................................................................................27
Modify a Sheet and Add the UltraGrid Element................................................................................27
Select Columns to Display................................................................................................................28
Test the Customization....................................................................................................................29
Customization Form Wizards...............................................................................................30
Rule Wizard...................................................................................................................................................30
Workshop - Add a Rule...........................................................................................................................30
Create a Row Rule...........................................................................................................................30
Create Rule Actions.........................................................................................................................31
Test the Rules..................................................................................................................................32
Image Column Wizard...................................................................................................................................34
Workshop - Add Image Column.............................................................................................................34
Launch the Wizard..........................................................................................................................34
This course explores the customization tools embedded within the Epicor ERP application. Unlike personalization,
users can customize a form and then make it available to multiple users in a company.
Through the customization tools, users can add/remove data elements, modify component properties, create
custom C# code that runs before and after data field modifications, and other modifications that better match
the Epicor ERP application with the requirements of your business or industry.
Hands-on workshops guide you through the customizations and help you understand the tools used to make
these customizations.
Upon successful completion of this course, you will be able to:
• Understand the benefits of customizations for specific business requirements.
• Familiarize yourself with the customization tools.
• Understand how you can customize programs using the C# programming language.
• Use customization to hide fields, change properties of text boxes, and add interface elements.
• Use the Customization Form Wizards to add rules to make an action happen when a predefined condition is
true and execute custom rules when a form opens or closes, and other key features.
• Review how foreign key views provide joins to link related tables together for display in a customization.
• Customize and deploy a user defined table from the Epicor ERP application.
• Deploy customizations to companies and users.
Read this topic for information you should know in order to successfully complete this course.
Audience
Prerequisites
To complete the workshops in this course, the necessary modules must be licensed and operating in your training
environment. For more information on the modules available, contact your Epicor Customer Account Manager.
It is also important you understand the prerequisite knowledge contained in other valuable courses.
• Foundations Agenda Courses on Epicor Learning Center - These courses describe logging in to Epicor
ERP, using menus and toolbars, working with Tree view and sheets. They give you a quick overview how to
enter data in Epicor ERP, use searches to find data and work with grids. The courses in this agenda teach you
to personalize your application, print forms and reports and use trackers to view information.
• Personalizing Epicor ERP to Make Yourself at Home - This course will teach you how to launch programs
easily, display their tools differently and even change their colors. The programs that you use regularly will be
customized to your liking. You will learn how to change a program in any manner that will make you feel at
home in Epicor ERP.
• Database Concepts Course - This course reviews the table and field name identification process using Field
Help, Customization Tools, and the Data Dictionary Viewer functionality. It also describes table linking
procedures and requirements as well as join type definitions and specifications.
Environment Setup
The environment setup steps and potential workshop constraints must be reviewed in order to successfully
complete the workshops in this course.
Your Epicor training environment, in which the Epicor demonstration database is found, enables you to experience
Epicor functionality in action but does not affect data in your live, production environment.
The following steps must be taken to successfully complete the workshops in this course.
1. Verify the following or ask your system administrator to verify for you:
• Your Epicor training icon (or web address if you are using Epicor Web Access) points to your
Epicor training environment with the Epicor demonstration database installed. Do not complete
the course workshops in your live, production environment.
Note It is recommended that multiple Epicor demonstration databases are installed. Contact
Support or Systems Consulting for billable assistance.
• The Epicor demonstration database is at the same version as the Epicor application. The
demonstration database is installed from the Epicor Administration Console using the "Add Demo
Database" command under Database Server. See Epicor ERP installation guides for details. If you are an
Epicor Cloud ERP customer (and have licensed embedded education), the demonstration database is
installed for you.
• Your system administrator restored (refreshed) the Epicor demonstration database prior to
starting this course. The Epicor demonstration database comes standard with parts, customers, sales
orders, and so on, already defined. If the Epicor demonstration database is shared with multiple users
(that is, the database is located on a server and users access the same data, much like your live, production
environment) and is not periodically refreshed, unexpected results can occur. For example, if a course
workshop requires you to ship a sales order that came standard in the Epicor demonstration database,
but a different user already completed this workshop and the Epicor demonstration database was not
restored (refreshed), then you will not be able to ship the sales order. If you are an Epicor Cloud ERP
customer see section below.
2. Log in to the training environment using the credentials epicor/epicor. If you are logged in to your training
environment as a different user, from the Options menu, select Change User.
Note To refresh your Epicor training data, enter a support ticket in EpicCare and include your site ID.
Workshop Constraints
This course is designed for a user with customization rights. If you do not have customization privileges, contact
your system administrator to add these privileges to your user account. System administrator rights do not allow
you to create personalizations and customizations; these rights are separate options on your user account.
When you finish this course, please make sure the customizations you created are either deactivated or removed.
Removing/deactivating these customizations ensures the appropriate default training environment is available
later for other courses.
Customization Overview
You can customize most programs within the Epicor ERP application. A powerful tool, customization can save
you time and money as you use these modifications to directly match the Epicor ERP application to your business
needs.
The Epicor ERP application offers a variety of customization tools. You can add controls such as text boxes and
lists, which are then linked to a data source you can select. You can also create new sheets and make them
available to all users in a company, specific users, and even different companies. You can also activate your own
customized C# or VB.NET programming code through events or new buttons and use this feature to run processes
unique for your company.
Note Customizations can potentially be used by everyone within your company, so you need to make
sure these customizations work properly. If you want to significantly customize the application, consider
working with your consultant.
The application supports a multi-layer customization model within the interface framework.
This toolset uses the following multiple layer hierarchy. Each layer is a parent for the following layer, so the
customizations can inherit interface and code changes from the previous layer in this hierarchy:
1. Productization -- This layer supports product variants so the application can meet requirements for each
Epicor user. These customization layers do this by providing an interface specifically tailored to user size and
type. These layers are only developed by Epicor and Epicor partners.
2. Verticalization -- Through this layer, the application can support the terminology, data fields, and data
flow needed for a specific industry vertical. Each verticalization can be packaged and delivered as a variation
from the base product. These layers are only developed by Epicor and Epicor partners.
3. Customization -- Use the customization layer to modify aspects of the user interface and functionality to
match a business need. By leveraging these tools, you can model, track, pilot, deploy, and roll out changes
to specific users, specific companies, and multiple companies. The embedded customization engine resides
in two code sections. One section resides in each User Interface (UI) application form and the other section
resides in the business application layer. The UI customization component acts like an Integrated Development
Environment (IDE). When you customize a program, you can:
• Add form controls like tabs, panels, text boxes, check boxes, grids, labels, buttons, and so on. You bind
these custom controls to a <table>.<column> you select on the control properties.
• Modify control properties such as Visible, Enabled, Location, Size, Text, and so on.
• Add or remove data columns to or from grids.
• Enter C# code that runs before or after data field modifications, before or after data view changes, at
form Load, and at form Exit. The code has access to the active dataset as well as the extended column
and row properties. Additionally, the code can access data within the database.
4. Personalization -- If users have personalization rights, these individuals can further personalize a
customization to match specific requirements and preferences. These users can add grid columns, arrange
grid columns, and change field properties such as color and font. Personalizations do not affect the data or
application requirements.
5. Localization -- To complete the customization functionality, you can localize the interface to display text
strings in a selected language. You can create multiple language variants and then deploy these Localization
layers to specific users.
Because Productizations and Verticalizations are developed either by Epicor Software Corporation™ or by an
Epicor partner organization, you cannot change these layers. The personalization and customization layers are
XML files placed on top of the existing base code, productizations, and/or verticalizations. When a program has
an embedded customization, personalization, and/or localization layer, the XML file contains the modifications
to determine how the user interface displays. This hierarchical layering of customizations ensures the integrity of
the source code.
If you need to create and integrate new entry programs, reports, and/or processes, consider purchasing the SDK.
The SDK is beyond the scope of this course.
Form Customization
When you customize a form, you change how the program displays and interacts with a user.
Customization is another layer you create for a specific form, such as productizations and verticalizations. Each
form can have multiple layers of changes, and the customization engine resolves all layers through the stack from
productization to verticalization to customization to personalization. For example, if you add fields or sheets to
a form to support a verticalization and then apply a customization on top of this verticalization, the Epicor
application applies each layer sequentially. This means a subsequent change to the verticalization layer does not
invalidate the customization unless there is a direct conflict of screen space or dataset columns.
If you select a customization, the form opens with the selected customization. If you do not select an existing
customization and click OK, you can create a new customization for the form and save it under a new name.
Conversely, if you want to ensure you are testing the form with no customization, regardless of the menu setting,
select the Base Only check box at the bottom. This causes the default form to display after you leave this window.
Selecting this check box also causes the Available Layers section to be disabled.
Saving Customizations
You can also use this window to indicate if the current project is a Work in Process (WIP). When you assign the
WIP status to a customization or localization, it is not available to other users. Use this feature to develop the
project within your own test environment, making sure that you do not release it before it is ready for use.
Customizations are automatically saved to the server. Because of this, you can make them available to users
within your network. Users can then enable the customizations and localizations they want to use. For more
information, refer to Application Help topic: Deploy Customization.
This window also displays the other customizations and localizations that currently exist for this form. You view
this information in the Existing Customizations grid.
Use the Customization Tools Dialog window to create and edit customizations for most programs in the Epicor
ERP application.
The Customization Tools Dialog window displays over the program you are customizing, and displays the sheets
and fields available for the program within its navigation pane. The navigation pane is on the left side of the
window.
You can manipulate most aspects of the program in this window. You can resize each control directly with the
mouse. When you select a control and click the Properties sheet, you also gain access to several aspects of this
control. Use the Properties sheet for this control to change the control's font, color, size, and so on. You can also
use these properties to bind, or link, the control to a specific database table and field.
The Tools menu contains the primary tools. One of the key features is the Toolbox, which you can use to create
the custom controls you need on new or current sheets. You can also use the Customization Options window
to create a new sheet or gain access to a previous customization.
A series of wizards are available which guide you through the customization process. These wizards help you
create new sheets, row rules, and other modifications. Using these wizards saves you time developing your
customization, so leverage this functionality as much as possible. These wizards are discussed in more detail later.
You can modify and add C# code in the Script Editor to further customize an interface to match your business
needs.
As you select various branches and nodes within the tree view, the Properties sheet displays the properties
associated with that field, sheet area, or sheet. Depending on the type of branch or node selected, a different
set of Properties display. As you select various items in the tree view, different Properties sets display the properties
associated with that field, sheet area, or sheet. Four properties sets are available: Control, Sheet, Grid, and List.
• Control Properties - This set contains the properties of the selected control. You can resize each control
directly with the mouse but you can use the Control Properties to change the font, color, location, size, and
other properties of the field, such as Visible or ReadOnly. Use this sheet to bind, or link, the control to a
specific data source and field.
• Sheet Properties - Use this property set to control sheet aspects. Manipulate the properties here to change
the color, location, size, and other properties of the sheet. You can also use these properties to manipulate
the appearance of labels.
• Grid Properties - Use this set to manipulate the properties of a specific grid. You can make certain columns
visible or invisible. You can also change the color, location, size, and other properties of the grid.
• List Properties - Use this set of properties to bind, or link, the selected drop-down list to a specific data table
and field. You can then select which options display on this list. You can also manipulate the selected color,
location, size, and other properties of the control.
1. Enter a value in the User ID field. If you are in an on-premise environment, enter epicor, and press Tab. If
you are in a Epicor Cloud ERP environment, be sure to enter your <site ID>- followed by epicor. For example
98315-epicor.
5. In the Select Customization window, review the Default Customization Programming Language
section. Verify the C# option is selected.
The Visual Basic option is available for backwards compatibility with older customizations. All new
customization should always use the C# language option.
6. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the SalesOrderForm icon and click OK.
Sales Order Entry displays. You can now create a customization using the base form.
3. In the Customization Tools Dialog window, set the Visible property to False and click back to the form.
The entire groupbox and its fields are now hidden during runtime.
4. In the Customization Tools Dialog window, from the File menu, select Save Customization or click the
Save button on the toolbar.
The Customization Save Dialog displays.
5. In the Name field, enter XXXNewHeader (where XXX are your initials).
6. In the Description field, enter XXXNewHeader (where XXX are your initials) and click Save.
The Customization Comment window displays.
7. Enter XXX Customization (where XXX are your initials) and click OK.
Use the Customization Comment window to enter helpful information you need for the customization. You
can review these comments in the Select Customization window when you select the customization layer.
Important If you want to prevent Customization Comment dialog from displaying, click Tools >
Options; select the Suppress Save Comment Dialog option. Now the Customization Comment
window no longer displays during the customization session.
8. Close the Customization Tools Dialog window and notice the Ship To groupbox no longer displays.
Add a Control
You next use the ToolBox to add a group box, textbox, and label to your custom form.
The ToolBox contains the options you need to add custom controls to sheets. When you select the ToolBox
option from the Tools menu, it displays on top of your current form. Click the buttons on the Toolbox to create
custom controls on the form such as text boxes, grids, and check boxes.
The following workshops demonstrate how you add the following ToolBox controls to your custom form:
• EpiGroupBox - Use this control to visually organize related fields, check boxes, and other controls. You place
these controls inside a group box, and then enter a title for the box that identifies the purpose for the fields.
• EpiTextBox - Through this control, you create a field on the form inside which users can enter or view data.
You use the epiBinding property to link the text box to a table and column.
• EpiLabel - Use this control to place a text label on the form that identifies a control. This text label can be
linked to another control so you can move the label and the control together as a unit.
For a complete list of the Toolbox controls, review the application help or the Epicor ERP Customization Guide.
In this workshop, add a group box to the Summary sheet in Sales Order Entry.
2. In the Customization Tools Dialog window, from the Tools menu, select ToolBox.
This displays the ToolBox you use to add controls to the sheet.
4. In the space where the Ship To group box used to be, click and hold the form, dragging right and downward
to draw the epiGroupBoxC1 in line with the Sold To group box.
You can use the handles (the white squares) on the control to adjust the size of the group box. However
you can adjust this group box to match the size of an existing group box by copying the Size property value.
5. If the Select Layer Type window appears, select Customization and click OK. This window only displays
for partner organizations that can create verticalizations and other custom layer types. If your company is
not a partner organization, this window does not display.
8. On the tree view, click the new epiGroupBoxC1 and paste the size parameters into the Size field.
This ensures the two group boxes are the same size.
9. Now select the Text property and change the group box caption to display New Header.
The caption for the new group box now displays this text.
10. Some properties are grouped together under other properties. Expand the Font menu.
11. Select the Bold drop-down list and select the True option.
12. Select the Italic drop-down list and select the True option.
15. Remain in Sales Order Entry and the Customization Tools Dialog window.
In this workshop, add a new text box to display the purchase order (PO) number.
1. If the Toolbox is not displayed, return to the Customization Tools Dialog window. From the Tools menu,
select the ToolBox.
2. On the Sales Order Entry > Summary sheet, in the Header section, click the PO text box.
3. In the Customization Tools Dialog window, notice the EpiBinding property field is set to
OrderHed.PONum.
The EpiBinding property field is the database table (OrderHed) and column (PONum) linked to this control.
5. Click inside the New Header group box; click and drag to place the text box on the form.
6. Return to the Properties sheet. In the Size field, enter 120, 20.
This causes the field to be 120 pixels long and 20 pixels high. This value is the standard size used for most
text boxes.
7. Remove the text characters inside the Data > Text field. This clears the default placeholder text, causing
the field to display as blank.
Tip This text is useful when you have multiple fields on your custom form, as they help you identify
each field. However before you release your customization, always be sure you remove the value
within the Text property.
8. You now link, or bind this text box to a <table>.<column> in the database. This binds the control so users
enter and display data from the selected column. Click the EpiBinding drop-down list.
The text box is now linked to the OrderHed.PONum table and column.
In this workshop, add a label for the new PO Number textbox and then link the label to the textbox.
5. Select the text box you added during the previous exercise.
6. Return to the Properties sheet. In the EpiControl section, locate the EpiLabel property.
7. Click the down arrow next to this property. Under the Suggested node, select epiLabelC1.
Tip Another way is to click the PO Number label, copy the name, and paste it into the EpiLabel field
of the text box.
8. The text box and the label are now linked together. Click and hold the text box, then move it. The text box
and the label move together as a unit.
11. Close the Customization Tools Dialog window and exit Sales Order Entry.
2. In the Select Customization window, select XXXNewHeader (where XXX are your initials) and click OK.
4. Now on the Summary sheet, locate the original Header group box. In the PO field, enter a number and
press Tab.
5. Verify the new PO Number field in the New Header section displays the same number.
An EpiUltraCombo is a drop-down list of valid entries. This topic demonstrates how you add the EpiUltraCombo
control to your customization and modify the additional properties used to define this control.
You can use combo boxes in two modes. You can create a combo box (drop-down) to contain custom values
that display on the drop-down list. This is helpful in situations where you do not need to save data to a bound
field in the database yet and you must select a certain string value from a list.
You can also create a combo box that uses the retriever functionality. Through the retriever, you pull values
through an adapter that contains values already defined in another program in the Epicor application.
Note EpiCombo objects, as well as most other controls available to you in Embedded Customization, are
Epicor versions of a series of .NET framework objects, including message boxes, combo boxes, data list
views, text boxes, and grids. Microsoft provides documentation on each of these objects in their .NET
Framework library available at http://www.msdn.com. To set additional properties or adjust the display
of a given object, you should understand the original .NET control which the Epicor control is based. The
.NET properties and methods available for the control are generally available when you use these objects.
In this workshop, add an EpiUltraCombo control to display ship via codes to the New Header group box you
created in Sales Order Entry.
You use UltraCombo controls to add elements to the form and display a list of valid options in a drop-down list.
3. Select XXXNewHeader (where XXX are your initials) and click OK.
The Sales Order Entry form displays.
6. In the Customization Tools Dialog window, from the Tools menu, select ToolBox.
8. In Sales Order Entry, in the New Header section, click the form and position the EpiLabel under the PO
Number label.
10. Return to the Properties sheet. In the Text field, enter Ship Via.
11. In Sales Order Entry, click the new Ship Via label.
4. Return to the Properties sheet. In the Size field, enter 120, 20.
5. Remove the text characters inside the Misc > Text property.
6. Now bind this EpiUltraCombo to the database. Click on the EpiBinding drop-down list and bind this control
to the OrderHed.ShipViaCode column.
7. Link the EpiUltraCombo to the Ship Via label. Click the EpiLabel drop-down list and select the epiLabelC2
option.
You next add a simple search to the form to pull in the Ship Via codes.
1. In the Customization Tools Dialog window, from the Tools menu, select Wizards > Customization
Wizards.
The Customization Code Wizard Dialog window displays.
2. In the Customization Code Wizard Dialog window, select Simple Search and click Launch Wizard.
The Simple Search Wizard displays. This wizard generates code to perform a ListData Search.
9. Click Finish.
Now use the Form Event Wizard to populate the EpiUltraCombo (drop-down list) with Ship Via values.
1. In the Customization Tools Dialog window, navigate to the Wizards > Form Event Wizard sheet.
3. Click the Right Arrow button to add the event type to the list.
The event you selected displays in the Select New / Existing Event Handler list.
6. Copy SearchOnShipViaAdapterFillDropDown() (located near line 50 in the code) text section; you
can find this text after the "private void" code statement.
7. Scroll down to the bottom of the sheet and paste the code you copied beneath the //Add Event Handler
Code comment and end the line with a semi-colon.
SearchOnShipViaAdapterFillDropDown();
3. Select XXXNewHeader (where XXX are your initials) customization and click OK.
4. In the Sales Order field, search for and select any Open sales order. Click OK.
5. Next to the new Ship Via EpiUltraCombo box, click the down arrow.
A list of valid options displays.
Grids display data in a column and row format so users can review multiple records at the same time. This topic
explains how to add an EpiUltraGrid control to your customization and modify the additional properties used
to define this control.
As with the other controls in the ToolBox, the UltraGrid is based on a member of the .NET framework called a
listview and it displays multiple, related pieces of information in a group.
Specify a datasource or table to bind the ultragrid to a source. Then use the Properties sheet for an UltraGrid
control to define the data fields that display when the dataset is retrieved from the database for view in the
UltraGrid.
In this workshop, add an EpiUltraGrid element for release details to the Summary Header section.
Grid elements allow multiple related pieces of information to display in a group.
3. If you are asked to clear data from the form, click Yes.
The Customization Tools Dialog window displays.
4. Select the Header group box and set the Visible property to False.
5. Select the Counter Sale group box and set the Visible property to False.
6. Select the Summary group box and set the Visible property to False.
7. From the Toolbox, select and add a new EpiGroupBox to the left inside the empty space just created by
hiding the Group boxes.
8. Set the Location properties of the new EpiGroupBox to 16, 228 and the Size to 833,173 and clear the
Text property.
9. From the Toolbox, add a new EpiUltraGrid inside the EpiGroupBox and set the Location properties to
11,10 and the Size properties to 806,151.
11. Return to the Properties sheet. Change the Text property to Releases.
12. Now bind this EpiUltraGrid to a table. Click on the EpiBinding drop-down list and bind this control to the
OrderRel table.
To select the columns to display in the next workshop, you must save, close, and re-open the customization.
3. Select XXXNewHeader (where XXX are your initials) and click OK.
The Sales Order Entry form displays.
7. Return to the Properties sheet. Click the Layout > Columns drop-down list.
The Column Properties window displays.
10. Clear the Hidden check boxes for the following columns:
• OrderLine
• OrderRelNum
• ReqDate
• SellingReqQty
• ShipToNum
5. In the Sales Order field, search for and select sales order 5040.
The Customization Tools Dialog window contains a series of customization form wizards that can guide you
through customizing various aspects of a form (program).
Tip The Epicor application also contains a series of wizards, the Customization Code Wizards, that help
you create valid code. You launch these wizards from the Tools menu; you used one of these wizards
during a previous workshop.
Rule Wizard
Use the Rule Wizard to create new row rules for data views.
Row Rules control the visual styling of controls based on current data. Once you set up a new rule, you then set
up the rules action. You can define rules for both data fields and image columns through this wizard. After you
save the rule, it appears in the tree view as a node under the Custom Row Rules node.
Example You set up a rule so that if the order quantity is less than 10, the field is highlighted.
You can edit the rules on this wizard or on the Custom Row Rules properties sheet. Create image columns
within the Image Column Wizard.
You can create complex row rules, define custom rule conditions and rule actions, and evaluate the rules based
on the values in other data views.
When you define a custom rule condition, you specify the setting of behavior for the fields in the defined data
view based on complex comparisons, which can be specified in code snippets. It is also possible to specify code
snippets that can be used for the row rule action so that complex behavior can be achieved. The code snippets
for both rule condition and rule action are specified in the Script Editor.
Tip A wizard is available that guides you through creating an image column and assigning row rules to
it. This wizard, the Image Column Row Rule Wizard, can be launched from either the Rule Wizard or
the Tools menu. To launch it from the Rule Wizard, click the Image Column / Row Rule Wizard button.
For more information, refer to the Image Column Row Rule Wizard topic in the Application Help.
In this workshop, use the Rule Wizard to highlight the part number and description if the discount is greater than
five percent on the sales order line detail.
3. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the SalesOrderForm icon and click OK.
This starts a new customization that uses the base form.
5. Navigate to the Lines > Detail sheet and click the Part/Rev field.
6. In the Customization Tools Dialog window, select the Wizards > Rule Wizard sheet.
7. Click the New Row Rule button and enter the following information:
Field Data
Rule Description Excessive Discount
Rule View OrderDtl
Select View OrderDtl
Select Field DiscountPercent
Rule Condition GreaterThan
View/Field? (Do not select this check box)
Rule Value 5
Note If you select the View/Field? check box, the additional Select View and Select Field options
become available for the condition. For the purpose of this workshop, leave this check box clear and
use the Rule Value field.
The Rule Value field is a drop-down list with available options you can select. However you can also
enter a different value directly in this field.
8. Click the Right Arrow button to add the new rule to the Custom Row Rules field.
Field Data
Select Field PartNum
Setting Styles Error
4. Click the Right Arrow button to add the new action to the Rule Actions field.
5. Click the New Rule Action button again to add a second action.
Field Data
Select Field LineDesc
Setting Styles Error
8. Click the Right Arrow button to add the second action to the Rule Actions field.
10. Navigate to the Script Editor sheet. Maximize the Customization Tools Dialog to see more of the code
window.
Notice your Excessive Discount row rule displays. Review the code to see how the Rule Wizard automatically
generates the syntax required for this row rule.
13. In the Customization Save Dialog window, in the Name and Description fields, enter XXXRule (where
XXX are your initials).
15. When the Customization Comment window displays, enter XXXRule (where XXX are your initials) and
click OK.
16. Close the Customization Tools Dialog window and exit Sales Order Entry.
3. In the Select Customization window, select XXXRule (where XXX are your initials) and click OK.
4. In Sales Order entry, from the New menu, select New Order.
The Image Column Wizard gives you the ability to add an image column to a selected grid. This column then
displays an image you select.
To use this functionality, first create the column, give it a name and label, and then select the default image that
will display on the grid.
If necessary, you can also create row rules that define when other images display within this column. You can
even set up this column so that it does not have a default image, and then use row rules to populate it with
specific images when certain rule conditions are met. You create these rules using the Rule Wizard.
You can use this functionality to display any image included within the Epicor ERP application. You can also
display your own images through the Resource Editor program; this separate utility is installed as part of the
Epicor ERP application. Use this utility to find, select and add your own images to the Epicor application, which
can then display on your customization by using the Image Column Wizard.
Tip Another wizard is available that guides you through creating an image column and assign rules to it.
This wizard, the Image Column Row Rule Wizard, can be launched from either the Rule Wizard or the
Tools menu. For more information, refer to the application help topic: Image Column Row Rule Wizard
In this workshop, use the Image Column Wizard to create a new rule to display data. For this workshop example,
the field service team wants to use a modified version of the Sales Order Entry > Summary sheet to quickly identify
the line items in an order whose parts do not currently fall under warranty.
The following rule creates an image column in the summary sheet's grid view that displays a red icon whenever
a particular line item is not covered by a warranty.
3. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the SalesOrderForm icon and click OK.
This begins a new customization with the base form.
5. In the Customization Tools Dialog window, select the Wizards > Rule Wizard sheet.
Note To advance to the next exercise, you may need to close the Custom Image Column / Row Rule
Wizard. Once you display the next exercise, launch the Custom Image Column / Row Rule Wizard again.
1. In Step 1, for the Data View, select OrderDtl and click Next.
2. In Step 2, for the Image Column, enter the name XXXImageWizard (where XXX are your initials) and press
<Tab>.
This values defines the unique identifier for this particular row rule.
Tip Pressing the <Tab> key is the most efficient way to navigate through this wizard.
3. In the Column Heading text box, enter WTY as a column heading and press <Tab>.
This is the text that displays as the header of the new image column.
4. In the Column Position text box, leave the default 1 and click Next.
This value causes the column to display first on the left side of the grid. Columns are numbered from left
to right.
5. Now in Step 3 for the Default Image, select (None) and click Next.
This defines the image that displays when the conditions of the rule are not met. When None is selected,
you indicate no image displays in this column by default.
6. In Step 4 for the Row Rule Description, enter noWarranty as a description for the new rule and press
<Tab>.
The Data View field displays the database table monitored by the row rule. For this workshop, keep the
OrderDtl in this field. However notice you can select a different table using this field.
8. Click Next.
11. In the Enter or Select a Rule Value: section, click the Select radio button then select the Constant:
NullValue option.
13. In Step 6, notice the DataView and Image Column names display. Select the image you want to appear
when the row rule conditions are met. The current images available in the Epicor application display on this
drop-down list; select POFolderChecked and click Finish.
15. For the Name and Description field, enter XXXWarrantyCode (where XXX are your initials) and click
Save.
16. In the Customization Comment window, enter XXXWarrantyCode (where XXX are your initials) and
click OK.
17. Close the Customization Tools Dialog window and exit Sales Order Entry.
3. In the Select Customization window, select XXXWarrantyCode (where XXX are your initials) and click
OK.
10. From the New menu, select New Line to enter a second line.
13. Navigate to the Summary sheet and view the grid in the lower portion of the sheet.
Notice the WTY column displays a red icon for the part not covered by warranty.
16. To the Order has direct releases without a job link, return to order? message, click No.
Sheet Wizard
Use the Sheet Wizard to add a custom sheet to the current program.
This wizard additionally has the controls you need to edit a custom sheet’s tab or text properties. You can also
add a dashboard directly onto your new sheet. Dashboards are powerful tools that provide easy access to critical
real-time data. For more information about these data viewing tools, refer to the application help topic: Dashboard
Much like ships dock in a home port, each sheet can also be attached, or docked, to a parent sheet. On the
program interface, this causes the sheet to display as a sub-sheet under the parent sheet. You can also let custom
sheets become docking sheets (parent sheets) for other custom sheets. To do this, select the Docking Sheet
check box.
In this workshop, use the Sheet Wizard to add a custom sheet to Part Maintenance. Also review what you learned
earlier by adding labels and textboxes to the new sheet for height, width, and length.
Create a Sheet
Navigate to Part Maintenance.
Menu Path: Sales Management > Order Management > Setup > Part
2. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the PartForm icon and click OK.
This begins a new customization with the base form.
4. In the Customization Tools Dialog window, select Wizards > Sheet Wizard.
7. In the Name, Text, and Tab Text fields, enter XXX Part Info (where XXX are your initials).
8. Click the Right Arrow button to add the new custom sheet to the Custom Sheets field.
9. Click Save.
The Customization Save Dialog window displays.
10. In the Customization Save Dialog window, in the Name and Description field, enter XXXPartInfo
(where XXX are your initials).
12. In the Customization Comment window, enter XXXPartInfo (where XXX are your initials) and click OK.
14. Verify XXX Part Info (where XXX are your initials) displays as a new blank sheet on the form.
2. Navigate to the XXX Part Info sheet (where XXX are your initials).
3. In the Customization Tools Dialog window, from the Tools menu, select ToolBox.
4. From the Toolbox, select EpiLabel and add it to the XXX Part Info sheet (where XXX are your initials).
5. Click the label and on the Customization Tools Dialog window, in the Text field, enter Unit Net Weight.
Resize the label so you can see all of the text.
6. From the Toolbox select EpiNumericEditor and drag a new field next to the label.
Use the EpiNumericEditor tool to create numeric fields. Available formats for a numeric field are integer,
decimal, and double. Each displays a unique Mask Input value in the Behavior Properties section.
Field Data
Numeric Type Decimal
EpiBinding Part.NetWeight
EpiLabel epiLabelC1
Size 120,20
8. Click Save.
10. Close the Customization Tools Dialog window and Exit Part Maintenance.
3. In the Select Customization window, select XXXPartInfo (where XXX are your initials) and click OK.
5. On the Part > Detail sheet, view the Unit Net Weight field and record the value.
6. Navigate to the XXX Part Info (where XXX are your initials) sheet.
The new field, Unit Net Weight, displays the same number as the one on the Part > Detail sheet.
Use the Form Event Wizard to enter code that activates when specific events occur on a form.
Available events:
• BeforeRowChange - Called when users change rows on a grid. This event does not run when a grid first
displays.
• AfterRowChange - Called after a row changes on a grid. If the grid only contains one row, this event does
not activate. You must use this event with the ListChanged event .
• BeforeFieldChange - Called before users leave a field linked, or bound, to a data table. Use this event to
validate the new/modified value the users entered in the field; if this value is not valid, you can prevent users
from leaving the field until they enter a correct value.
• AfterFieldChange - Called after users leave a field linked, or bound, to a data table. You can then call another
adapter to validate a part, populate a Description field, and so on.
• ListChanged - This event runs when a grid contains one row. Call this event together with the
AfterRowChange event to run a custom event on the grid.
• Retrieve - Called when a user clicks the Retrieve button on a user interface; it pulls data for display. This
button is typically on trackers. Use this event when you design custom code that refreshes data for view on
a single panel.
• Load - Called when a program starts. Use this event when you want code to run during the UI Form_Load()
method, but after the InitilizeCustomCode() method runs.
• Closing - Called when a program closes. Use this event for custom code that cleans up variables in the data.
• EpiViewNotification - Called just after a data view loads into a program. It alerts users that data is ready to
view and edit. Use this event frequently, as you can then enter custom code for the GetNew method and
create unique IDs in user-defined (UD) tables.
• BeforeAdapterMethod - This method monitors business object calls before they run. When it detects a call
is about to run, it initializes your custom code. You can then create customizations that run before a call event
launches, display message boxes, automatically display search programs, validate data, and so on. You can
also use this method to cancel the call event before it runs.
• AfterAdapterMethod - This method monitors business object calls after they run. When it detects a call
event, it initializes your custom code. You can then create customizations that populate fields, validate data,
update external tools, and so on.
• BeforeToolClick - This event runs from the EpiBaseForm before the framework processes a toolbar click
event. Use this event to bypass and suppress the base ToolClick behavior. The OnBeforeToolClick handler
exposes a BeforeToolClickEventArgs; you can then set args.Handled=true to bypass the base click behavior
and activate a different click result.
• AfterToolClick - Occurs after a menu item is clicked. Use this event to add code that runs just after a user
clicks a specific menu item. The menu item code runs first and then the custom code activates.
• ToolClick - Occurs when the framework processes a Toolbar click event. Use this event to add code that runs
when a user selects a specific menu item. The event implements the handler directly against the Infragistics
Toolbars manager. When it launches, it runs both the base package ToolClick event handler and the custom
ToolClick handler.
• BeforeToolDropdown - Launches after a primary menu item is selected and the sub-menu items display.
Use this form event to enter code that modifies when certain sub-menu items appear on the interface.
Note Business objects are pieces of code that manipulate data within the application. The application runs
business objects so users can enter and update code. Business objects can also run calculations on data
entered into a form.
You link the event and the code to a specific row, field, or form. When a user performs a customized event, this
special code automatically runs.
Example You want to control when new part numbers are created. You define a Form Event that launches
after a user changes the Part ID field. The Epicor application makes sure that the Part ID exists before the
user is allowed to enter more data on the sheet. If the Part ID exists, the rest of the form's fields activate;
if it does not exist, the fields remain disabled.
In this workshop, use the Form Event Wizard to warn the sales order entry person that the Need By Date exceeds
one year.
3. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the SalesOrderForm icon and click OK.
This begins a new customization with the base form.
5. In the Customization Tools Dialog window, select the Script Editor sheet. Verify the C# option is selected.
10. Click the Right Arrow button to add the event to the Select New/Existing Event Handler field.
13. In the Customization Save Dialog window, in the Name and Description fields, enter XXXFormEvt
(where XXX are your initials) and click Save.
14. In the Customization Comment window, enter XXXFormEvt (where XXX are your initials) and click OK.
1. Navigate to the Script Editor sheet. Maximize the Customization Tools Dialog.
2. Beneath the Case "NeedByDate" line, enter the following code. Note that a line of code which is not
indented indicates this line continues from the previous line.
case "NeedByDate":
DateTime dtNeedByDate;
if (args.ProposedValue!=null)
{
dtNeedByDate = Convert.ToDateTime(args.ProposedValue);
if (dtNeedByDate > System.DateTime.Today.AddDays(365))
{
MessageBox.Show("Need By Date exceeds one year. Enter a val
id Need By Date.");
}
}
break;
3. From the Tools menu, select Test Code and verify the Custom Code Compiled Successfully message
displays.
4. Click Save.
6. Close the Customization Tools Dialog window and exit Sales Order Entry.
3. In the Select Customization window, select XXXFormEvt (where XXX are your initials) and click OK.
10. Change the Need By date to be more than a year in the future from today.
The Need By Date exceeds one year. Enter a valid Need By Date. message displays.
In this workshop, use the Form Event Wizard to warn the entry person that the part number entered is more
than 20 characters.
3. In the Select Customization window, select XXXFormEvt (where XXX are your initials).
5. In the Customization Tools Dialog window, navigate to the Wizards > Form Event Wizard sheet.
9. Click the Right Arrow button to add the event to the Select New / Existing event Handler field.
1. Navigate to the Script Editor sheet. Maximize the Customization Tools Dialog.
3. Beneath the Case "PartNum" line, enter the following code. Note that a line of code which is not indented
indicates this line continues from the previous line.
case "PartNum":
string message = "The part number exceeds 20 characters. Cancel this o
peration?";
string caption = "Part Number Length";
System.Windows.Forms.MessageBoxButtons buttons = MessageBoxButtons.Yes
No;
DialogResult result=DialogResult.Cancel;
if (args.ProposedValue.ToString().Length > 20)
{
result = MessageBox.Show(message,caption,MessageBoxButtons.YesNo,
MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.R
ightAlign);
}
if (result == DialogResult.Yes)
{
oTrans.Undo();
throw new UIException();
}
break;
4. From the Tools menu, select Test Code and verify the Custom Code Compiled Successfully message
displays.
5. Click Save.
7. Close the Customization Tools Dialog window and exit Sales Order Entry.
2. In the Select Customization window, select XXXFormEvt (where XXX are your initials) and click OK.
8. In the Part/Rev field, type more than 20 characters of your choice and press <Tab>.
The The part number entered exceeds 20 characters. Cancel this operation? message displays.
Event Wizard
In this workshop, add a custom button to Customer Maintenance and use the Event Wizard to add an event to
the button to access the customer's web site.
Create a Customization
3. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the CustomerEntryForm icon and click OK.
This begins a new customization with the base form.
6. Locate the group box that contains the Phone, Fax, Email, and Website fields. Expand this group box so
you can place a button below the Website field.
8. In the Toolbox, select epiButton and add it below the Website field.
10. Return to the Properties sheet. Change the Text property for the button to Go To Website.
12. In the Name and Description fields, enter XXXButton (where XXX are your initials), and click Save.
1. In the Customization Tools Dialog window, navigate to the Wizards > Event Wizard sheet.
7. In the Customization Tools Dialog window, navigate to the Script Editor sheet.
8. Maximize the Customization Tools Dialog window so you can see more of the Script Editor.
9. Beneath the ** Place Event Handling Code Here ** line, enter the following code. Note that a line of
code which is not indented indicates this line continues from the previous line.
string customerURL="";
//create a customer data view
EpiDataView workDataView = (EpiDataView)oTrans.EpiDataViews["Custom
er"];
//make sure a customer record is loaded
if (workDataView.dataView.Count > 0 && workDataView.Row >=0)
{
if (workDataView.dataView[workDataView.Row]["CustURL"].ToString(
)!="")
{
//get the value of the CustURL column
customerURL=workDataView.dataView[workDataView.Row]["CustURL
"].ToString();
//misc checking of URL
if (!customerURL.StartsWith("http://"))
{
customerURL = "http://"+customerURL;
}
if (customerURL.EndsWith("exe")||customerURL.EndsWith(".js")
||customerURL.EndsWith(".vbs"))
{
//quit if URL has obvious bad implications
return;
}
try
{
//launch URL in default browser
System.Diagnostics.Process.Start(customerURL);
}
catch
(System.ComponentModel.Win32Exception noBrowser)
{
if (noBrowser.ErrorCode==-2147467259)
MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
MessageBox.Show(other.Message);
}
}
}
Important You can add the code using the Control Event Code field. However to access all the code
for the form, you should use the Script Editor.
Note The code sample above depends on file associations on the client computer. For example, an
.html file may be associated with an HTML editor and not a browser.
10. From the Tools menu, select Test Code and verify the Custom Code Compiled Successfully message
displays.
13. Close the Customization Tools Dialog window and exit Customer Maintenance.
3. In the Select Customization window, select XXXButton (where XXX are your initials) and click OK.
5. If the Website field is blank, enter a website address of your choice. For example: www.epicor.com
6. Click the Go To Website button. (You may need to expand the size of the Customer Maintenance form
to see this button.)
Your internet browser launches the website specified. You may have to click the browser in the task bar to
give it focus.
In this workshop, use the Event Wizard to add special events to the UltraGrid you added to Sales Order Entry
earlier. These events enable entry through the grid (line release information).
Important To complete this workshop, you must first complete Workshop - Add an UltraGrid Control.
3. In the Select Customization window, select XXXNewHeader (where XXX are your initials) and click OK.
5. In Sales Order Entry, navigate to the Summary sheet where you placed the custom Releases grid.
6. In the Customization Tools Dialog window, navigate to the Wizards > Event Wizard sheet.
8. In the Custom Control field, select EpiUltraGridC1 (this is the name of the Releases grid).
13. Navigate to the Script Editor sheet. To see more of the code, maximize the Customization Tools Dialog.
Review the code the Event Wizard added for the epiUltraGridC1 control. Notice it added three events:
• BeforeRowInsert
• BeforeRowsDeleted
• KeyDown
14. From the Tools menu, select Test Code and verify the Custom Code Compiled Successfully message
displays.
17. Close the Customization Tools Dialog window and Exit Sales Order Entry.
3. In the Select Customization window, select XXXNewHeader (where XXX are your initials) and click OK.
5. Select the last release, place your cursor at the very end of the line and press Enter.
A new release line is created and you can enter data into the available fields. You can continue to add as
many order release lines as you need.
8. If the Order has direct releases without a job link, return to order? message appears, click No.
A foreign key is a link to a separate, or foreign, table that contains logically similar data. Use foreign keys to link
these related tables so information you need displays. You can display foreign key views on customized sheets
and in dashboards.
You can create foreign key views for a Query Result or Data View that has a field that searches by its record
(GetByID) identifier. You can then create a view based on this field's value.
An extensive number of combinations of tables are available. You can first create one view and then link another
sub-view to this view, another sub-view to this sub-view and so on. As long as you can establish a logical connection
between the Parent and Child columns, you can display data through a combination of views.
This customization tool links fields in separate, but related tables. Fields that link to foreign key fields in other
tables must share the Like property. The Like property defines which foreign keys can link to the selected field.
Tip After you create a foreign key view, you can use the features on the Custom Column Like sheet to
add the Like property to a specific field. For more information, refer to application help topic: Custom
Column Like
You can also customize how the data appears within the grid through Row Rules. You can highlight a
column, bold a column's text, and make some columns invisible. For more information, refer to application
help topic: Rule Wizard
In this workshop, add a foreign key to display information from the part table in Sales Order Entry. Also review
what you learned earlier by creating a custom sheet and adding labels and textboxes to the new sheet. For this
workshop, verify Developer Mode is always on.
Note To complete this workshop, you must first complete the Workshop - Use the Sheet Wizard.
3. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the SalesOrderForm icon and click OK.
This begins a new customization with the base form.
5. In the Customization Tools Dialog window, navigate to the Wizards > Sheet Wizard sheet.
8. In the Name, Text, and Tab Text fields, enter XXXPart Info (where XXX are your initials).
9. Click the Right Arrow button to add the new custom sheet.
11. In the Customization Save Dialog window, in the Name and Description fields, enter XXXForeignK
(where XXX are your initials) and click Save.
12. In the Customization Comment window, enter XXXForeignK (where XXX are your initials) and click OK.
1. In the Customization Tools Dialog window, from the Tools menu, select Data Tools... option.
The Custom Data Dialog window displays.
2. On the Foreign Key View sheet, click the New Custom View button.
3. In the View Name field, enter XXX Part Info (where XXX are your initials).
6. Accept the defaults populated in the remaining fields. Click the Add button.
The Foreign Key View Succeeded message displays.
2. In Sales Order Entry, navigate to the new sheet, Lines > XXX Part Info (where XXX are your initials).
4. Click the EpiLabel; in the Text property field, enter Net Weight.
5. Click the EpiNumericEditor. In the EpiBinding property, select XXX PartInfo > NetWeight (where XXX
are your initials).
9. Click Save.
11. Close the Customization Tools Dialog window and exit Sales Order Entry.
Create a Part
3. In the Select Customization window, select XXXPartInfo (where XXX are your initials) and click OK.
5. In the Part and Description fields, enter XXXPart (where XXX are your initials).
6. In the Unit Net Weight field, enter a weight value of your choice.
3. In the Select Customization window, select XXXForeignK (where XXX are your initials) and click OK.
8. In the Part/Rev field, enter XXXPart (where XXX are your initials) and press Tab.
This is the part you created in the previous section of this workshop.
9. Navigate to the Lines > XXX Part Info sheet (where XXX are your initials) and verify that the net weight
displays for the item.
Customization Deployment
You make customizations available to users through Menu Maintenance. Using this program, you enable a
customization so it displays on the Main Menu.
Note that customizations saved with the Work in Process (WIP) status do not display in this program. The
application considers these customizations still in development, and so you cannot select them in Menu
Maintenance. For more information on the WIP status, refer to application help topic: Save Customization
Important To access Menu Maintenance, you must have System Supervisor rights. For more information,
refer to application help topic: User Account Security Maintenance
Menu Maintenance
Use Menu Maintenance to customize the Menu tile interface and the Mobile Menu interface within your Epicor
application. You can select customized programs, reports, dashboards, and sub-process programs and make
them available to users within your company.
The changes you make within Menu Maintenance display on the workstations and mobile devices that run the
Epicor ERP application within your environment. Use Menu Maintenance to replace a current program with a
customized program. You can also add menu items for custom programs and custom reports. If you customize
a sub-process program like Memo Entry or the Part Transaction Log, you also define how users access this process
through this program.
For Menu programs, you add or update an icon on the Menu and then select the customization layer you want
to display. For sub-process programs, you add the customized sub-process program to the Process node in Menu
Maintenance and then activate the customized program through Process Calling Maintenance; review the
Sub Program Deployment topics in the application help for more information.
Tip You can only use this program if you can create and modify customizations. To learn on how to get
customization rights and use this functionality, refer to the User Account Maintenance - Security application
help topic.
Menu Path
Navigate to this program from the Main Menu:
• ICE Extend > Security > Menu Maintenance
• System Setup > Security Maintenance > Menu Maintenance
• System Setup > System Maintenance > Menu Maintenance
Important This program is not available in Epicor Web Access.
In this workshop, add one of the customizations created in an earlier workshop to the Order Entry menu item.
Also, create a new menu entry for Order Entry to deploy a different customization.
2. Click the Home button again. Once the Home screen displays, click the Menu tile.
The Menu screen displays.
You can deploy the customized program to the menu through a couple options. You can either make the
customization the default interface for an existing program or add the customization as a new program. If
you use an on-premise or Epicor Cloud ERP - Dedicated Tenancy environment, you can add it through either
option. However if you use an Epicor Cloud ERP - Multi Tenant environment, you must add the customization
as a new program.
4. To add the customization as a new program (both Epicor Cloud ERP and on-premise environments):
a. Select the parent menu where you will place the custom program. In the tree view, select Sales
Management > Order Management > General Operations.
b. Click the Down Arrow next to the New button; select New Menu.
The fields within the Detail sheet are now available for data entry.
c. Enter the Menu ID. Be sure to enter the prefix "UD" to indicate this is a user-defined menu item. For
this example, enter UDXXX (where XXX are your initials).
Note The Module value indicates the licensed module to which this item belongs. Because you
are adding a custom program to the interface, the UD ( User Defined) module must display in this
field.
d. Enter the Name you want to display on the interface; for this example, enter Order Entry - New Header.
e. Enter the Order Sequence value you need. This positions the custom program icon within the current
menu items; placing a 0 (zero) value puts the icon at the top of the list.
g. Now click the Program... button to find and select the Erp.UI.SalesOrderEntry.dll file.
h. From the Customization drop-down list, select XXXNewHeader (Customization) where XXX are your
initials.
i. Click Save.
5. To make the customization the default interface for an existing program (on-premise environment only):
a. In the tree view, select Sales Management > Order Management > General Operations > Order
Entry.
c. In the Program section, in the Customization field, select one of your customizations, for example
XXXNewHeader (Customization) (where XXX are your initials).
Important If the form to which you are applying the customization is marked for All Companies,
the only customizations that are available for selection are the ones marked for All Companies.
If you want to apply a customization to the current company only, you must first create a
company-only version of the form. You can do that quickly by selecting Copy to Current Company
from the Actions menu. Your company specific customizations will be available for selection on
this newly created menu item.
d. Click Save.
7. You need to refresh the interface. Close the Epicor ERP application.
8. If you are in an on-premise environment, log into the application using the credentials epicor/epicor. If you
are in an Epicor Cloud ERP environment, log into the application using <siteID>-epicor; for example enter
94193-epicor.
9. Now click on the Menu tile and navigate to Sales Order Entry.
Menu Path: Sales Management > Order Management > General Operations > Order Entry
Verify the customizations you made to Sales Order Entry display.
You can either delete the custom program icon or remove the customization from the default program icon.
2. To remove the custom program icon (you can do this in both Epicor Cloud ERP and on-premise environments):
a. In the tree view, select Sales Management > Order Management > General Operations.
d. Click Yes.
e. Click Save.
3. To remove the customization from the default program icon (you can only do this within an on-premise
environment):
a. In the tree view, select Sales Management > Order Management > General Operations > Order
Entry.
d. Click Save.
5. You need to refresh the interface. Close the Epicor ERP application.
6. If you are in an on-premise environment, log into the application using the credentials epicor/epicor. If you
are in an Epicor Cloud ERP environment, log into the application using <site ID>-epicor; for example enter
94193-epicor.
As part of the database, the Epicor ERP application contains a series of User Defined Tables. Use these special
tables to customize the database so you can enter data unique to your company. You first add these tables
directly to the interface, customize them to define the data, and then enter your unique records.
This data can then be pulled into other programs. To do this, add a custom control, the UltraCombo, to a form.
This control is a drop down list. You bind the UltraCombo to the retriever adapter on the user defined table.
After you save this customization, users access this control to select and navigate through the data entered on
this user defined table.
Note User defined tables do not display on the out-of-box menu in the Epicor ERP application. To customize
and deploy user defined tables, you must first add a reference to the table to the existing menu. The
Workshop - User Defined Tables and Workshop - Create a Drop Down Menu demonstrate how to
add this table to the Menu, as well as how to perform a simple customization of the table.
For this workshop, you create a new menu item to access a user defined table. Then, customize the table to
handle maintenance type data for shipping containers.
This workshop requires several features you explored previously in this course, so you will see how many of these
features work together when you create a more complex customization.
2. Using the tree view, navigate to Material Management > Shipping/Receiving > Setup.
5. In the Menu ID field, enter UDCMPXXX (where XXX are your initials).
To identify this as a user defined table, the Epicor application provides a UD prefix; do not change this prefix.
Likewise notice the Module is identified as UD (User Defined); do not change this module identifier.
6. In the Name field, enter XXX Container Maintenance (where XXX are your initials).
13. Click Program, search for the user-defined table, Ice.UI.UD01Entry.dll and click Open.
This .dll is the program file that supplies the functionality behind the user-defined table.
17. You need to refresh the interface. Close the Epicor ERP application.
18. If you are in an on-premise environment, log into the application using the credentials epicor/epicor. If you
are in an Epicor Cloud ERP environment, log into the application using <site ID>-epicor; for example enter
94193-epicor.
19. Click the Menu tile and navigate to Material Management > Shipping / Receiving > Setup.
The new XXX Container Maintenance (where XXX are your initials) menu item displays. During the next
workshop, you will launch the program in Developer Mode and start customizing it.
2. Navigate to the new menu item XXX Container Maintenance (where XXX are your initials).
Menu Path: Material Management > Shipping/Receiving > Setup > XXX Container Maintenance
3. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the Base icon and click OK.
This begins a new customization with the base form.
Important Note that if you use the Epicor Cloud ERP environment, you may receive an error. After
you click OK, the form displays as expected. However if you click Tools > Customization, the form
may revert to the Type Maintenance interface. To correct this issue, save your customization and
exit. Then relaunch the XXX Container Maintenance (where XXX are your initials); from the Select
Customization window, select your customization layer.
4. The UD01 Maintenance window displays. From the Tools menu, select Customization.
The Customization Tools Dialog window displays.
5. You do not want to enter comments while you create this customization. Click Tools > Options; select the
Suppress Save Comment Dialog option.
Now the Customization Comment window no longer displays during this customization session.
2. For this customization, you only need the Key1 field. Click the Key 2 text box and drag it off the form until
it disappears. Remove the Key3, Key4, and Key5 text boxes in the same way.
3. Click the Description field and drag it just below the Key 1 field.
5. Return to the Properties sheet. Change the Text property "(Do not remove) Key 1:" for the label to the
Container ID: value.
9. If the Select Layer Type window appears, select Customization and click OK. This window only displays
for partner organizations that can create verticalizations and other custom layer types. If your company is
not a partner organization, this window does not display.
10. Click and drag the epiTextBoxC1 below the Description text box.
12. Click the EpiBinding drop-down list and select UD01 > ShortChar01.
14. Add an EpiLabel to the text box, change the Text property to Weight:, and bind the label to the text box.
16. In the Customization Save Dialog window, in the Name and Description fields, enter XXXContainer
(where XXX are your initials) and click Save.
17. Close the Customization Tools Dialog window and exit XXX Container Maintenance (where XXX are your
initials).
2. In the Select Customization window, select XXXContainer (where XXX are your initials) and click OK.
4. Click New.
8. Click Save.
Remain in XXX Container Maintenance (Where XXX are your initials). During the next exercise, you will customize
the List sheet to ensure that the unused columns from the UD01 table do not display and that the proper headings
display.
2. In the UD01 Maintenance window, select the List sheet and click on the grid in the middle of the sheet.
This displays the properties for the grid view in the Customization Tools Dialog window.
3. Locate the Layout > Columns field; click the down arrow.
The Columns Properties window displays.
7. Next in the Caption column, change the Caption properties for the three columns to the following:
8. Click the UD01 Maintenance window and review the changes on the list.
Clicking this window refreshes the interface to display your selections.
9. In the Customization Tools Dialog window, in the tree view, select UD01Form.
11. Likewise in the tree view, select the mainPanel1 node. Change this item's Text property to Container
Maintenance.
The bar over the Detail and List sheets now displays Container Maintenance.
13. Close the Customization Tools Dialog window and exit Container Maintenance.
2. Click the Home button again. Once the Home screen displays, click the Menu tile.
The Menu screen displays.
4. Using the tree view, navigate to Material Management > Shipping/Receiving > Setup > XXX Container
Maintenance (where XXX are your initials).
6. In the Customization field, select XXXContainer (where XXX are your initials).
7. Click Save.
10. To see the deployed customization, log out of the application and then log back in:
Tip If you are taking this course through the Embedded Education module, review the following
steps before you exit the application.
a. If you are in an on-premise environment, log into the application using the credentials epicor/epicor.
b. If you are in an Epicor Cloud ERP environment, log into the application using <site ID>-epicor; for
example enter 94193-epicor.
11. Click the Menu tile and navigate to XXX Container Maintenance (where XXX are your initials).
Menu Path: Material Management > Shipping/Receiving > Setup > XXX Container Maintenance
Review your customization. Click on the different sheets and add, update, and delete records.
Now that you have created a new maintenance program, you next customize a program to display the data users
enter in it. During this workshop, create a drop down menu in Customer Shipment Entry that displays the data
from the Container Maintenance table.
If you need additional columns for your customization, you create them using User Defined Column Maintenance.
You can launch this program when your user account has Security Manager or Global Security Manager rights.
Important You only need to add columns if you use an on-premise environment. If you are in an Epicor
Cloud ERP environment, the additional columns you need are already on the table, so you can skip this
exercise.
Through this program, you find and select an existing database table. You then create the user-defined (_UD)
table; this extension links to the existing table. You can then add the UD columns to it that you need.
For this workshop, you need to add a UD Character01 column to the ShipDtl table. You can then link this
Character01 column to the same column in the existing user-defined table. This column is UD01.Character01,
the column that holds the Description values you entered for your containers in the previous workshop.
Note Do not confuse creation of user-defined fields with UD tables delivered directly with the application.
User-defined fields are additional columns you add to an existing table. When you search for these columns,
their names include the "_c" suffix. Delivered UD tables are empty tables (Ice.UD01, Ice.UD22, Ice.UD100,
and so on) available in the database; you can either add these tables as grids to existing programs or add
them to the Menu to create a custom entry program.
Important This program may not be available, or operate under certain restrictions in Epicor Cloud
ERP.
Field Value
Column name Container_c
Description Container
Data type String
Format x(20)
Label Container
This new column will contain text strings limited to twenty characters. When a user enters data in this UD
field, the application validates this entry to ensure it matches the Data type and Format you define on this
sheet.
8. Click Save.
To finish adding the user-defined columns, you must regenerate the data model for the specific database.
Important If you are in an Epicor Cloud ERP environment, the additional columns you need are already
on the table, so you can skip this exercise.
You do this task on the server that contains your database. If you do not have rights to access the server, contact
your Server Administrator. Either you or the Server Administrator does the following steps in the Epicor
Administration Console.
a. From the Search drop-down list, select the Everywhere option. In the search field, enter Epicor
Administration Console.
3. Locate the Epicor Software section on this screen and click the Epicor Administration Console icon.
4. From the tree view, expand the Database Server Management node and the node for the database server
that contains the database you wish to regenerate.
6. From either the Action menu or the Actions pane, select Regenerate Data Model.
The Generate Data Model dialog box opens.
8. Click Generate.
Important If you receive an error that the .dll file for the data model generation is in use by another
process, end the task. Launch the Internet Information Services Manager by clicking Start > Programs
> Administrative Tools > Internet Information Services (IIS) Manager. Select the Application
Pools node; the center pane displays the application pools available on your system. Right-click your
application server node; from the context menu, select Recycle. You should be able to regenerate
the data model.
Likewise if you receive an error that states some tables did not synchronize, you can review the log
file to see more details about these table errors. The location of this log file displays in the error
message.
When you successfully regenerate the data model, a dialog box displays. Click OK.
9. Now to complete this process, you must pull the latest data model from the database and copy it to the
local application server by recycling the application pool. Recycling the application pool is a mandatory task
after the data model successfully regenerates. To do this, click Start > Programs > Administrative Tools
> Internet Information Services (IIS) Manager.
10. Expand the tree view and select the Application Pools node.
The center pane displays the application pools available on your system.
11. Right-click on the application pool for your application server; from the context menu, select Recycle.
Tip Optionally you can also recycle the application pool within the Epicor Administration Console.
To do this, expand the Server Management node and select your application server. From the
Actions pane, select the Recycle IIS Application Pool option.
The regenerate process stages the data model in the database. When the application server restarts, the Epicor
ERP application checks the data model on both the disk and the database. If a new data model version is available,
this version is retrieved from staging and the database is updated to include the user-defined table. Epicor users
can now view and enter data in the user-defined columns.
Important When you reference these user-defined columns through either programming or a customization,
the columns appear to be part of the base (primary) table because the data model merges the two tables
into one logical entity. To identify the UD columns, their identifiers all use the "_c" suffix.
If you need to regenerate the data model more often, consider running this process through a command line, a
desktop icon, or a recurring task. These launch options are explained in the Epicor Administration Console help,
Command Line Tools Guide and the System Administration Guide.
The UD table is added to the database. You can now bind controls on your customization to these fields. Epicor
users can also view and enter data in the UD table.
6. If you are using an on-premise environment or Epicor Cloud ERP - Dedicated Tenancy environment, you can
select Base Only and click OK. If you are using an Epicor Cloud ERP - Multi Tenant environment, review
the Available Layers tree view. Select the Base icon and click OK.
Your customization will then use the base form.
8. In Customer Shipment Entry, navigate to the Lines > Customer Shipment Entry > Detail sheet.
9. In the Customization Tools Dialog window, from the Tools menu, select ToolBox.
11. Within the From Inventory group box, directly below the Bin button, click inside the form.
12. If the Select Layer Type window appears, select Customization and click OK. This window only displays
for partner organizations that can create verticalizations and other custom layer types. If your company is
not a partner organization, this window does not display.
13. Click and drag the mouse below the Bin button to draw an EpiUltraCombo (drop-down list).
14. Verify the EpiUltraCombo is selected. In the Customization Tools Dialog window, from the Tools menu,
select Wizards > Customization Wizards.
15. In the Customization Code Wizard Dialog window, select Simple Search and click Launch Wizard.
21. Click Finish and close the Customization Code Wizard Dialog window.
1. In the Customization Tools Dialog window, navigate to the Wizards > Form Event Wizard sheet.
3. Click the Right Arrow button to add the event type to the list.
7. Copy the SearchOnUD01AdapterFillDropDown() code snippet; this piece of code is located next to
private void near line 50.
8. Paste the code beneath // Add Event Handler Code and end the line with a semi-colon ( ; ).
Example SearchOnUD01AdapterFillDropDown();
9. From the Tools menu, select Test Code and verify the Custom Code Compiled Successfully message
displays.
10. In Customer Shipment Entry, verify the epiUltraCombo1 is selected, and in the Customization Tools
Dialog window, navigate to the Properties sheet.
11. Set the AutoWidth property to False and change the AutoWidthOption property to ControlWidth. This
drop-down list will now display as wide as the control
16. In the Customization Save Dialog window, in the Name and Description fields, enter XXXDropDown
(where XXX are your initials) and click Save.
17. Close the Customization Tools Dialog window and Exit Customer Shipment Entry.
3. In the Select Customization window, select XXXDropDown (where XXX are your initials) and click OK.
5. Navigate to the Lines > Customer Shipment Entry > Detail sheet.
7. Click your drop-down list below the Bin button. Notice it displays the three containers you entered in the
new Container Maintenance (UD01) table.
Customization/Personalization Maintenance
This program has additional functionality for importing and exporting your customizations and personalizations.
Leverage these functions to make user modified programs available throughout your organization. You can also
use this maintenance tool to delete any customization or personalization. Run this feature when you want to
either remove custom program stages you no longer need or remove personalizations made by employees who
are no longer with your company.
For System Administrators with Security Manager rights, this program can be used to modify fields and delete
customizations and personalizations created by users. For System Administrators without Security Manager rights,
this program displays in a Read-Only format. For more information on security, review the Security documentation.
If you work in a multi-company environment, you can display and update customizations/personalizations in the
companies for which you have access. Personalized and customized programs created in the companies defined
on your user account within User Account Security Maintenance display within this program.
Menu Path
Navigate to this program from the Main Menu:
• ICE Extend > Operations > Customization Maintenance
• System Management > Upgrade/Mass Regeneration > Customization Maintenance
Important This program is not available in Epicor Web Access.
Conclusion