Kinetic AppStudioExtensionsUserGuide
Kinetic AppStudioExtensionsUserGuide
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.
All rights reserved. No part of this publication may be reproduced in any form without the prior
written consent of Epicor Software Corporation.
Table of Contents
Application Studio Extension Guide 6
Welcome to the Application Studio Extension Guide 6
Simple Landing Page Modification 7
Widgets Overview 42
3 January, 2024
Introduction to User-Defined (UD) Forms 81
Scenario Overview 82
Adding a Rule to Highlight Fields for the Selected Part Subtype 134
4 January, 2024
Reviewing Part Maintenance and Part Advisor Configurations 143
5 January, 2024
Application Studio Extension Guide
Then this guide shows you how to customize both BAQ Reports and Dashboards. You can add
layers onto these items to further define what information they gather and display.
You add user-defined tables to extend the data each table contains. Use these tables to supplement
existing database tables with additional information for your business area or industry. Functions
give you the ability to define the service, method and parameters you wish to expose dynamically
that you can then run in your custom layers.
6 January, 2024
Simple Landing Page Modification
When you launch an application, you are typically presented with the Landing Page. The records are
either sorted alphabetically (Customer Entry) or by date (Sales Order Entry). You can scroll through
the grid to view important details about each record, select a record to view its details or invoke the
Search panel to look for specific records.
In this example, we will enhance the initial application experience by removing a couple of columns,
adding a new column and creating a data rule to highlights specific records.
We will use Order Entry in this example. Assume you don't require the PO and Bill To Customer
Name columns to appear on the Landing Page grid. Also, you would like add a column displaying
total order amount.
1. From the main menu, go to Sales Management >Order Management > General Operation >
Order Entry.
7 January, 2024
3. Let's define a new layer first. Press <NewLayer>.
4. Enter a Layer Name, such as LandingPageGrid and press Save Layer.
5. On the Application Map, select the Sales Orders Landing Page and press Edit.
6. Click anywhere inside the grid and select the Properties tab.
7. Select Data > Grid Model > Columns.
8. From the list, select the PO column and press Delete.
10. Now add a new column displaying total order amount. Press Add Column and enter the
below properties:
8 January, 2024
l Field - DocOrderAmt
l Title - Order Amount
11. Save the layer.
Data Rules are simple, yet powerful tools to create data-driven behaviors such as changing a color,
disabling a field, or setting its default value. We will create a data rule to highlight all open orders on
the Landing Page grid, so they are easily identified.
1. From the Sidebar, select Data Rules and press Add New .
2. In the Header section, enter or select the following:
l Name - LandingPage
l Description - Highlight Open Orders
l Action Data View - LandingPage
l Row Rules Criteria - Conditions
3. Press Select Condition > Condition and specify the following:
l Data View - LandingPage
l Field - OpenOrder
l Operator - Equal
l Value/Field - Value
l Value - True
4. Now create an Action. Press Select Action > Setting Style and specify the below parameters:
l Actions - SettingStyle.RowStatus
l Status - Highlight
9 January, 2024
5. Save the layer. Verify the data rule looks as follows:
At this stage, you are ready to publish this layout and make it available to all users. For more
information, see Adding a Layer to the Menu.
10 January, 2024
Using Quick Filters
In this scenario, we will make changes to the Job Entry Landing Page. By default, the application
enables switching between All, Firm and Unfirm job views. To narrow down search results, users can
launch the Search panel and filter jobs by Type, Status, Project ID and so on.
We will modify the Landing Page experience in a way that users can directly switch between Job
Types (Manufacturing, Project and Service) and Job Statuses (Firm, Engineered, Released,
Completed and Closed). The grid results will automatically respond to the selected criteria.
You can implement this concept in other Kinetic applications as needed. For example,
filter sales orders by Order Type, Sold to Customer and so on.
1. From the main menu, go to Production Management >Job Management > General
Operation > Job Entry.
11 January, 2024
2. From the Overflow menu , select Application Studio.
12 January, 2024
6. In the Toolbox, search for the Check Box and place it to the right of the Job Num search box.
7. Select the check box and go to Properties. We will add basic identifiers for the check box and
bind it to a TransView column.
l Id - chb_Firm
l Label Text - Firm
l EpBinding - TransView.Firm
13 January, 2024
8. Repeat steps 6 - 7 to add additional status check boxes.
Id Label Text EpBinding
chb_Engineered Engineered TransView.Engineered
chb_Released Released TransView.Released
chb_Completed Completed TransView.Completed
chb_Closed Closed TransView.Closed
14 January, 2024
9. Save the layer.
1. First, let's take a look how the landing page gets populated with data. Click anywhere in the
grid and select Properties.
2. Select Data > Grid Model > Provider Model.
The application makes a REST (Representational State Transfer) call to the
Erp.BO.JobEntrySvc (Svc), calls the GetList method (SvcPath) and provides input parameters
(RestParams). We will make a call to this service in the views we create.
15 January, 2024
4. Press View Options and remove all existing views.
5. We will first create a view that displays all jobs regardless of their type. Press and enter the
below:
l Ep Binding - LandingPage
l Description - All
l Svc - Erp.BO.JobEntrySvc
l SvcPath - GetList
6. Now we will add REST call parameters. In the Rest Params property, press Edit to invoke
JSON Editor and enter the below clause:
{
"whereClause": "Plant = '?{Constant.CurrentPlant}' and JobReleased = ??
{TransView.Released} and JobEngineered=??{TransView.Engineered} and JobFirm=??
{TransView.Firm} and JobComplete=??{TransView.Completed} and JobClosed=??
{TransView.Closed} BY JobNum DESC"
}
Notice we are passing EpBinding values of our newly created check boxes to call parameters,
e.g. JobReleased = ??{TransView.Released}.
16 January, 2024
The JSON Editor entry should look as follows:
A single question mark prefixing the field value means that a REST request will
go through only if the value is NOT empty or null. For example, OrderNum = ?
{OrderHed.OrderNum}.
A double question mark prefixing the field value means that a REST will go
through even if the value is empty or null. For example, CustNum = ??
{Customer.CustNum}.
Values of string data type (including constants) are put in single quote marks. For
example, CustID = '??{Customer.CustID}' or ReqDate > '??
{Constant.Yesterday}'.
7. Lets' make the All view default, scroll to the bottom and enable the Set Default check box.
17 January, 2024
l Svc - Erp.BO.JobEntrySvc
l SvcPath - GetList
l Rest Params -
{
"whereClause": "Plant = '?{Constant.CurrentPlant}' and JobType='MFG' and
JobReleased = ??{TransView.Released} and JobEngineered=??{TransView.Engineered}
and JobFirm=??{TransView.Firm} and JobComplete=??{TransView.Completed} and
JobClosed=??{TransView.Closed} BY JobNum DESC"
}
{
"whereClause": "Plant = '?{Constant.CurrentPlant}' and JobType='PRJ' and
JobReleased = ??{TransView.Released} and JobEngineered=??{TransView.Engineered}
and JobFirm=??{TransView.Firm} and JobComplete=??{TransView.Completed} and
JobClosed=??{TransView.Closed} BY JobNum DESC"
}
{
"whereClause": "Plant = '?{Constant.CurrentPlant}' and JobType='SRV' and
JobReleased = ??{TransView.Released} and JobEngineered=??{TransView.Engineered}
and JobFirm=??{TransView.Firm} and JobComplete=??{TransView.Completed} and
JobClosed=??{TransView.Closed} BY JobNum DESC"
}
18 January, 2024
12. Verify the newly created views display on the list.
Do not preview the layer at this stage and proceed to the following task to define the
expected application logic.
1. We will first create a rule to display active jobs by default. We do this by setting Firm,
Engineered and Released check boxes to true and making Completed and Closed check
boxes clear. From the Sidebar, select Data Rules and press Add New .
2. In the Header section, enter or select the following:
l Name - LP_InitFilters
l Description - Initial Filters
l Action Data View - TransView
l Row Rule Criteria - No Condition
19 January, 2024
3. Create an Action. From the Select Action menu, choose Set Value and enter the below:
l Actions - SetColumnValue
l Field - Firm
l Value/Field - Value
l Value - True
4. Repeat step 3 to set default statutes of the remaining check boxes.
Actions Field Value/Field Value
SetColumnValue Engineered Value True
SetColumnValue Released Value True
SetColumnValue Completed Value False
SetColumnValue Closed Value False
5. Additionally, we'll disable the Closed check box. In the next step, we will create another rule to
allow selecting this check box only when certain condition is met. From the Select Action
menu, select Disable and enter the below:
l Actions - DisableColumns
l Column - Closed
6. Save the layout. Your rule should look as follows:
20 January, 2024
7. Now, create a rule to disable selecting Closed jobs, unless there were Completed.
8. Now create a rule to disable selecting Released jobs, unless they are Firm or Engineered. Be
sure to select OR operator between the conditions.
21 January, 2024
9. Lastly, create a rule to disable displaying Completed and Closed jobs, unless their status is
Firm, or either Engineered/Released (group condition).
22 January, 2024
At this stage, you are ready to publish this layout and make it available to all users. For more
information, see Adding a Layer to the Menu.
23 January, 2024
Skip Landing Page
When you launch an application, you are first presented with the Landing page which populates the
grid with records, such sales orders, quotes or parts.
In some cases, you may want to you may want to modify this user experience. For example, when
your company maintains thousands of part records, you may want to skip the Landing page. Instead,
you want to present users directly with the Details tab, where they can create or select an existing
part they need to work with.
1. From the main menu, go to Production Management > Job Management > Setup > Part.
24 January, 2024
4. Enter a Layer Name, such as SkipLanding and press Save Layer.
5. On the Application Map, select the Part Maintenance Landing Page and press Edit.
25 January, 2024
Using the clause "1=0" ensures no data is sent back to minimize the response
payload.
9. We want this view to automatically load on application start. Select the Set Default option at
the bottom.
10. Now that we created a new view option for the grid, we need to modify the existing one. From
the View Options drop-down, select All.
11. Scroll to the bottom and clear the Set Default option.
12. We will now create an event to open the Main page (shown in step 5). It will run right after the
system Form_OnLoad event. From the sidebar menu, open Events and press to add
a new event and configure it like this:
26 January, 2024
l Rename the event to NavigateToMain.
l Select the No Trigger widget on the design canvas and edit its properties:
o For Type, select Event.
o For Hook, select After.
o In the Target field, choose Form_OnLoad. This event will run immediately after
the system Form_Onload event.
l From Toolbox, select the page-navigate-to action and add it to the workflow.
l Select the action widget to open its Properties. Press Parameters and in the Page
parameter, enter Main.
13. Save the layer and from the Overflow menu, press Publish. Exit Application Studio and Part.
14. Now we need to deploy the layer to other users in the company. In the smart client, go to
System Setup > Security Maintenance > Menu Maintenance.
15. In the tree view, expand Production Management >Job Management > Setup and select
Part.
27 January, 2024
16. Press Customization. Select the layer you created earlier and move it to the Selected
customizations column by using the Right Arrow button.
28 January, 2024
18. We are now ready to test the behavior. Launch Part, observe the Landing Page is skipped and
you are taken to the Details tab.
29 January, 2024
Sliding Panels Overview
Slide-out panels are typically used for showing info, warning, or error messages to a user in a dialog
format. They can also be used to display additional context-specific information.
l In-App
In-App sliding panels are created in an application as standalone pages that you invoke at
runtime by triggering an event. They are specific to that application and cannot be run from
other applications.
l Reusable
Reusable sliding panels are standalone applications which are referenced and run from within
other applications to provide common functionality across multiple applications. Sliding panels
of this type are designed independently from other applications, then referenced and used.
You can create, edit, and add layers on reusable sliding panel applications in Application
Studio to enable code reuse of common dialog-like behavior and other forms across
applications.
30 January, 2024
Creating In-App Sliding Panels
In this example, let us add a sliding panel to the Customer Shipment Entry application. It will be
triggered by a button click and will display the Ship To location on the embedded Google map.
You can design the sliding panel layout using any available or user-defined components, and
widgets. In this example, we are going to add a Website Widget to the slider. We will inject the value
of the ShipHead.ShipTo AddressFormatted field as a query string into the Google Maps search
URL. Google Maps displays an embedded map only if it finds a complete match for the search string,
meaning this scenario will work for real customers, and most likely not for sample ones shipped with
the educational DB - for example, Addison, Dalton, etc.
2. From the Overflow menu in the top right corner of the screen, select Application
Studio.
The Application Studio launches and displays the default Application Map tab.
3. Select the root element in the application navigation scheme and click Add New .
An empty child page is added to the root element.
You must add a new page to the application's root element to be able to convert it
into a sliding panel.
When you select the SlidingPanel page type, the page disconnects from
the navigation tree and moves to the separate Slide Out Panels container.
l Scroll down and select the CollapseOnOutSideClick check box to make your panel
collapse when you click anywhere on the screen outside the panel.
31 January, 2024
5. Select the Ship To Location page in the Slide Out Panels section and click Edit .
The page layout displays.
6. You can use the Width Types field in the page caption properties to set the default width for
the panel. For this example, let's keep it Small.
7. On the Toolbar > Components tab, select the GroupBox component and drag it to onto the
canvas.
You can add the following container-type components to the sliding panel layout:
Panel Card, Panel Card Grid, or GroupBox.
8. In the GroupBox properties, remove the default Label Text and keep this field blank.
9. Now, go to the Widgets tab. Add a Website widget into the GroupBox.
32 January, 2024
10. Select the widget on the sliding panel layout and open its properties.
https://maps.google.com/maps?t=&z=13&ie=UTF8&iwloc=&output=embed&q=
{ShipHead.ShipToAddressFormatted}
33 January, 2024
You use curly brackets to inject EpiBinding value into a URL. In this example, we
use the current data view field value for a Google search query parameter. The
first part of the URL up to the q parameter is standard Google Maps boilerplate
for search.
1. On the Application Map, select the Details page and click Edit .
2. On the page layout, select the Header Details panel card component and open its properties.
3. Expand the Advanced property group and make sure the Enable Action Menu option is
selected.
4. In the same group, open Action Data, press to add a new item and set it up like this:
l ID:ToolShowMap - Remember/Copy this ID, you will use it to set up an event.
l Description: Show on Map
l Icon: mdi mdi-map-marker - Kinetic 2023.2 ships a complete set of Material Design
icons (v3.9.97, see full list here) that you can use in your applications, in this example,
we will use the standard map marker icon.
l ShortCut: Ctrl+M - You can create your own hot-key shortcuts for actions.
34 January, 2024
5. Save the layer.
35 January, 2024
5. Select the No Trigger widget on the design canvas and configure it like this:
36 January, 2024
7. Select the slider-open widget and edit its properties.
8. Expand the Basic property group and open Parameters section,; then in the Page field, enter
the sliding panel ID - ShipToLocationPanel.
9. Save the layer.
37 January, 2024
1. Select a Pack ID whose status is Open.
2. In the Details panel card, select Show on Map in the overflow menu.
When you select the Show on Map icon in the overflow menu, the Ship To location is
displayed on the embedded Google map.
38 January, 2024
39 January, 2024
Creating Reusable Sliding Panels
Reusable sliding panels are separate applications that can be added as a child view to another
parent application. To create a reusable panel, you can use an existing application or create a new
one.
These are the basic steps for setting up a reusable sliding panel in an application:
1. Create a new application or use an existing one. Note its application ID. It consists of a
standard prefix - for example, Erp.UI., and a unique ID - for example, Erp.Ui.PartInfoLookUp.
2. In the parent application - for example, Sales Order Entry, create a new event triggered, for
example, by a button click. The button can be something like Show Part Info.
3. In the Event Editor, go to Toolbox > Components and add an app-open action to the event
workflow.
4. Set up Param properties for the app-open action:
l In the View field, type in the child's application view ID - for example,
Epr.UI.PartInfoLookUp.
l Use the Layer field to specify any modifications you want to apply against this child
view.
l Select the SlideOut option to make the child application slide out and not open in a new
window.
l The next eight fields - OnOk, OnCancel, etc. are used for processing data returned from
the child app. You will get back to them after you set up the closing event in the child
application.
l Use the ValueIn field to specify input parameters you want to pass into the child app. In
the JSON EDITOR, use this syntax to specify a dynamic parameter you are passing: {"
[ParamName]" : "{[DataView.Column]}. For example, {"Filter1" : "
{JobHead.PartNum}"}.
5. If you are passing data from the parent app, in the child app, add an event with an row-update
action in the Event Designer (Toolbox > Actions > row-update).
6. In the row-update action properties, map the incoming value to a column in the child
application data view.
7. In the child app, in the root page properties, add a button control - for example, an OK button,
that will trigger an event that collapses the sliding panel.
40 January, 2024
At runtime, when you invoke a child app, it always launches at the landing (root)
page. Any buttons you add to the root page properties panel will always appear at
the bottom of the application screen if it is launched as a sliding panel. However,
they will not be displayed if the app is launched in a standard window.
8. In the child application's Event Designer, add an event that contains a app-close action
(Toolbox > Actions > app-close).
9. In the app-close action properties:
l Enter a value into the required Result field - for example, OK.
This field can take any available enumerated type values: Ok, Cancel,
None, Abort, Retry, Ignore, Yes, No.
l If the child app returns data into the parent app, use the Dataviews field to specify the
source (child app) and destination (parent) data views.
l Again, if you return any data from the child app, use the ValueOut field to specify
outbound parameters.
You can have multiple events with a app-close action tied to controls in your child application.
For example, you can have OK and Cancel or Yes and No buttons that trigger different view
closing events.
10. Back in the parent application, in the event you used to launch the child app as a slider, bring
up the properties of the app-open action again.
l Select the field that corresponds to the Result specified in the child application - for
example, OnOk.
l Press the Edit button to launch the JSON Editor and add code for processing the
response from the child app.
If you have several possible results in the child app, configure them in corresponding app-
open property fields the same way.
You can set up another application - for example, Customer Shipment Entry, to show the
Erp.UI.PartInfoLookUp application on a slide-out panel.
41 January, 2024
Widgets Overview
Data Discovery widgets are self-contained wizard-based user interface (UI) components that
visualize data provided by the embedded business intelligence system on the Kinetic Home Page.
You can use some of these widgets - Data Discovery Card, Data Discovery Chart, as well as other
Home Page widgets like Website Widget - in your new or modified applications. In the Data
Discovery Card and Chart widgets, you can use the publish and subscribe functionality to set them
up for displaying the data specific to your application context.
In Application Studio, all available widgets display on the Toolbox > Widgets tab of the Layout
Designer.
Widgets appear on this tab only if the Data Discovery extension is installed.
In the three examples below we will add a widget of each available type to the Customer Shipment
Entry application. Follow these steps to create a new layer for this application first:
1. From the main menu, navigate to Material Management > Shipping/Receiving > General
Operations > Customer Shipment Entry.
3. Let us first save the layer. In the top right corner of the screen, press the New Layer link.
42 January, 2024
4. For the Layer Name, type in Widgets.
5. Add a Description - for example, Widgets Demo.
6. In the Layer Selection window, press Save Layer.
7. On the Application Map, select the Details page and click Edit .
The Details page layout displays.
8. From the Toolbox > Components tab, select Panel Card and drag it onto the page layout.
43 January, 2024
9. Select the newly added panel card and edit its properties and expand the Basic group:
10. Now define some structure for the Customer Metrics panel card by adding a Column
component to it. This creates a page-wide container for other components you can add to the
panel card.
Go to Toolbox > Components, select 1 Column and add it to the panel card.
11. Select the Column component on the layout and go to the Properties list.
12. Expand the Advanced property group and change Orientation to horizontal to stack inside
components side by side instead of one on top of the other (default vertical orientation):
44 January, 2024
Stay in the Application Studio and move on to the first example - Adding a Data Discovery Card to a
Kinetic App.
45 January, 2024
Adding a Data Discovery Card to a Kinetic App
Data Discovery Card is a widget that provides a summary of data in just one number - for example,
the sum of all open orders value for customers, which you can build into your Kinetic application as is
or, if necessary, filtered by the current customer using the publish and subscribe functionality. In this
example, let us do something similar.
3. From the Data Discovery View drop-down, select one of the preset views - for this example,
Customer Past Due Balance.
The widget title is populated automatically. You can change it to your own any
time. The widget preview also displays. It shows the past due balance for all and
each customer as you click through the slider.
46 January, 2024
5. Let us now make the widget display a value relevant to a specific customer who the current
shipment record belongs to.
47 January, 2024
7. Click the New icon in the top right corner of the panel.
A new line is added to the grid.
8. From the Subscriber drop-down that lists fields exposed by the selected view, choose
Customer, which is a customer name.
9. Keep the = (equals) condition.
10. In the Publisher field, select ShipHead.CustomerName column that stores the current
customer name. Then click OK.
11. Launch application preview.
12. On the Customer Shipment Entry landing page, select any record from the grid.
13. Note that the Customer Past Due Balance widget displays the value for the current customer
- in this case, Dalton Manufacturing:
48 January, 2024
Move to the next example - Adding a Data Discovery Chart to a Kinetic App.
49 January, 2024
Adding a Data Discovery Chart to a Kinetic App
In this example, you will add one of the system chart views provided by Data Discovery to the Kinetic
Customer Shipment Entry.
1. Go to the Toolbar > Widgets tab, select the Data Discovery Chart widget and drag it to the
Customer Metrics panel next to the Customer Past Due Balance widget.
2. For Data Discovery View, select Sales Orders - Value by Month and click OK.
The widget on the layout displays the chart based on the system BAQ used for this view.
3. You can adjust widget height and width by specifying the number of pixels in the Height and
Width property fields respectively. Set the width of the widget to 300.
4. You can further tune the data displayed by the widget by using the publish and subscribe
functionality (Pub Sub Setup). For example, if you create your own chart view based on a
50 January, 2024
custom BAQ, and display it in your Kinetic application, you can link the displayed data to
current customer, part, etc.
5. You can change the view any time by clicking the Guided Setup button in its properties.
Note the newly added Sales Orders - Value by Month widget displays a chart.
51 January, 2024
You can now move on to the third example - Adding a Website Widget.
52 January, 2024
Adding a Website Widget
In this example, we will use a simple demo to step through a typical Website widget setup. This
example is revisited and enhanced in the Working with Sliding Panels section of the Application
Studio help.
1. On the Toolbar > Widgets panel, select the Website widget and drag it onto the canvas next
to the Data Discovery widgets.
2. Select the Website widget on the layout and modify its properties:
https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d26371661.85956456!2d-
113.72360706725829!3d36.21040627051876!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!
3m3!1m2!1s0x54eab584e432360b%3A0x1c3bb99243deb742!2sUnited%20States!5e0!
3m2!1sen!2sru!4v1600081621641!5m2!1sen!2sru
You can specify both static or dynamic URLs. Dynamic URLs contain context-
specific parameter(s) taken from the dataview - for example, some field value. To
pass a field value into the Website widget URL, enter its Ep Binding value in curly
brackets - {}. For example, {Customer.CustID}.
53 January, 2024
3. Optionally, you can select:
l the Token check box to configure the Website widget to use authenticated visitors.
l the User Context check box if you need to pass the current Kinetic user information to
the web resource.
4. Launch the preview and drill into one of the records on the Customer Shipment Entry landing
page.
Note the website widget displays the embedded map from the Google Maps website.
54 January, 2024
55 January, 2024
BAQ Reports Overview
Everything is data-driven now. However, data provides value only if users can easily access and
report on it in an automated fashion and in real time. In the Kinetic, you can create your own
Business Activity Queries to pull in a specific set of information from your database and convert them
into custom SQL Server Reporting Services (SSRS) Reports.
You create custom queries through the Business Activity Query Designer program. You then use
the BAQ Report Designer to select this BAQ as the base for a report - and also define the option
fields, filters, and sort by options that will appear on the report interface. The reports you create
through this tool are flat reports; they are restricted to only pull data from the table defined on their
selected BAQs.
You can also use one or more of your queries as data sources for more complex reports you create
in the Report Data Definition program. When you set up a report definition based on multiple BAQs,
you can also define standard report criteria and filters as well as the parent-child relationship for the
source BAQs.
56 January, 2024
Modifying the BAQ Report Submission Form
Conversion program 180 that automatically runs during system upgrades does not
convert customization layers for BAQ reports. You need to recreate them using
Application Studio.
If you do not have BAQ reports in Kinetic, first you need to create a BAQ report app in BAQ Report
Designer and add it to your menu.
1. From the main menu, go to the location where you have added you report and run the app.
Your BAQ reports displays as a Kinetic UX application. Note that the Options panel cards is
expanded.
2. Press Ctrl + Alt + D to launch Application Studio.
If you don't have an SDK license, by default, the Application Studio opens with a
new layer and all your changes will be applied to it.
3. On the default Application Map view, note that your report has got a single page. Select it and
57 January, 2024
Note that the expanded Filter panel card now displays at the top of the page.
58 January, 2024
Working with Dashboards
Dashboards are flexible, powerful tools that provide easy access to critical information in a real-time
environment. In addition to the standard dashboards available in the application, you can also create
custom dashboards that display specific data you need.
Think of a dashboard as your personalized information and command center. Much like your car’s
dashboard gives you current information and controls to run the car, the dashboard displays the
current information and processes you need to more efficiently perform your tasks. The data you
choose to display can be refreshed automatically or manually, so you are able to act on changes as
they immediately occur.
Now you can test, generate, and deploy any dashboard as a Kinetic UX application, and then add it
to the main menu to make it available for other users within your company. And after that, you can
modify your dashboard the way you want it to be using Application Studio.
59 January, 2024
Converting Dashboards into Kinetic
Use Conversion Workbench to both generate new custom dashboards and regenerate existing
custom dashboards for use in Kinetic. Do this by running two conversion programs -
GenerateNewKineticDashboards and GenerateAllKineticDashboards.
1. From the main menu, navigate to System Management > Upgrade/Mass Regeneration >
Conversion Workbench
60 January, 2024
5. Select the Activity tab. The Conversion log displays. Review the list of converted dashboards:
1. From the main menu, navigate to System Management > Upgrade/Mass Regeneration >
Conversion Workbench.
61 January, 2024
5. From the Overflow menu , select Submit.
6. Select the Activity tab. This conversion program regenerates all the custom dashboards,
regardless of whether they were generated before.
To verify that the conversion created the specified dashboards, navigate to the
Application Studio home page and look for the corresponding widgets or links.
62 January, 2024
Modifying Kinetic UX Dashboards
Just like any other application, you can modify your dashboards using Application Studio.
Before you can modify a Kinetic UX dashboard, you need to create a classic dashboard or update an
installed dashboard. Generate it as a Kinetic UX application and add it to the main menu using Menu
Maintenance.
Conversion program 180 that automatically runs during system upgrades does not
convert customization layers for dashboards. You need to recreate them using
Application Studio.
Before you start creating/converting a dashboard, make sure you have Dashboard
Developer rights enabled on your account in User Account Security Maintenance.
1. From the main menu, go to Executive Analysis > Business Activity Management > General
Operation > Dashboard.
2. If necessary, from the Tools menu, select Developer. This ensures that you are working in the
developer mode as you generate the dashboard.
3. Select Definition ID and search for and select SalesOrderBacklogSts.
4. You see a message that system dashboards cannot be modified. Click OK.
5. Copy the dashboard. Go to File > Copy Dashboard.
6. The Copy Dashboard dialog box displays. Enter a Definition ID, such as SOBacklogKinetic
and click the OK button.
7. If your Classic dashboard has a URL/XSLT view, verify that this view points to a HTTPS site.
Kinetic only supports HTTPS sites. If you generate a dashboard to an HTTP or different site,
you will cause an error and the URL/XSLT view may not display site content in your
dashboard.
8. Generate the Kinetic UX version. From the Tools menu, select Deploy Dashboard.
63 January, 2024
9. The Deploy Dashboard window displays. Go to the Application section and select Preview.
10. The dashboard definition builds; the field at the bottom of the window displays its progress.
The dashboard opens as a Kinetic application in a separate window.
11. Test the dashboard to make sure it loads the information you need and displays it in the format
you want.
Dashboard grids converted from ERP Classic to the new UI automatically include
the Full Screen button for displaying additional data.
64 January, 2024
12. Once you are done with testing, exit the dashboard.
You return to the Deploy Dashboard window.
65 January, 2024
13. Select the Generate Application check box.
This generates the Kinetic dashboard file and uploads it to a folder to the
following directory: Server\Apps\MetaUI. The name of the folder is the name of
the generated Kinetic dashboard application, you can review it in the field at the
bottom of the Deploy Dashboard window. For this dashboard, the name is
Ice.UIDbd.SOBackLogKinetic. Note the name as you will need it in the next
task.
66 January, 2024
3. Menu Maintenance displays. Select the menu inside which you will add the dashboard on the
Landing Page, such as MAINMENU.
4. You are adding this dashboard to the Status Dashboards menu folder. In the Nav Tree, select
the Executive Analysis > Status Dashboards folder.
7. In the Name field, enter XXX Kinetic SO Backlog Status Dashboard, where XXX are your
initials. This name will display as the name of your Kinetic dashboard in the main menu.
8. From the Module drop-down list, select UD.
9. Verify Order Sequence is set to 0 so that this menu item remains the first one in the Status
Dashboards folder.
67 January, 2024
10. Go to the Program Type drop-down list and verify Kinetic App displays.
11. Go to the Kinetic Application field. Select the Search icon and find
Ice.UIDbd.SOBackLogKinetic.
12. Select Save and restart Kinetic. You can now launch this Kinetic dashboard from the
Executive Analysis > Status Dashboards folder in the main menu.
68 January, 2024
5. From the Overflow menu , select Application Studio:
Depending on the rights in your user account, you can customize this Kinetic UX
dashboard in a couple ways. If you have Dashboard Developer rights and you
generated the Kinetic UX version, you can make changes to the base dashboard
application. If you have Customization rights, you can also create layers for this
dashboard to design different versions of it. Other users cannot make changes to this
dashboard.
69 January, 2024
1. On the Application Map, select the dashboard page and the Edit icon.
2. Go to its Properties.
3. In the Caption field, enter XXX (where XXX are your initials) before Sales Order Backlog
Status.
4. The page title switches to XXX Sales Order Backlog Status, where XXX are your initials.
5. Select the Sales Order Backlog Status panel grid card and go to the Properties panel.
6. Expand the metafx-panel-card-grid>Basic property group and change the Title field to SO
Backlog Status.
70 January, 2024
You can preview how the dashboard looks and functions any time in the process.
71 January, 2024
8. The properties of the first column (Customer_Name) display. The Columns drop-down
contains all columns defined for the grid.
9. Select the OrderHed_PONum column and press Remove. The SO Backlog Status
grid refreshes without this column. This way you can delete any columns that you do not need
in the grid.
72 January, 2024
11. Expand the Advanced group; scroll down to the Expand at Runtime check box and select it.
This way the panel card will always expand when you run the application.
12. Open View Options. View options represent the filters available in this dashboard for the SO
Backlog Status grid. When you open the dashboard, the records in the grid filter by Open
Releases by default.
View options are created based on the existing BAQs. You will add a new view
option in the next task.
73 January, 2024
13. Note that the drop-down contains these grid views:
l Open Releases
l Late Releases
l This Week's Releases
l Next Week's Releases
l Completed Releases
14. Select the Open Releases view option and clear the Set Default check box.
74 January, 2024
15. Then, select the Completed Releases view option.
17. Select Save. Now when you filter or run the dashboard, the grid's filter changes to
Completed Releases. This way the grid will always use this filter when you open the
dashboard.
75 January, 2024
Adding a View Option to a Grid
You can add a simple BAQ-based view option for this dashboard. In this task, use the same BAQ
that is used for the view options in this dashboard.
1. In the Advanced > View Options section, select the Completed Releases view option and
copy its Baq ID. This is the ID of the BAQ you will use as the base for your view option.
76 January, 2024
2. Press to add a new view option. You will add a view option that will filter all records
whose open value is more than 10,000.
77 January, 2024
3. In the Description field, enter Open Value More Than 10,000.
78 January, 2024
5. Go to Baq Options.
6. In the Where field, enter the following where clause: Calculated_OpenValue > 10000.00.
79 January, 2024
8. From the combo box in the panel card header, select Open Value More Than 10,000.
80 January, 2024
Introduction to User-Defined (UD) Forms
Kinetic delivers 40 standalone (single-table) and 11 parent/child (parent-child table) User-Defined
(UD) tables. These empty tables (UD01-UD40, UD100-UD110) are 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 so users can enter and store data unique to your organization and/or industry. You
can use these tables to create your own entry programs of the Kinetic App type and display this user-
defined data in applications.
To create a custom Kinetic UX application off a system UD table, you first use Menu Maintenance to
add this UD table directly to the Menu and then configure it in the Application Studio.
Each UD table (including the Child table in UD100-110) has five primary keys. The other keys
contained within the user-defined table can be used to enter additional primary data. However if you
do not need them, you may hide these keys from view. You can also add other controls to the UD
application UI.
Prent/Child tables all have the same basic functionality as the Standalone tables, but they contain
additional functionality you use to create parent/child data relationships.
Using file names UD100 to UD110, these user-defined tables are made up of two tables – a Parent
table and a Child table. UD100, for example, has the parent UD100 table and a child table, UD100A.
The UD100A table holds the child data to its parent table. Each parent and child table has five main
keys for the data you want users to enter; however, you can add other elements as you need.
Do not confuse creation of user-defined fields with UD tables delivered directly with the
system. User-defined fields are additional columns you add to an existing table via the
User Defined Column Maintenance program. When you search for these custom
columns, their names include the "_c" suffix. For an example of creating and using
extended user-defined fields, please review the Part Advisor Modification Walkthrough.
81 January, 2024
Scenario Overview
You will create a user-defined program by modifying one of the existing UD Entry forms shipped
withKinetic. You will use the UD05 table to store a list of service agreements that will be applied to
sales order records in the OrderHed table.
To complete this walkthrough, you need to make sure you have all the required
permissions and rights set up for your user account:
82 January, 2024
Adding Menu Item for the UD05 Entry
Menu items for the provided UD tables do not show up in the Kinetic menu by default. In this step,
create a menu for the UD05 Entry program so that you can open it and edit in Application Studio.
3. In the Tree View, navigate to Main Menu > Sales Management > Order Management >
Setup.
5. For the Menu ID, type in UD05XXX where XXX are your initials.
6. For the Name, type in XXX Service Agreement Maintenance where XXX are your initials.
7. Specify Order Sequence to make sure your new menu item is somewhere at the top of the list.
8. For the Program Type, select Kinetic App.
9. Then in the Kinetic Application field, enter or search for Ice.UI.UD05Entry.
83 January, 2024
This selector displays the list of all Kinetic UIs available to users including the 51
system UD Entry programs.
84 January, 2024
Modifying Service Agreement Maintenance
1. Launch XXX Service Agreement Maintenance.
2. From the Overflow menu in the top right corner of the screen, select Application Studio.
3. On the map, select the Details page; on its Properties panel, remove the Key1 text from the
Page Caption property so it reads as {UD05.Key1}.
85 January, 2024
4. Then click Edit .
The Details page layout displays.
5. Select the (Do not remove) Key1 text box; on the Properties panel, expand the Basic
property group and change Label Text to Service Code.
6. From the Toolbox > Components, select the Numeric Box component and drag it onto the
panel card that contains the default controls - Key1 (Service Code) and Character01
(Description).
7. Select the new component and edit its properties as follows:
86 January, 2024
Now make a few more cosmetic changes to the UI.
11. Go to the Application Map tab and select the UD05 Entry node.
12. On the Details pane, change the Caption to Service Agreement Entry.
13. Now, select the UD05 Maintenance node and change its caption to Service Agreement
14. Select the UD Codes; then in its Properties, change the Basic > Title to Service Agreements.
15. Change the Key1 search box Label Text to Code.
16. On the Properties panel, expand the Data property group and go to Grid Model > Columns.
87 January, 2024
19. Use to add two more columns - Number01 and Number02. In their Field property, type
in Number01 and Number02 respectively to bind them to these table columns.
20. Define the Title property for these four columns per table below:
Column Title
Key1 Service Code
Character01 Description
Number01 Coverage Limit
Number02 Effective Months
88 January, 2024
Deploying SA Maint XXX Layer
To make your changes available to users, you must apply your layer to the application. You do this in
Menu Maintenance.
1. Launch Menu Maintenance and open the XXX Service Agreement Maintenance menu
where XXX are your initials.
Menu Path: Sales Management > Order Management > Setup > XXX Service Agreement
Maintenance.
2. In the menu properties, enter or search for the customization in the Kinetic Customization
field.
3. Select the Select check box beside your layer from the list of available customizations.
4. Select Apply.
89 January, 2024
Adding UD Field to OrderHed Table
In this step, let's add a user-defined (UD) field to the OrderHed table. This column will store the
Service Agreement code and will be linked to the Key1 field of the UD05 table in the next step.
Menu Path: System Setup > System Maintenance > UD Column Maintenance.
The new OrderHed_UD table is created. The Table not in database shape displays on table details.
90 January, 2024
6. Select Save.
7. Expand the Columns card, and select Add to add new column.
91 January, 2024
l Column Name - ServiceCode.
When you tab out of this field, a _c postfix is automatically added to the
column name, so the full field name you will use in EpiBinding is
ServiceCode_c.
92 January, 2024
Regenerating Data Model
In this step, add your new column to the Data Model so that it becomes available for Order Entry
configuration.
You should regenerate the data model as soon as possible after you add a new user-
defined column. Users should also log out of the Kinetic system as the data model
regenerates. While the system will usually work as expected, some processes may
generate errors when the user-defined metadata does not match the data model.
For the detailed description of this process, please refer to the help documentation
within the Epicor Administration Console.
93 January, 2024
5. Once it has been successfully completed, in the navigation, select your Kinetic instance and
click Recycle IIS Application Pool on the right-hand Actions panel.
6. After the application pool has been successfully recycled, back on User Defined Column
Maintenance, click Refresh.
The OrderHed_UD table details now display two green shapes - Table in Sync and Data
Model in sync.
Move on to the next step - Defining Extended Properties for the UD Field.
94 January, 2024
Defining Extended Properties for the UD Field
In this step, we will link the Key1 field of the UD05 table to the ServiceCode_c UD field of the
OrderHed table.
1. From the main menu, navigate to System Setup > System Maintenance > Extended
Properties.
2. Locate the OrderHed_UD table that contains the column you wish to modify by using the Data
Table ID search window above the landing page grid or grid filters.
If you know exactly what table you are looking for, in the grid header, you can
select the System Code, type in the Data Table ID, and press Tab on your
keyboard to go straight to the record.
3. On the Field List card, select the ServiceCode_c column you wish to modify.
95 January, 2024
Move on to the next step - Adding Service Agreement Records to Database.
96 January, 2024
Adding Service Agreement Records to Database
In this step, let us use the modified UD05 Entry to add several Service Agreement code records:
3. Enter the data for the first agreement code and save it.
97 January, 2024
4. Add the three other records and see that now they all display in the Landing Page grid:
Move on to the next step - Adding a Combo Box with Service Codes to Order Entry.
98 January, 2024
Adding a Combo Box with Service Codes to Order
Entry
In this step, add a new field to Order Entry and bind it to the OrderHed.ServiceCode_c. This will allow
selecting a service agreement code for a sales order record.
2. From the Overflow menu in the top right corner of the form, select Application Studio.
3. Now, on the Application Map, select the Details page and press Edit.
99 January, 2024
4. From the Toolbox > Components, select Combo Box and drag it to the Order Detail panel.
6. Expand the Reusable Combo property group and configure the combo like this:
7. Expand the Advanced field, select DropDown and set up the following properties:
8. Press Preview .
9. Open any order. Note that the Service Code combo box contains the four records from the
UD05 table available for selection:
If you still need to keep the base Order Entry application on the menu, you can create a
separate menu item for the modified Order Entry application - for example, Order Entry
- Service Codes.
3. In the tree view, expand Sales Management > Order Management > General Operations
and select Order Entry.
4. In the menu properties, enter or search for the customization in the Kinetic Customization field.
The Kinetic Customization slides on. In the Available customizations column, you can select
which layers you want to apply to this application. Note you can see only the layers that have a
description.
Functions give you the ability to define exactly the service, method and parameters you wish to
expose dynamically. It also allows you to define exactly which parts of Kinetic you wish to interact
with - services, assemblies, or database tables.
Functions are created within a library. Library is Functions' single unit of deployment.
Because Functions are server-side modifications, you can reuse a Function across any client as well
as from BPM directives. They are also exposed in the Kinetic REST API v.2. Kinetic applications
interact with the server using REST calls to the API v.2 endpoints. In Application Studio, you can
create events that execute these calls to perform the requested custom server logic.
For more information on this functionality, see the Walkthrough: Making Counter
Sales Easier in Application Help.
In this scenario, there's a soap producing and selling company. They want to add a part subtype
property that would display a specific type of soap based on its usage - beauty soap, guest soap,
kitchen soap. etc., and would be mostly used for reporting purposes. They want to display this soap
type info in the Part Advisor Tracker, a useful function that answers basic questions about a
particular part as you quote parts, or prepare for production of a particular part. The company also
wants to pull some additional part information to the Activity sheet of the tracker based on system
BAQ data.
l Creating a user-defined (UD) column and binding it to the part subtype (Soap Type)
listSince there's no system field to store part subtypes, you will create a UD field using UD
Column Maintenance.
l Modifying Part Maintenance to enable soap type entry for specific parts
You will add a new combo box that will display soap type codes to the Part Maintenance
application. In addition to that, you will add an event that will be triggered by a button click and
will display different websites depending on the current soap type.
Menu Path: System Setup > System Maintenance > User Codes.
2. In the Column Detail card, select New to add the new code type.
6. Save your code type, then select New in the Codes card to add the new code.
Use the data from the table below for code definitions:
Note that the new table ID conforms to the following naming convention: parent
table ID + _UD suffix. The Table not in database shape displays as the new
Part_UD table has not been added to the data model.
Note that when you move on to the next field, the _c suffix is automatically added
to the Column name.
If you are using the on-premise Kinetic environment, complete these steps to add the Part_UD table
to the Kinetic database:
4. Click Generate.
5. Once the regeneration process completes successfully, from either the Action menu or the
Actions pane, select Recycle IIS Application Pool.
6. Now go back to the User Defined Column Maintenance program in Kinetic to verify the table
has been added to the database.
Note that for the Part_UD table two green shapes now appear on the Table
sheet: Table in sync and Data Model in sync. The UD column you have added
can now be used for binding.
4. Go ahead and save your layer right away. Select the <NewLayer> link in the top-right corner
of the screen. The Layer Selection panel slides on.
5. Type in XXX_SubTypes where XXX are your initials for Layer Name.
6. Add a Description - for example, Subtypes and Website Launch Event.
7. On the Toolbox > Components tab, select Combo Box and add it to the General column of
the Attributes panel card:
This is a predefined system combo box type that is already set up to fetch
data from the UDCodes database table. You just need to specify your
Code Type as a parameter.
All the necessary properties of the component get populated. Note the
value of the Filters field - CodeTypeID = '?{CodeTypeParam}'. The Code
Type ID is mapped to the Code Type parameter. In the next step, define
this parameter.
l Finally, go to the Advanced property group and in the Drop Down Style field, select
DropDownList.
If you don't specify a value in this field, by default, the DropDown type is
defined for the combo box meaning that users will be able to type in a value
into this field. DropDownList only allows selecting one of the listed values.
3. In the Tree View, navigate to Material Management > Inventory Management > Setup.
4. In the Menu Items card, select New to add the menu item.
5. For the Menu ID, type in UDXXXPRT where XXX are your initials.
6. Make sure the value of the Module field is set to UD.
7. For the Name, enter XXX Part - Subtypes where XXX are your initials.
8. Select Order Sequence.
The greater the value, the lower the position of your item in the menu list.
9. For the Program Type, select Kinetic App.
10. Enter Erp.UI.PartEntry in the Kinetic Application field or search for and locate the application.
11. Select Search in the Kinetic Customizations field. The Kinetic Customizations panel slides on.
12. From the Customization drop-down, select your layer: XXX_SubTypes:
5. Keep the button properties open and move on to the next sub-step to set up the event.
1. On the Launch Google Search button's Properties panel, expand the Behavior property
group and select the On Click option.
This automatically creates an event with the Launch Google Search button specified in its
trigger.
2. Go to the Toolbox > Actions tab and select Switch; drag it onto the canvas.
It automatically connects to the Trigger.
4. In the Basic group, open Parameters > Case Statements and press to add a new
case.
6. Open Action. On the Select an Action panel that slides out, select url-open. The workflow
should now look like this:
1. From the sidebar menu, open Data Rules and press to add a new rule.
2. Set up the rule as shown on the image below:
You can use logical operators - AND (Default) and OR - to define the relationship
between multiple conditions. Click on the operator to toggle between the two
available values.
When you add the Action, select the SettingStyle > SettingStyle.Disabled
action.
In Actions > Field, type in the value of the EpBinding property of the Launch
Google Search button without the Part data view prefix - BtnLaunchWebsite.
4. From the Toolbox > Components, select the Text Box component and drag it onto the
canvas.
7. For both the Layer Name and Description, type in XXX_SoapType where XXX are your
initials.
6. In the Conditions section, from the Select Condition drop-down, choose the Condition option.
11. In the Actions section, from the Actions drop-down, select SettingStyle.Status.
16. Save and Publish the layer; then exit Application Studio.
Move on to the next step - Adding a Panel Card with Additional Part Info.
Do not forget to enter a layer description. In this example, make it identical to the
layer name - XXX_WhereUsed where XXX are your initials.
l Expand the Basic property group and for Id, type in whereUsedPart.
l For Title, enter Where Used
2. Now go to Grid Model > Columns and press to add a new column. We will specify
Field (as it appears in the BAQ's Display Fields), Title (that we want to display), and Erp Editor
(data type):
1. In the grid properties, go to the Advanced group again and open View Options.
Move on to the final step of the walkthrough - Deploying the Part Advisor Configuration.
In this example, we will create a new menu, but you can also apply layers to existing
menus. For example, you can use different Kinetic App menus for Part Advisor for
different user groups, or have just one if you want all users to have access to your
configuration.
5. For the Menu ID, type in UDXXKNTC where XX are your initials.
6. Make sure the value of the Module field is set to UD.
7. For the Name, enter XXX Part Advisor where XXX are your initials.
8. Keep the default Order Sequence.
The greater the value, the lower the position of your item in the menu list.
9. For the Program Type, enter or search for Kinetic App.
10. Enter or search for Erp.UI.PartAdvisor in the Kinetic Application field.
11. In the menu properties, enter or search for the customization in the Kinetic Customization
field.
12. Select the Select check box beside your layers from the list of available customizations.
l Open part 00C1 and note that the part's Soap Type displays.
l Open part 00C2 and note the Description and Product Group fields are highlighted (the
rule is applied).
l Go to the Activity tab and note the Where Used grid displays All and Unapproved
parent parts for the current part.
Verify the application works with the applied XXX_SubTypes layer correctly:
l Open part 00C1A and go to the Attributes page. Note the Soap Type combo box and
the disabled Launch Google Search button.
l Open Part 00C2A and on its Attributes page, note the Launch Google Search button is
enabled.
l Press the button to verify it opens the correct search page in the browser.