Академический Документы
Профессиональный Документы
Культура Документы
0
Tools
User Guide
Disclaimer
This document and its contents, including the viewpoints, dates and functional content expressed herein are the
proprietary copyrighted property of Epicor Software Corporation, are intended for informational purposes only and
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 support
representative, account manager and/or consulting personnel. 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. 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 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 applicable laws or other statutory
or regulatory 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, Business Inspired
and the Epicor logo are trademarks of Epicor Software Corporation, registered 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 2014. All rights reserved. No part of this publication may be reproduced in any form
without the prior written consent of Epicor Software Corporation.
10.0.700
Revision: June 26, 2014 3:14 p.m.
Total pages: 813
sys.ditaval
Epicor ICE 3.0 Tools User Guide Contents
Contents
Introduction..........................................................................................................................17
Chapter 4: Searches.......................................................................................267
Default Search Interface...............................................................................................................................267
Default Features...................................................................................................................................268
Hot Key Searches.........................................................................................................................................270
Quick Searches............................................................................................................................................271
Create a Quick Search..........................................................................................................................272
Activate Quick Search Functionality................................................................................................272
Create a Quick Search – Detail Sheet.............................................................................................273
Create a Quick Search – Criteria....................................................................................................276
Test a Quick Search.......................................................................................................................280
Display a Quick Search..........................................................................................................................281
Quick Search Tab...........................................................................................................................281
Context Menu Options..................................................................................................................282
Default Search Program.................................................................................................................284
Business Activity Query Searches..................................................................................................................285
Chapter 5: Dashboards..................................................................................321
Standard System Dashboards.......................................................................................................................321
Navigate in a Dashboard.......................................................................................................................322
Conduct an Advanced Search...............................................................................................................324
Authorization...............................................................................................................................................325
Assign Dashboard Developer Privileges.................................................................................................326
Dashboard Creation.....................................................................................................................................327
Launch the Dashboard and Switch to Developer Mode.........................................................................327
Add a Query to the Dashboard.............................................................................................................329
Add the Query...............................................................................................................................330
Modify Query Properties.......................................................................................................................333
Modify Query Properties - General Properties.................................................................................334
Modify Query Properties - Publish to Title Bar.................................................................................335
Modify Query Properties – Apply Filters to a Query.........................................................................336
The Grid View.......................................................................................................................................338
The Grid Properties Window..........................................................................................................338
Modify Grid Properties – Change Display Columns and Enable Group By and Summarization
in a Grid............................................................................................................................338
Modify Grid Properties - Change the Grid Display...................................................................341
Modify Grid Properties - Apply a Filter to a Grid......................................................................344
Add a New Grid View to the Dashboard.................................................................................345
Modify Grid Properties - Add a Rule to Highlight Cells............................................................348
Modify Grid Properties - Add an Image Column to a Grid Based on a Rule..............................351
The Chart View.....................................................................................................................................354
The Chart Properties Window........................................................................................................354
Add a Chart View to the Dashboard.......................................................................................354
Chart Settings...............................................................................................................................357
Modify Chart Settings............................................................................................................357
The Tracker View..................................................................................................................................359
The Tracker Properties Window.....................................................................................................360
Add a Tracker View for an Advanced Search...........................................................................360
Add an Advanced Search with Range.....................................................................................362
The Gauge View...................................................................................................................................368
The Gauge Properties Window......................................................................................................368
Add a Gauge View to the Dashboard.....................................................................................368
The URL/XSLT View...............................................................................................................................370
URL/XSLT Properties.......................................................................................................................370
Add a URL Link to Display the Customer Website...................................................................371
The Process Link...................................................................................................................................372
Process Link Properties...................................................................................................................373
Add a Process Link for Customer Entry...................................................................................373
Publish and Subscribe Functionality..............................................................................................................375
Add a Secondary Query to Display Line Item Shipment Information.......................................................375
Publish..................................................................................................................................................377
Publish Fields from a Query............................................................................................................377
Subscribe..............................................................................................................................................378
Apply a Filter that Subscribes to the Published Order and Line Number..........................................378
The Dashboard Browse................................................................................................................................379
Add a Dashboard Browse to the Dashboard..........................................................................................380
Dashboard User Notes and Tech Notes.........................................................................................................383
Update Dashboard User Notes and Tech Notes.....................................................................................384
Dashboard Properties...................................................................................................................................385
Modify the Dashboard Title Bar.............................................................................................................385
Enable the Dashboard as Advanced Search...........................................................................................387
Dashboard Modification...............................................................................................................................388
Copy a Dashboard................................................................................................................................388
Multi Threaded Save....................................................................................................................................390
Reusing Views..............................................................................................................................................392
Flow Chart....................................................................................................................................507
Condition...............................................................................................................................507
List of Conditions...................................................................................................................508
Labels............................................................................................................................................515
Attach Data Tag.....................................................................................................................515
Remove Data Tag...................................................................................................................516
Attach Hold............................................................................................................................517
Remove Holds........................................................................................................................518
Other............................................................................................................................................518
Auto Print..............................................................................................................................518
Change Log...........................................................................................................................519
Enable Post Directive..............................................................................................................520
Notify Me...............................................................................................................................520
Raise Exception......................................................................................................................521
Send E-mail............................................................................................................................521
Show Message.......................................................................................................................522
Setters...........................................................................................................................................523
Set BPM Data Field.................................................................................................................523
Set By Query..........................................................................................................................524
Set Field.................................................................................................................................524
Support for Multiple Dirty Rows............................................................................................................525
Dependent Directives...................................................................................................................................525
Primary Directive...................................................................................................................................526
Dependent Directive.............................................................................................................................526
Case Studies................................................................................................................................................526
Make a Field Mandatory.......................................................................................................................526
Add a Method Code......................................................................................................................526
Add a Pre-Processing Directive.......................................................................................................528
Add First Condition.......................................................................................................................529
Extend First Condition...................................................................................................................531
Add First Action.............................................................................................................................533
Add Another Condition.................................................................................................................534
Check for Sales Kit Part.................................................................................................................536
Extend Second Condition..............................................................................................................538
Add Second Action........................................................................................................................540
Test the BPM for the Part Class......................................................................................................543
Test the BPM for the Part Group....................................................................................................545
Create and Use a Hold Type..................................................................................................................546
Create the Hold Type.....................................................................................................................546
Add a Method Code......................................................................................................................548
Add a Pre-Processing Directive.......................................................................................................549
Add an Action...............................................................................................................................552
Add a Pre-Processing Directive.......................................................................................................553
Add an Action...............................................................................................................................556
Add a Post-Processing Directive.....................................................................................................557
Add an Action...............................................................................................................................559
Add a Post-Processing Directive.....................................................................................................560
Add an Action...............................................................................................................................562
Add a Method Code......................................................................................................................563
Add a Pre-Processing Directive.......................................................................................................564
Add an Action...............................................................................................................................566
Test the BPM.................................................................................................................................568
Use Auto Print Action...........................................................................................................................569
Locate the OrderHed Table............................................................................................................569
Add Standard Directive..................................................................................................................570
Add an Action...............................................................................................................................573
Define Report Parameters..............................................................................................................575
Test the BPM.................................................................................................................................576
Introduction
The Epicor ICE 3.0 Tools User Guide explores the data gathering and monitoring tools available within the Epicor
ICE framework. This guide is intended for managers responsible for fine-tuning their departmental use of the
Epicor 9 application and advanced users looking to manage and display key data for their specific business needs.
The first chapter details how you can generate data automatically through a regular schedule for selected reports,
processes, and dashboards. Next you learn about attaching files, like spreadsheets and CAD designs, to specific
records using the Enterprise Content Management feature set. Then the Reporting Tools chapter explains the
report generation functionality available through the Crystal Reports and SQL Server Reporting Services (SSRS)
programs, describing how these report writers integrate with your Epicor application.
The next chapters examine business activity queries, or BAQs, which are the primary query tools you use for
pulling, displaying, and entering specific data. You can create BAQs that display unique views of data, and also
updatable BAQs that contain fields you activate for data entry. Then the chapters that follow explore how you
incorporate BAQs for custom use on search programs, BAQ reports, smart client dashboards, executive dashboards,
and mobile device dashboards.
The rest of the guide documents the tools you use to regulate, secure, and distribute data throughout your
organization. The Business Activity Manager chapter provides step-by-step instructions on creating specific logs,
email alerts, and automatic reports for database activities you define. Then the Business Process Management
chapter describes how you create method, data, and BAQ directives that ensure data entries are valid and reflect
your business cycle. The guide concludes with chapters that document the methods available for securing your
data and duplicating it for read-only display within other areas of your organization.
Use this guide as a starting point to learn about the available data flow tools and as a reference for later use of
these same tools. This guide is a crucial resource for anyone who monitors data to both manage and enhance
their organization’s unique business practices.
Use the Business Activity Query (BAQ) Designer to create personalized queries or to copy system queries so you can
modify them. Queries can be accessed in different ways throughout the Epicor ERP application. Queries can be used
to generate Reports, included in application Searches, displayed and updated through a dashboard and mobile devices.
BAQ execution results can also be exported as .xml or ASCII files, so you can edit their data in third party applications
as well. The functionality has some security options, as you can create queries only available for your personal use, or
create shared queries available to everyone within your company.
Leveraging this functionality does require some fundamental knowledge of database concepts such as table relationships,
records, and field types. This knowledge helps you create queries that have good performance and display the results
you want. You start by defining the information to display through your BAQ, and then finding out which database
tables contain the appropriate columns which hold this data. Some application tools are available which can help you
find the database information you need. This chapter describes these tools.
Once you determine the information you want to display, you can begin creating the query through the Business
Activity Query Designer. Use the Query Builder sheets to define which tables you want to include in your main query,
potential subqueries and what relationship they have with each other. You also define subquery parameters and decide
which columns you want to display for the end user. Finalize your BAQ by testing it using the Analyze sheet, correct
any errors before you use this query on a dashboard or mobile device.
Queries can be read only tools which you can later place on a smart client dashboard for display on the Main Menu.
You can also create an updatable BAQ. These BAQs can be placed on a smart client dashboard and/or used on a mobile
device, such as an iPhone® or a Blackberry®. Users then enter data through either the dashboard or the mobile device,
and this new data updates records within the main database. Business Process Management (BPM) directives can be
created which monitor the data entered through an updatable BAQ. Based on the conditions defined in the BPM
directive, various actions run automatically. For example, you could use this functionality to verify data is being correctly
entered into the database. Updatable dashboards and BAQ directives are described in later chapters in this guide, but
you will learn the basic principles for updatable BAQ functionality through this chapter.
To further leverage the BAQ functionality, you can connect to an external data source using the ODBC connection.
Use this feature to design an external query in a similar way to create an ordinary query. For more information on how
to utilize External BAQs, review the Chapter 02: External Business Activity Queries.
The Epicor application contains tools to help you locate database information you need. These tools also reduce
issues with your BAQs, as you can leverage them to make sure you reference correct fields and tables within your
modified and personalized queries. This section describes Data Dictionary Viewer and Field Help options you can
use to find the required information before you start designing your custom query.
You use the Data Dictionary Viewer to find and review details of each field and table within the database. It helps
you better understand the purpose and data values of every field.
Use this program to identify the fields and tables you want within a custom business activity query. This program
is also an aid during upgrades, as you can view the current database structure to compare it against a previous
database version; this helps to ensure your BAQs match the current state of the database.
Menu Path: System Setup > System Maintenance > Data Dictionary Viewer
1. In the Table Schema Type, select a schema that holds the table of your interest.
The available options include:
• System - Select this option to retrieve tables belonging to the ICE schema which refers to the Tools
(framework) part of the system.
• Product - Select this option to retrieve tables belonging to the ERP schema which refers to the Application
part of the system.
• Intermediate - Select this option to retrieve intermediate tables. Tables within this schema stage the
data for another process to come through and update the main database tables.
2. Click the Table button to find and select the table you wish to review.
4. The IndexName column displays the index name used by the database to access a specific field. Each field
is displayed using its database schema name. In this example, ABCldx is shown.
5. The Fields displays which column(s) of a database table are associated with a particular index as well as the
order in which columns are listed in the index definition.
6. The Display Format section contains options that change how the information displays on the Tree View.
Available options:
• Schema – Select this option to display the table fields in schematic order on the Tree View. This defines
the order of precedence in which the fields are evaluated by the application. For example, Company,
Resource Group, Alternate Resource Group.
• Alphabetic – Select this option to display the table fields in alphabetic order on the Tree View. For
example, Alternate Resource Group, Company, Resource Group.
You can also use the Data Dictionary Viewer to display information on a selected field.
1. In the Tree View, select a field. In this example, you select the Count Frequency field.
3. The Field Name displays the selected field. If you need, you can use the Navigation toolbar to display a
different field.
4. The Format field defines the layout for the characters within the field. This value displays in either schema
or alphanumeric format; for example, X(8), >>9.
5. If this field is a Decimal type (see the Type field description below), the Decimals field displays how many
decimal positions are available within the field.
6. The Extent field indicates how many items you can store within this field for each record. If this value is
higher than one, it indicates multiple values can appear within this field. For example, if 5 displays, the field
can contain up to five items.
7. The Type field defines the selected field’s main data definition. The type defines the data that displays within
the field; for example, nvarchar, integer, bit.
8. The Initial Value field defines the beginning value, if any, that automatically displays within this field. It
indicates the default value that appears each time a user views this field.
9. If this field is displayed on a grid, the Column Label field indicates the text that displays at the top of the
grid column; for example, Count Freq.
10. The Label field displays the title that displays above the field on a sheet, for example, Count Frequency.
11. When selected, the Mandatory check box indicates the current field is required. To finish a record within
this table, users must either enter data or select an option within this field.
12. The Description field displays the concise explanation for the field. This text explains the field’s purpose
and other useful information.
13. The Display Format section contains options that change how the selected field’s information displays on
the Fields sheet. Here is what these options do:
• Schema – When selected, this option displays the field’s schematic values. These values define how the
database views and evaluates this field’s data.
• Alphabetic – When selected, this option displays the field’s alphanumeric values. Use these values to
help you understand how the field’s data appears on the interface.
Field Help
Use the Field Help feature to display the technical details on a specific field within a program (form). With the
Field Help window displayed, you can immediately see the technical information you need on each field. When
you click the mouse pointer inside a field, the Field Help window displays the field details from the Data Dictionary.
Navigate and launch the program which contains fields you want to use in a BAQ To activate field help within
each program:
For this example, you launch Ship Via Maintenance: Sales Management > Order Management > Ship Via.
2. From the menu options, select Field Help to display the pane in the left portion of the screen.
3. Click the Thumbtack icon to pin the window in place. If you do not click this icon, the Field Help window
automatically minimizes to the side of the window (form). You can then display Field Help again by clicking
the button that displays on the side of the window.
4. When the Field Help window is pinned to the interface, you can view the technical details for the current
field. To do this, click the Technical Details button.
5. The Field Help window displays the technical details on each selected field. For this example, the Description
field is selected on the Detail sheet, and so the technical details for this field display within the Field Help
window.
7. The EpiBinding field displays the name to use if you want to link to this field through a customization or
a code reference. This value uses the ViewName.FieldName format. ViewName is the name of the view on
the user interface; FieldName is the database column name.
8. The DB Field value contains the information you most likely need for your BAQ. It displays the table name
and the column name for the selected field. Typically, this value is identical to the EpiBinding value and it
displays the true database name for the field.
9. The Format field defines the layout for the characters within the field. This value displays in either schema
or alphanumeric format; for example, X(30).
10. If this field is a Decimal type, the Decimals field displays how many decimal positions are available within
the field.
11. The Data Type field defines the selected field’s main data definition. The type defines the data that appears
within the field; for example; Character, Decimal, Boolean (True or False).
12. If this field is displayed on a grid, the Column Label field indicates the text that appears at the top of the
grid column.
13. The Description field displays the concise explanation for the field. This text explains the field’s purpose
and other useful information.
14. Continue to click other fields to display the technical details for each field on the form. When you finish,
click Close on the Field Help toolbar.
System Queries
Several system queries developed by Epicor are installed within the application. The delivered queries all begin
with the letter ‘z’ so that you can easily differentiate them from queries you create. When you create a custom
query, or copy an existing query to modify it, you must follow specific naming conventions.
Navigate to Business Activity Query Designer.
Menu Path: Executive Analysis > Business Activity Management > Setup > Business Activity Query
2. Notice you can filter the business activity queries by various types. To view system queries, select the
System check box.
5. The Author ID field displays the login of the user who created the BAQ. Only the Author can modify their
BAQs. However, you can assign a new author to modify a BAQ. To do this, from the Actions menu, select
Change Author. This functionality is explored during the Actions Menu section of this chapter.
7. The Global check box indicates whether the BAQ Definition is visible to another companies within the
database. The BAQ definition can only be updated from the original company, but is available for execution
and review in other companies.
8. System queries display a mark in the Shared check boxes. This value indicates the BAQ is available for
everyone within the current company to view.
9. As you indicated in the Search criteria, only System queries display on the list.
All system queries are created by Epicor, and this column indicates Epicor delivered these BAQs to your
database.
10. The Cross-Company check box indicates the ability of a query to brings back all results across companies.
In order to use this function, a selected user must have the ability to create cross-company queries.
11. If a query is Updatable, a check mark displays in this column as well. This value indicates users can enter
data within the BAQ that then updates the database.
12. The External queries use data retrieved from an external datasource outside the Epicor ERP application.
They are created within the External Business Activity Designer found in the System Management module.
To learn more about this functionality, review Chapter 02: External Business Activity Queries.
13. Select the system query you need and click OK.
The Business Activity Query Designer program contains multiple sheets through which you define the query
criteria and indicate how the data displays through the executed query. The content and purpose of each sheet
is described in this section.
Use the General sheet to create your query; you define the query’s identifier and description here. You also
indicate whether this query should be made available to all users within the company, support data updatability,
if you want to share this query between multiple companies and if the query should retrieve results across
companies.
In this example, you create a query that displays all open sales order detail lines.
2. In the Query ID field, enter a value. For this example, you enter SalesValue.
When creating a new Business Activity Query, the originating company information is attached to the BAQ
behind the scenes.
3. In the Description field, enter a concise explanation for the query. For this example, you enter Total Value
of Quotes, Orders, Invoices by Date.
4. Select the Shared check box. This check box indicates this query is available to all users. After you save the
query, all users in your company can add this query to quick searches, BAQ info zones, BAQ reports, and
dashboards. Note these users will need various rights to use these features.
5. Select the Global to indicate whether the BAQ Definition is visible to another companies within the database.
The BAQ definition can only be updated from the original company, but is available for execution and review
in other companies. To modify the BAQ definition in other companies, you must create a copy of the BAQ.
The following rules apply to usage of Global BAQs:
• Global BAQs definition only exists in the originating company and can only be updated from this company.
• The Global BAQ ID must be unique across all companies. It is not possible to create a global BAQ with
the same ID as a Global BAQ created in another company.
• When you create a Global BAQ in company 1, and company 2 uses a local BAQ with the same BAQ ID,
a warning message displays, informing that company 2 will use the local BAQ and the Global BAQ will
not be available for use in this company. The same principle is true for the BAQ import process.
• Likewise, when you create a local BAQ in company 1 and a Global BAQ with the same ID exists in company
2, a warning message displays, informing a user that the local BAQ will take precedence over the Global
BAQ in company 1. The same principle is true for the BAQ import process.
To see in which companies (outside the current company), references to the Global BAQ were created,
use the Where Used tabs.
6. Select the Updatable check box if you want to create an updatable query. Users can then enter and modify
data within this query that updates your database. If the BAQ was originally defined as a global query, the
Global check mark is removed, and updatable queries cannot be used across multiple companies. To learn
more, review the Create an Updatable BAQ section later in this chapter.
7. Select the Cross-company check box to display data across multiple companies.
Use the Query Builder sheets to design a Business Activity Query. Use this sheet to set up everything from basic
queries with a single table to complex queries including multiple subqueries of different types, joins or query
parameters.
The Phrase Build sheet is where you select the tables and fields you wish to include in the query. Use this sheet
to set up everything from basic queries with a single table to complex joins between multiple tables.
Five sheets are available at the bottom of the Phrase Build sheet. Use these sheets to indicate how tables are
linked together, define the relation between the tables, and specify the selection criteria for the query.
The Display Fields sheets define which columns display and in what order they display in the query. It You can
also create and display a special calculated field you need within the current business activity query and indicate
if you want to sort BAQ results through any combination of columns.
The SubQuery Options sheet is where define subquery properties. When you construct a BAQ, use this sheet
control what data displays in the SQL output by selecting an appropriate subquery type. You also have the ability
to control the SQL results set. For example, you can construct an SQL text to only display top 50% of rows from
the retrieved results set.
The SubQuery List sheet displays the read-only information of all subqueries created within the BAQ. All
subqueries are ordered by the sequence number. Using this sheet, you can change the order of subqueries to
define how partial query texts are concatenated in the final SQL statement.
Use the Phrase Build sheet to design a query using the visual representation of the query.
1. On the left pane, all Epicor ERP tables display in the table palette Select a table you want to add.
2. To easily locate the table you want, in the Filtering field, enter a value.
By default, the filter is applied to all tables whose names (excluding the schema part of the table name) start
with the string you enter in the filtering box. In this example, enter Quote to narrow down the list of tables.
3. When you select the Contains check box, all tables that contain a filtering substring you enter in the Filtering
field display.
4. In the left pane, above the list of tables, the three buttons control the list of available objects you can select
and drag on the designer canvas:
• Connected Only - When selected, the palette displays only the tables that have relations, described in
system tables, with the table you select on the canvas.
• SubQueries - When selected, the palette displays subqueries of InnerSubQuery or CTE type created
within the current BAQ. You can drag these subqueries on the canvas and use in the JOIN clause as any
ordinary table.
• Table-Valued Functions - When selected, the palette displays all Table-Valued Function (TVF) defined
in the application. A Table-Valued Function is a user-defined function that returns a table. Currently, this
feature is only supported in External Business Activity Query.
5. The central part of the form contains the canvas where tables are dropped.
6. To include a table in your query, select a table and drag it on the canvas in the center pane.
Several additional Phrase Build controls help you construct the query.
1. To create a manual connection between two tables, click the Add Connection button. Select the first table
you want to link; drag the line and drop it on the table you want to connect to.
For more information on table connections, review the Phrase Build - Table Relations topic.
2. If you want to remove a table or an existing connection from the query, select it on the canvas and click
Remove Selected.
3. Instead of selecting tables individually, you can use the Business Objects button to search for and load
table(s) within an entity, for example, Erp.Part. These tables are organized as hierarchical nodes under the
business objects, User can inspect these tables and drag some of them on the canvas. Dragging the parent
node results into adding all child nodes also. The links between loaded tables are displayed automatically.
4. The Toggle IsSummary Flag button is an Epicor 9 legacy feature, which should be used ONLY with legacy,
migrated BAQs to simulate Epicor 9 summary table behaviour. Users should not use this option when creating
new BAQs as this flag does not support new features such as subqueries. New BAQs should used standard
SQL syntax with GROUP BY and HAVING, and SQL aggregate functions to create aggregate queries.
5. You can use the options on the Arrange Diagram list to modify how the tables display on the grid. Available
options include:
• Diagram Overview - Displays the query in its default view mode.
• Zoom - Select this option to turn on zoom mode. When you click the tables in the grid, they increase
in size.
• Fit to Screen - Displays the entire query through a high level view.
• Layout Tables Automatically - Places the tables in a default order. The order of tables can be set on
the Table List sheet. Current positions of tables within a subquery is represented by numbers in the upper
left corner of table rectangles.
6. The right pane contains the description and list of the columns on the selected table. You can use the
Filtering edit box to only view the columns, with names that start with specified letters and sort column
names (alphabetically or in database order).
Use the Table Relations sheet to display and modify the fields that make up the joins between tables and
subqueries. You can add, modify and delete the join fields within the current query.
By default, queries are set up to display Inner Joins, which means that data from the first table only displays if it
is linked to data within the second table. The query output from an inner join includes all the records in which
the table relations values in both tables are an exact match. Records from either table that do not have a match
in the other table are not included in the query results.
For example, use an inner join to view all customers and the orders they have placed. You will not get a match
for any customer who has not placed orders. Most queries you create only need this type of join.
You can use the following join types to retrieve the expected BAQ results:
• INNER JOIN - only rows satisfying join criteria from both joined tables are selected. By default, tables are
linked through an inner join.
Example
The join between the Customer table1 and the OrderDtl
table2 creates a view that displays customers and orders
placed. In this case, the view includes only customers who
have placed an order. Records for any customers who have
not placed an order are excluded.
Use this join to display only matching records between the primary table and the lookup table.
• LEFT OUTER JOIN - rows satisfying join criteria from both joined tables are selected as well as all remaining
rows from left joined table are being kept along with Nulls instead of actual right joined table values.
Example
Use a left outer join to view all customers (table1) and the
orders (table2) for these customers, and to retrieve a row
for every customer who has not placed any orders. Fields
that otherwise hold the order information display blank for
these customers.
• RIGHT OUTER JOIN - rows satisfying join criteria from both joined tables are selected as well as all remaining
rows from right joined table are being kept along with Nulls instead of actual left joined table values.
Example
Use the right outer join to find each employee (table1) and
his or her department (table2), but still show departments
that have no employees.
• FULL OUTER JOIN - rows satisfying join criteria from both joined tables are selected as well as all remaining
rows both from left joined table and right joined table are being kept along with Nulls instead of values from
other table.
In SQL, the Full Outer Join combines the results of both left and right outer joins and returns all (matched or
unmatched) rows from the tables on both sides of the join clause.
When two tables are placed on the canvas, and relation between tables is described in the dictionary, the relation
is drawn by the BAQ automatically. The relation is represented by the line that indicates the JOIN clause. You
can also create table relations manually or replace existing ones.
To automatically connect tables:
1. Click the Connected Only button (the chain link icon) to only display tables appropriate for linking with
the selected table that displays on the grid.
2. Click and drag another table to the grid. In this example, drag and drop the Customer table on the center
pane.
3. When two tables are placed on the canvas, and relation between tables is described in the dictionary, the
relation is drawn by the BAQ automatically. The relation is represented by the line that indicates the JOIN
clause.
4. By default, queries are set up to display Inner Join, which means that data from the first table only displays
if it is linked to data within the second table. The query output from an inner join includes all the records
in which the table relations values in both tables are an exact match. Records from either table that do not
have a match in the other table are not included in the query results.
The available types of joins are discussed on the Phrase Build - Table Relations topic.
5. You can use the Dictionary button to view and select one of the predefined relations between tables. When
two tables are placed on the canvas, and relation between tables is described in the dictionary, the relation
is automatically defined by the BAQ.
As tables are placed on the canvas subsequently, the newly added table always checks relation with the
previous table within the table order. It does not check relations to all possible tables within the query. This
button is enabled when some predefined relation exists in the dictionary for the selected join connection,
and its title contains number of predefined dictionary relations in the parentheses.
6. The Table Relations from Dictionary window that displays when you click the button list all relations with
their fields. The result relation expression displays in the Expression textbox at the bottom. You can select
one of the relations and press Replace In Query button. As a result, fields from Dictionary form will replace
fields used in current BAQ relation.
7. In this example, accept the default relation between tables using the Company and CustNum columns.
If you want join tables or subqueries with no predefined relations in the system, you must manually create these
relations. You can also replace or modify existing relations by building an expression of your choice.
To manually create a relation between tables:
1. To create a join between tables or subqueries, click the Add Connection button.
The cursor turns to the cross.
2. Create a join between tables using the drag and drop functionality.
The tables are connected with the line. In this example, assume you would like to create a business activity
query that displays the list of parts and for each part you would like to attach a detailed company information.
3. At the bottom of the screen, the Table Relations sheet is automatically selected.
4. To define the relation between the tables, on the Table Relations sheet toolbar, click the Add Row button.
5. Create a join between the first and second table. In this example, you select the Company column to join
Part and Company tables.
6. If BAQ designer determines a non-standard expression, it displays the Fx symbol in the middle of the join
square on the link.
7. In the Join Type field, select a desired type of join to combine records from two tables to construct your
query. The available types of joins are discussed on the Phrase Build - Table Relations topic.
When tables you add are not joined by any field, the
CROSS JOIN (Cartesian join) is automatically selected.
This join returns all records where each row from the first
table is combined with each row from the second table.
The Tables List sheet displays the list of tables and subqueries you place on the canvas for the subquery in focus.
The order of tables listed in the FROM clause of the resulting SQL statement is explicitly set on this sheet.
1. If your BAQ incorporates multiple SubQueries, switch between them using the Active SubQuery navigational
toolbar found above the Phrase Build tab.
2. Current position of a table within a subquery is represented by a number in the upper left corner within the
table rectangle.
3. In this example, the QuoteHed table is the first table within the table order.
5. To change the order of tables, select a table and use Up or Down arrow on the toolbar to move the selected
table one position up or down. Repeat this action the required number of times to move the table several
positions up or down to define the new table order. In this example, select the Customer table and click
the Up arrow make it the first table on the list.
Use the Table Criteria sheet to to limit the data that displays in the BAQ results by adding filtering conditions for
the selected table.
When you add a filter on the table, the following rules are applied:
• If the table with applied filtering is the first table in the BAQ, then these criteria go to the WHERE part of the
resulting SQL statement.
• If the table with applied filtering is not the first table in the BAQ and is connected to the previous table with
join, then within the resulting SQL statement, these criteria will be applied to the JOIN clause in the ON
condition.
You should consider leaving the query criteria open. You then
have more flexibility within the query, as you can always add
a filter to the query results within a dashboard or a BAQ report.
For more information on this functionality, review the BAQ
Report Designer and the Dashboards chapters.
1. Select a table on the canvas from which you want to filter the data. In this example, you select the QuoteHed
table. Notice the table with applied filter displays the "+criteria" indicator on the table rectangle.
2. Click the Sort Columns Alphabetically button to display the fields on the drop-down lists in alphabetical
order.
4. A new row displays on the grid; enter the options you need for this filter. In this example, you add a filter
that causes the query to only display quotes that are currently active.
5. The And/Or field defines the criterion string clause in relation with other criterion on this sheet. Use this
field when you need to apply a filter based on the values of more than one criterion.
6. Use the ( and ) fields to insert the left and right parenthesis to the clause. You can enter as many parenthesis
characters as you need to complete the order in which you want the criteria to filter the results.
7. If you want this criterion to evaluate a Not criterion value, select the Not check box. This Not value indicates
you want a value returned not like the evaluating value; for example, a column NOT IsNull.
8. Use the Field drop-down to display the list of fields from the table selected on canvas. In this example, select
the QuoteClosed field.
9. The Compare (operator) list defines how the selected field will be evaluated against the Filter Value. In
this example, select = (equals) option. The Filter Value can be an alphanumeric value. You have the following
options:
Operator Description
> Greater than
< Less than
= Equals
>= Greater than or equals
<= Less than or equals
<> Not equal or not identical to
BEGINS Returns data that starts with the same characters. Although this operator is less efficient
compared to the Greater than or Equal sign (>=), you can use this value to pull in a series
of records that start with the same set of alphanumeric characters.
MATCHES Returns data that is exactly the same as the character string. Although this operator is less
efficient compared to the Equal sign (=), you can use asterisk wildcards to pull in data. For
example: MATCHES '*owe*' finds both owe and powerful. With MATCHES, you can use
no asterisks, a left asterisk, a right asterisk or both asterisks.
• If you want to find rows with unassigned fields, use the ISNULL operation. This
operation may be useful in external queries which execute against non-Epicor
databases.
IN Indicates this value is used with either a list of constant values or a BAQ item list parameter,
or a field from an inner subquery.
You can also use this criterion for updatable BAQs.
Operator Description
CONTAINS Returns data when the selected character field has data which is present within the defined
Filter Value.
Msg 7601, Level 16, State 2, Line 1 Cannot use a CONTAINS or FRE
ETEXT predicate on table or indexed view 'Erp.Abccode' because i
t is not full-text indexed.
This field is a predicate used in a WHERE clause to search columns containing character-based
data types for precise or fuzzy (less precise) matches to single words and phrases, the
proximity of words within a certain distance of one another, or weighted matches. This
operation can be applied against column of following data types and its derived types:
• char
• text
• image
• xml
• binary
EXISTS The EXISTS condition is considered to be met if the SubQuery returns at least one row. This
condition can be used in any valid SELECT SQL statement. The syntax for the EXISTS
condition is:
SELECT columns
FROM tables
WHERE EXISTS ( subquery );
LIKE Allows usage of SQL Like syntax. It determines whether a specific character string matches
a specified pattern defined in the filtering value. A pattern can include regular characters
and wildcard characters.
10. Click the Filter Value drop-down list to define how this criterion filters data. Each option displays with
hyperlink text; click this hyperlink text to define the filter values. The next section describes each of these
options in more detail. For this example, you select the specified constant option. Click the specified link.
12. In the Value field, enter the constant value you need. In this example you enter False as you the query to
return open quotes.
14. Notice the word False now displays as the filter value.
15. Continue to add the criteria you need. When you finish, click Save.
16. You can now view your query; click the General tab.
17. The Query Phrase field displays the query you created. Notice your criterion is included as part of the
resulting SQL Syntax.
Use the SubQuery Criteria sheet to narrow down BAQ results by adding filtering conditions on the selected
SubQuery.
When you add a filter on the SubQuery the following rules are applied:
• In the resulting SQL statement, the SubQuery criterion displays in the WHERE part of the SubQuery.
• When you select the Having check box to indicate the SubQuery should meet specified conditions, the criterion
displays within the SubQuery's HAVING part of the resulting SQL statement.
For more information on creation of SubQueries, read the SubQuery Options topics.
1. If your BAQ incorporates multiple SubQueries, switch between them using the Active SubQuery navigational
toolbar found above the Phrase Build tab.
4. A new row displays on the SubQuery Criteria grid; enter the options you need for this filter. In this example,
the BAQ is comprised of two SubQueries returning the list of Quotes and Orders. You will limit the BAQ
results by adding a filter on each SubQuery. For the Quotes SubQuery, add a criterion to only return quotes
for the customer Addison.
5. Entering a condition for the SubQuery is similar to entering Table Criteria discussed in the previous topic,
except in SubQuery, first use the Table field to select a table from the current SubQuery or a predefined
Calculated table name, when referring to calculated fields. In this example, select the Customer table.
6. Build the criterion by selecting the SubQuery Field, Operation and Filtering Value. In this example, create
a criterion to only retrieve quotes from the customer Addison.
7. When you select the Having check box, the SQL statement returns rows where aggregate values meet the
specified conditions. Typically you use this field with the calculated field editor.
8. If you want to apply criteria on another SubQuery, use the Active SubQuery navigational toolbar to select
it.
9. Enter the criteria for the second SubQuery. In this example, you limit the BAQ results to only retrieve orders
for the customer Dalton.
10. You can now view your query; click the General tab.
11. The Query Phrase field displays the query you created. Notice the filtering is applied on each SubQuery
within the resulting SQL Syntax.
The previous sections described how to create a criterion using the specified constant filter value. This section
now discusses each of the Filter Value options, explaining what you can define on each option.
Use this potion to filter the data using a field from a table included in the query.
1. From the Filter Value drop-down list, select the specified table field value option.
4. In the Subquery field, select the name of the subquery used to filter data.
5. Click on the Table drop-down list to select the table which contains the fields you want to filter against.
All the tables available in your current subquery display.
6. All the available fields display in the fields section. Select the field you want to use in the criterion.
7. Click OK.
Specified constant
Use this option to filter the data against a specific value you define. To use this option, do the following:
1. From the Filter Value drop-down list, select the specified constant option.
4. In the Value field, enter the value you want to filter against. You can enter any text value you need.
Depending on what you enter, some values may or may not be case sensitive.
5. Click OK.
Specified Expression
Use this option to filter the data against a specific expression you create. You can use this filter to build complex
expression which are calculated when the criteria is applied to the query.
To create an expression:
1. From the Filter Value drop-down list, select the specified expression option.
3. The ExprQueryForm window displays. To help you create expressions, the Editor window contains lists of
available fields, functions, and operators. You can add these items to an expression by either double-clicking
them or dragging them onto editor window's Editor field.
4. Click OK.
Specified parameter
Use this option to filter the data using an alternative parameter value you define. These parameters can be nearly
any value you need.
You can also use parameters to display customized method arguments for use in Business Process Management
(BPM) directives.
The query text contains references to arguments using this format: @arg_name
Example
1. From the Filter Value drop-down list, select the specified parameter option.
4. Enter the Parameter Name you want for your new parameter value.
5. Select the Data Type for the parameter from the drop-down list. Available types:
• Nvarchar
• Integer
• Decimal
• Date
• DateTime
• Bit
• uniqueidentifier
6. In the Format field, the default format for this Data Type displays.
If you need, you can edit this value. Be sure the format follows the convention of the database.
7. If this parameter is required in order for the BAQ to pull in query results, select the Mandatory check box.
8. Use the Editor Type drop-down list to select how you will define the parameter values. Available options:
Option Description
Common Editor Activates the Default Value field. Enter a custom text value you need for the
parameter. The field selected on the criterion will then be evaluated against this
default value.
Radio Button Set Activates the Values Editor sheet. Use this sheet to define the various radio button
options this parameter will use. The field selected on the criterion will then be
evaluated against these multiple options.
DropDown List Activates the Data from drop-down list. Use this list to define the source of the
drop-down list options. The field selected on the criterion will then be evaluated
against the options contained on the drop-down list.
Item List Use this option the create the list of values this parameter will use. The field selected
on the criterion will then be evaluated against these item list options. For this option,
Option Description
BAQ execution expects the list of values transmitted in ExecutionParameter table,
instead of a single value.
This parameter is only used with IN operation.
9. If you select the Common Editor option from the Editor Type drop-down list, the Default Value field
activates. Enter the default value you want within this field.
10. Select the Skip condition if empty check box when you want the BAQ to ignore this parameter if it returns
a blank, or empty, value. If parameter is not supplied, the BAQ will ignore the criterion with this parameter.
11. If you select the DropDown List option from the Editor Type drop-down list, the Data from field activates.
Use the options from this drop-down list to indicate the source from which the data on this list populates.
Available options:
Option Description
Custom The Values Editor displays controls for creating a new list of values. Use this functionality
Values to define the various list options this parameter will use. The field selected on the criterion
will then be evaluated against these item list options. Enter the following information:
• Value - Enter the actual value of the parameter that will be send to the query.
• Display text - Enter the text displayed for the user for this value.
• Order - Defines the sequential order of items in the list.
BAQ The Values Editor displays controls for selecting a BAQ. Enter the following information:
• Query ID - search for and select the BAQ you need.
• Display Column - select the column which displays in the lookup list.
• Value Column - defines the name of the column you want to use for the parameter
value.
User Codes The Values Editor display the control for selecting a specific User Code.
User codes are lists of custom values you define through User Defined Codes
Maintenance. When you select a user code, its list of values is compared against the
field selected on the criterion. For more information about creating user codes, review
the User Defined Codes Maintenance help topics.
15. Your new parameter displays on the Select Parameter window. Highlight the parameter you created.
18. You can also create parameters through the Actions menu. To do this, click on the Actions menu and select
Define Parameters.
Use this option to filter against a specific constant, like CurrentCompany, CurrentEmployeeID, First Day of the
Month, Fiscal Period, and so on. The query pulls data based on the BAQ constant you select.
To define a BAQ special constant:
1. From the Filter Value drop-down list, select the BAQ special constant option.
3. In the Select BAQ Constant window, select one of the constant options available from the list.
4. Click OK.
Use this option to filter by the date intervals days, weeks, months, and years. The result is always evaluated
against the current date (TODAY). You can enter a positive or negative value; the value is then added or subtracted
from the current date to calculate a different date.
To filter query results by a date interval:
1. From the Filter Value drop-down list, select the Current date + specified interval option.
3. Use the arrow buttons and the drop-down list to define the next BAQ execution date.
4. Click OK.
5. The interval in days you defined displays on the Filter Value column. The query will pull in records which
have a date equal to or greater than the interval you defined ahead from the current date. In this example,
the query will pull in records that have a date equal to or greater than five days ahead from the current
date.
Use this option to filter the data using values a subquery field(s) you define.
1. From the Filter Value drop-down list, select selected value(s) or field from specified subquery option.
4. In the Select Subquery Field window, the list of subqueries of InnerSubQuery or CTE type displays.
7. Click OK.
8. The subquery field you defined displays on the Filter Value column.
For certain operations, only specific filters are available for use.
The below table displays which filters become available when you select the below operations:
EXISTS operation
• field from specified subquery
Use this option to filter the data using a subquery field(s) you define. You can select
fields from subqueries of InnerSubQuery or CTE type.
This operator only checks that the row is returned.
CONTAINS operation
• specified contains expression
Use this filter to launch the Specify Expression window. Use this form to create an
expression, compatible with CONTAINS predicate in SQL. Supported terms: AND (&),
OR (|) wildcard (*), parenthesis (()). Full-text indexed column is required.
Use the Function Call Parameters sheet to specify values for the parameters in a Table-Valued Function.
A Table-Valued Function (TVF) is a user-defined function that returns a table. To view the list of TVFs available
for use with your product, click the Table Value Function button above the left panel on the Phrase Build
sheet.
TVFs typically require input parameter values. The Function Call Parameters sheet is populated when you add a
TVF to the grid. To be able to retrieve results from the TVF, you must define an expression in the Value field of
each listed parameter. This can be done by manually typing an expression or by using the expression editor that
displays when you click the ellipses button.
This procedure discusses adding parameter values when adding a Table-Valued Function (TVF) to an External
Business Activity Query (BAQ). You also can select an existing TVF on the grid and edit the parameter values.
To use the TVF function:
On the Phrase Build sheet, click the Table-Valued Functions button above the left pane.
5. When you right click on a red TVF rectangle on the canvas, you can use the context menu to set the APPLY
operator.
If the APPLY operator is set for TVF, it is used instead of the join expression. The selected operator specifies
how the TVF is invoked for each row in the result set. The result set is created by tables that precede the
TVF within the table order. If the preceding table and TVF are connected through the join, the APPLY operator
is ignored.
You can use the PIVOT operator within a query to transform data from row-level to columnar data.
PIVOT rotates a SubQuery results by turning the unique values from one column in the expression into multiple
columns in the output, and performs aggregations where they are required on any remaining column values that
are wanted in the final output.
Creation of PIVOT statements within a BAQ is available for InnerSubQuery or CTE SubQuery types. To activate
the Pivot SubQuery FOR Clause sheet, place the SubQuery on the canvas. Right-click the SubQuery rectangle
and select PIVOT > SET PIVOT. To create an aggregation formula used within the PIVOT statement, click the
ellipses button to invoke the Pivot Aggregate Expression Editor.
In this example, build a query against the OrderHed and Customer tables to determine the number of sales orders
placed by each customer throughout the selected years.
To use the PIVOT operator:
1. Create a BAQ comprised of two SubQueries. In this example, you display the aggregated data through the
TopLevel SubQuery1. For the moment, leave this first SubQuery intact.
5. Now create a calculated column that displays the order creation year.
6. To get the year part of the date on which a sales order was placed, use the datepart(year, expression)
function. The expression looks as follows:
datepart(year,OrderHed.OrderDate)
7. Now switch back to the SubQuery1 and place SubQuery2 on the canvas.
8. Right-click the SubQuery2 rectangle and select PIVOT > SET PIVOT.
9. Notice the word PIVOT displays on the rectangle and the Pivot SubQuery FOR Clause sheet becomes
enabled.
10. Click the ellipses button to invoke the Pivot Aggregate Expression Editor.
11. Use the Pivot Aggregate Expression Editor to create an aggregation formula.
Similar to Calculated Field Editor, the window contains lists of available fields, functions, and operators. You
can add these items to an expression by either double-clicking them or dragging them onto editor window's
Expression Editor field.
Users are not limited to using only the functions from the
tree-view. Any function supported by the SQL Server used
by your Epicor ERP application can be used within an
expression. In External BAQs, functions supported in the
database server where the external BAQ is executed
should be used.
12. In this example, count the number of sales orders using the below expression:
count( OrderHed_OrderNum )
13. Now specify the FOR clause of the PIVOT statement. In this example, you define which years you want to
include the pivot table output. To begin with, in the Field column, select the Calculated_OrderYear field
you created. Recall this field returns the year on which each sales order was created.
14. Now you must evaluate this field against the values you define. In the Filter Value column, select specified
constants list.
16. In the Enter Value List window, create the list of custom values you want to evaluate in the FOR clause.
In this example, define the years you want to analyze.
17. Using the TopLevel SubQuery1, select the columns you want to include in the BAQ output.
In this example, select Customer_CustID and all fields from the constants list you created in the previous
step.
18. Now you can test the query. The BAQ output presents aggregated numbers of orders placed by each
customer throughout the selected years.
Display Fields
Use the Display Fields sheets to define the columns that display on your query, how the data is sorted within the
query, and set the display names for the columns. You can also create a special calculated field that you need
within the current BAQ and create advanced data grouping expressions.
The Display Fields sheet consists of two sub sheets: Column Select and Sort Order.
Column Select
Use the Column Select sheet to define the columns that display on your query.
You can also configure the display name and format for each column, create a calculation for a selected field
and define how you want to summarize data within the BAQ.
When the SubQuery in focus is of the TopLevel, CTE, or InnerSubQuery type, use the below steps to select
BAQ columns.
To select columns you want to displays in BAQ results:
1. The Available Columns list displays all the tables included within the query.
2. To view the columns within each table, expand the table node. In this example, you expand the OrderDtl
table.
3. The columns available within the OrderDtl table display. Notice each column identifies the type of data it
contains - Y/N (check box), 1.2 (Numeric field), abc (Character field), and so on.
4. You can click the Sort Columns Alphabetically button to display the columns in alphabetical order. Typically
you will activate this button, as it will make the fields (columns) easier to find.
5. From the Available Columns list, select the fields you want to display. You can select multiple fields by
holding Ctrl on your keyboard while selecting fields or by holding Shift to select a range of fields.
6. Click the Right Arrow button to move it into the Display Columns list. In this example, you select multiple
columns from the Available Columns list and move them into the Display Column(s) list.
7. If you want to modify the column name, enter a value in the Label field. This field displays the default name
for a field. You can edit the display name for the current field. The name you enter displays on a column
header within BAQ results.
8. To change the field's format mask, modify the value in the Format field.
Several single character format options are available. You use these options in various combinations to
display the results in the format that you want. Available single character formats:
• X - Any Character
• N - Number or Letter
• A - Letter Only
• ! - Lower Case Letter
• 9 - Number Only
• > - Suppress Zeros
Example
• X(8)
• ->>>,>>>,>>9.9999
9. To group query results by specific column, select the Group By check box.
10. You can remove columns by highlighting them in the Display Columns list.
11. Click the Left Arrow button, or drag and drop the column name to the left pane. The column returns to
the Available Columns list.
12. You can change the order in which the columns display across the BAQ grid. To do this, select a field in the
Display Columns List and use the Up and Down Arrow buttons.
When the SubQuery in focus is of the Union, UnionAll, Intersect or Except type, use the below steps to select
BAQ columns.
In BAQ Designer, SubQueries are concatenated in the sequential order, so one or more SubQueries of Union,
UnionAll, Except, Intercept types can go after TopLevel, or CTE SubQueries.
1. In SubQuery of TopLevel or CTE type, define the set of Display Columns. In this example, SubQuery1 has
five columns set for display.
2. On a SubQuery that follows, set one of the Union, UnionAll, Intersect or Except set operators. In this example,
SubQuery2 of Union type is used.
4. At the bottom, the information on how many fields you need to select to match the number of display
columns in SubQuery1 displays.
5. You are also informed what first column is selected for display in SubQuery1 and what format it uses.
6. From the Available Columns list, select fields that meet criteria described above.
7. Use the Right Arrow button to move the fields into the Display Column(s) list.
8. The Alias field displays the field alias of the current SubQuery's column.
Field aliases of the result record set are taken from the
first SubQuery.
9. Each SubQuery treats Group By independently. You can construct a BAQ where only one SubQuery
aggregates data, for example:
SELECT Field1, Count(field2)
From Table1
Group By
Group By Field1
UNION
SELECT FieldX, FieldY
FROM Table2
However, if a TopLevel or CTE SubQuery groups data by specific column, and SubQuery of Union, UnionAll,
Intersect or Except type is set up to also aggregate data, the number of columns must match and column
types must be compatible in both SubQueries. The grouping method used to aggregate BAQ results can
differ in each SubQuery. You can use simple group by in one SubQuery and an advanced grouping method
in another.
On the Display Column(s) grid, all fields except Group By provide read-only information only.
10. The DataType field displays the type of data of the current SubQuery's column.
11. The Subquery Set Data Type displays the expected data type of the corresponding field from the group's
uppermost SubQuery, which is either CTE or TopLevel type.
12. When the expected data type is different than selected, the error indicator displays in the corresponding
Subquery Set Data Type column.
13. The Subquery Set Alias field displays a field alias of the corresponding field from the uppermost SubQuery.
In the resulting record set, field aliases are taken from the group's uppermost SubQuery.
Example
CTE Subquery 1
UNION ALL Subquery 2 <-- fields are from Subquery 1
TopLevel Subquery3 <-- new group of Subqueries
INTERSECT Subquery 4 <-- fields are from Subquery 3
In the above example, result fields are taken from Subquery3 – TopLevel Subquery.
14. The Expected Fields box at the bottom displays the following information:
Condition Information
If the number of selected columns in the current The field shows the first NEXT field from the group's
SubQuery is Less than the number of selected uppermost SubQuery, which is expected to be added.
columns in the group's uppermost SubQuery.
Also, the information on how many fields are still to be
added displays.
If the number of selected columns in the current The information on how many fields should be removed
SubQuery Exceeds the number of selected displays.
columns in the group's uppermost SubQuery.
If the number of column in both SubQueries The "Check type compatibility" message displays.
Equals, and Any Type difference between
When SubQuery fields have different types, in the
columns occurs.
Subquery Set Data Type column, the error sign displays.
The error sign does not automatically mean the SubQuery
will fail as proper conversion can still be potentially done
Condition Information
by the database server. The intention of the error sign is
to inform user about the potential data type discrepancy.
When number of columns Equals in both The "Subqueries have equal number of fields"
SubQueries, and No Type difference is found. informational message displays.
15. When the BAQ designer logic encounters any errors, these are also displayed on the Analyze Message
window.
16. In this example, the column mapping of SubQuery2 should look as follows.
Use the Calculator button to create user-defined columns based on a calculation of selected fields within the
query.
To help you create valid calculations, the Calculated Field Editor contains lists of fields, functions, and operators.
These default items display in a Tree Views where you can navigate and find the item you need. To add an item
to calculation, you either double-click or drag and drop the selected item to the Editor pane.
To create a calculated field:
1. Navigate to the Display Fields > Column Select sheet and click the Calculation (the calculator icon)
button.
3. In the Field Name field, enter the name of the field, for which you create the calculation. In this example,
enter OrderCount.
4. From the Data Type drop-down list, select the data type generated by this calculation.
In this example, select integer.
5. The Format field automatically displays the data format for this calculated field. In this example, ->>,>>>,>>9.
If you need, you can change this value.
6. Enter the Label you want to display above this calculated field’s column header on the BAQ grid. In this
example, enter Total.
7. Now you can start building the calculation logic in the Editor pane.
8. Use the tree view to find and select the Functions, Operators, and BAQ Constants you will use in the
current calculated field. A function calculates a value through specified parameters. An operator is a
mathematical expression used to evaluate a function. BAQ operators and functions are consistent with SQL
naming methodology.
9. First navigate to the function or operator you need. Now either double-click it or drag and drop it onto your
calculation within the Editor field. In this example, use the Count function.
10. Use the Fields Tree View to place a specific field within the calculation.
You can use the Fields Tree View to:
• Select any of the current Display Fields and existing Calculated fields you want to add to the calculation.
• Pull in any fields contained within the Available tables included with the current query.
• If you have created parameters to use with the BAQ, these options display under the Parameters node.
Parameters pull in multiple values which you can then use within your calculation. For information about
creating parameters, review the previous Phrase Build – Filter Values section
In this example, you add expand the OrderHed table and double-click OrderHed.OrderNum field. The field
is added to your calculation.
11. If you need, use the Calculator keys to manually refine your expression.
12. When you complete the calculation, click Check Syntax to verify that the calculation logic is valid.
If you have created Inner or CTE type of Subqueries, you can also use them to build a calculated field.
For example, you create a simple query and add a new inner subquery with only one display field returning
a single value; e.g. Select count(id) from table. You can then use the subquery to create a calculated
expression, such as {SubqueryN} + 1.
15. Your calculated field is now added to the list of Display Column(s).
16. You can use Up and Down Arrow buttons to reposition the calculated field as necessary.
Several calculated fields have been created by Epicor for use in the system queries. The first example is a calculated
field called OpenQty that is used in the zSVSalesOrderBacklog query.
This calculated field determines the Open Quantity of a sales order release by taking the Requested Quantity for
a sales order release, and subtracting the Job Shipped Quantity and the Stock Shipped Quantity. The field is
formatted as a number and displayed as a decimal.
The second example is a calculated field called OpenValue that is also used in the zSVSalesOrderBacklog query.
This calculation determines the value of the remaining open balance on a sales order. The calculation uses If,
Then, Else logic written in C# based on the Price Per Code on the Order Detail table. Three different Price Per
Code values are tested in the calculation: M (price per thousand) and C (price per hundred).
The following tables display the Functions you can use within the Calculated Field Editor.
Users are not limited to using only the functions from the
tree-view. Any function supported by the SQL Server used by
your Epicor ERP application can be used within an expression.
For External BAQ functionality, functions supported in the
database server where the external BAQ is executed should be
used.
Aggregate
Aggregate functions perform a calculation on a set of values and return a single value. Aggregate functions are
frequently used with the GROUP BY clause of the SELECT statement.
Function Description
Avg(x) avg(expression)
Calculates the average of all values within the numeric database field.
Count(x) count(expression)
Counts the number of times the database field was counted.
Max(x) max(expression)
Calculates the maximum of all of the values of the numeric database field.
Function Description
Min(x) min(expression)
Calculates the minimum of all of the values of the numeric database field.
Sum(x) sum(expression)
Calculates the total of all the values of the numeric database field.
Math
Mathematical functions execute mathematical operations usually based on input values that are provided as
arguments, and return a numeric value as the result of the operation.
Function Description
Abs(x) abs(expression)
Returns the absolute value of a numeric expression.
Sqrt(x) sqrt(expression)
Returns the square root value of a decimal expression.
Log(x) Log(expression)
Calculates the natural (e) logarithm of a decimal expression.
Log10(x) Log10(expression)
Calculates the base-10 logarithm of a decimal expression.
String
String functions manipulate a string or query information about a string.
Function Description
Asc(x) Asc(expression)
Converts a character expression representing a single character into the
corresponding ASCII value, returned as an integer.
Char(x) Char(expression)
Converts an ASCII integer code to its corresponding character value.
Len(x) Len(expression)
Returns the number of characters in an expression
Left-Trim(x) ltrim(expression)
Removes leading white space from a string expression.
Trim(x) ltrim(rtrim(expression))
Removes leading and trailing white space from a string expression.
Right-Trim(x) trim(expression)
Removes trailing white space from a string expression.
Upper(x) upper(expression)
Converts any lowercase characters in a string expression to upper-case characters.
lower(x) lower(expression )
Converts any upper-case characters in a string expression to lowercase characters.
Date
There are a number of date functions available in the Epicor ERP application.
Function Description
Function Description
Conversion
Conversion functions transform an expression of one data type to another.
Function Description
Function Description
Converts an expression of any data type to a decimal value.
Ranges
Functions in this category return the position, string entry, or number of elements from the list, based on the
expression.
Function Description
Lookup(x,y)
[Ice].lookup(expression, list)
Returns an integer value giving the position of an expression in a list. Returns a 0
if the expression is not in the list.
Lookup(x,y,z)
[Ice].lookup(expression, list, separator )
Returns an integer value giving the position of an expression in a list. Returns a 0
if the expression is not in the list.
Entry(x,y)
[Ice].entry(expression, list, ',')
Returns a character string entry from a list based on an integer position.
Entry(x,y,z)
[Ice].entry(expression, list, separator )
Returns a character string entry from a list based on an integer position.
Num-entries(x)
[Ice].num_entries(list)
Returns the number of elements in a list of character strings as an integer value.
Num-entries(x,y)
[Ice].num_entries(list, separator)
Returns the number of elements in a list of character strings as an integer value.
Financial
Functions in this category return either the fiscal year or fiscal period for the supplied date based on the fiscal
calendar.
Function Description
FiscalYear(x)
FiscalYear(company, date)
Returns fiscal year for passed date according to fiscal calendar in the database.
FiscalPeriod(x)
FiscalPeriod(company, date)
Returns fiscal period for passed date according to fiscal calendar records in the
database.
An operator is a mathematical expression either used with a single function or used to process two or more
functions.
Boolean Or (x or y) or Or operator.
Returns a TRUE value if either of two logical expressions
is TRUE.
Comparison Not Equal (x <> y) <> < > Not Equal operator.
Compares two expressions and returns a TRUE value
if they are not equal.
Condition Case x When y Then case Evaluates a list of conditions and returns one of
z Else k end multiple possible result expressions.
when then
when then
else
end
The following table displays the BAQ Constants you can use within the Calculated Field Editor.
CurCompName The Company Name of the company the user is logged into.
CurLangID The language ID of the language being used in the Main Menu of the current
session.
ProductCode The application product code. The available options include "EX" for Express,
"ST" for Standard, "EN" for Enterprise and "Epicor" for any other product
line.
ProductName The application product name. The available options include Express, Standard,
Enterprise and Epicor.
SecurityManager The current session user is a Security Manager.
Today The current System Date.
Tomorrow The next day after the System Date.
VersionString Displays the ICE framework assemblies version of the current product. For
example, 3.0.5.0.
Week The current week of the System Date.
WorkstationDescription The description of the Workstation ID specified in Workstation Maintenance.
WorkstationID The ID of the workstation specified in Workstation Maintenance.
Year The current year of the System Date.
Yesterday The previous day of the System Date.
Use the Advanced Group By Clause Editor to build advanced data summarizing expressions.
In BAQ Designer, you can use the following data grouping options:
• Simple Group By mechanism - You can group the query results by specific column(s) by selecting the Group
By check box on the Column Select sheet. This feature, however, has a few limitations - it is only available
for fields selected as Display columns and within the resulting Group By clause, these fields always appear in
the same order as in the Select statement.
• Advanced Summarizing Options - By accessing the Advanced Group By Clause Editor, you can create more
complex summarizing expressions, such as:
• Group BAQ results by fields different from those defined in the SELECT statement.
• Define custom order of columns in a GROUP BY clause.
• Use special GROUP BY operators such as ROLLUP, CUBE, and GROUPING SETS. These operators are
extensions of the GROUP BY clause. They can generate the same result set as when you use UNION ALL
to combine single grouping queries; however, using one of the GROUP BY operators is usually more
efficient.
This example demonstrates how you can use the advanced Group By expression to view total value of sales orders
and quotes per country and customer.
2. In this example, a filter on the Customer table is applied to only retrieve records from Mexico and Canada.
3. For the Display Columns, select Customer_Country and Customer_CustID columns. You also create
two calculated fields that summarize total amount of orders and quotes.
• For Orders, the following calculation is used:
sum( OrderHed.OrderAmt )
6. At the top of the Functions node, notice the Group By category displays.
The ROLLUP, CUBE, and GROUPING SETS operators found in this category represent advanced aggregation
extensions of the GROUP BY clause.
Function Description
ROLLUP
The ROLLUP operator is useful in generating reports that contain subtotals and totals. It
generates a result set that shows aggregates for a hierarchy of values in the selected columns.
The resulting SQL syntax may look similar to the following:
SELECT a, b, c, SUM ( <expression> )
FROM T
GROUP BY ROLLUP (a,b,c);
As the result, one row with a subtotal is generated for each unique combination of values
of (a, b, c) , (a, b) , and (a). A grand total row is also calculated.
CUBE
Generates simple GROUP BY aggregate rows, the ROLLUP super-aggregate rows, and
cross-tabulation rows. CUBE outputs a grouping for all permutations of expressions in the
<composite element list>.
The resulting SQL syntax may look similar to the following:
SELECT a, b, c, SUM (<expression>)
FROM T
GROUP BY CUBE (a,b,c);
As the result, one row is produced for each unique combination of values of (a, b, c) , (a,
b) , (a, c) , (b, c) , (a), (b) and (c) with a subtotal for each row and a grand total row.
GROUPING
Specifies multiple groupings of data in one query. Only the specified groups are aggregated
SETS
instead of the full set of aggregations that are generated by CUBE or ROLLUP. The results
are the equivalent of UNION ALL of the specified groups. GROUPING SETS can contain a
single element or a list of elements. GROUPING SETS can specify groupings equivalent to
those returned by ROLLUP or CUBE. The <grouping set item list> can contain ROLLUP or
CUBE.
The resulting SQL syntax may look similar to the following:
SELECT a, b, SUM (<expression>)
FROM T
GROUP BY GROUPING SETS ((a),(b))
For more information on the above operators, review the available Microsoft® documentation, for example:
• http://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx
• http://technet.microsoft.com/en-us/library/ms177673.aspx
• http://blogs.msdn.com/b/craigfr/archive/2007/10/11/grouping-sets-in-sql-server-2008.aspx
For this example, expand Functions > Group By and double-click the ROLLUP function. This function
generates an output that presents subtotals and totals.
7. For group by expression fields, select both Customer.Country and Customer.CustID fields, separated by
a comma.
The Group By expression should now read:
ROLLUP( Customer.Country, Customer.CustID )
9. Now you can test the BAQ. Notice the total values are summarized by each customer (aggregate rows),
sub-totals rows for each country with the grand total value displaying at the bottom.
10. Notice how BAQ results change when GROUPPING SETS function is used to construct the GROUP BY clause.
GROUPING SETS( Customer.Country,Customer.CustID )
11. Notice how BAQ results change when CUBE function is used to construct the GROUP BY clause.
CUBE( Customer.Country,Customer.CustID )
CUBE outputs a grouping for all permutations of expressions in the composite element list.
Sort Order
The Sort Order sheet is where you define how the data results display when the query runs. You can sort your
data through any combination of columns. You can also select whether the data displays in ascending or
descending order.
You can only add sort fields for the main query or for the
SubQueries using the TOP clause. Otherwise, the BAQ will fail
on execution.
1. In the Available Columns section, highlight the column by which you want to sort data.
You can also use keyboard combinations to select multiple fields. You can click one field and then press
and hold the <Shift> key to select a range of fields. You can also press and hold the <Ctrl> key and select
a specific group of fields.
The data in this query is now sorted first by Company, then by Sales Order Number, and lastly by Sales Order
Line Number.
2. Click the Right Arrow button or drag and drop the column names to the right pane.
The column is added to the Sort By field.
3. If you need, use the Up Arrow and Down Arrow buttons to change the sorting order.
4. To control if data should be sorted in an ascending or descending order, double-click on the selected column.
The direction is reflected on the small triangle that displays next to the selected column.
5. To remove a column from the sort list, highlight it and click the Left Arrow button.
SubQuery Options
By default, a simple query contains only one subquery with the following attributes:
Field Value
Name SubQuery1
Type TopLevel
Results Row Set All
When you add new subqueries to the BAQ, all subqueries, excluding Inner subqueries, are ordered by the Seq
field. Each query text is generated and these texts are concatenated. No assumption of the subquery order is
made.
When you create the new BAQ, the main subquery named SubQuery1 is created by default.
To set up the main subquery:
1. Create a new query and specify its main parameters on the General sheet.
3. In the Name field, enter the name of the main subquery. In this example, the BAQ returns the list of quotes
from the QuoteHed table. To identify the subquery, you can enter this value in this field.
5. In the Result Set Rows field, select how data displays in the subquery results set.
The below tables lists the available options:
Keyword Description
All Default value; the SELECT ALL command returns all data without restriction.
Distinct SELECT DISTINCT specifies that only unique rows can display in the result set.
Top SELECT TOP clause specifies the number of rows or percent of rows to return.
You can either a number or percent of rows the result set displays.
WITH TIES specifies that the query result set includes any additional rows that match
the values in the ORDER BY column or columns in the last row returned. This may cause
more rows to be returned. TOP...WITH TIES can be specified only in SELECT statements,
and only if an ORDER BY clause is specified.
DistinctTop SELECT DISTINCT TOP corresponds to using DISTINCT and TOP clauses simultaneously.
The query results set contains top unique rows.
6. When Top or DistinctTop keyword is selected in the Result Set Rows field, the Top Clause pane becomes
enabled. Also notice the Order By OFFSET - FETCH Clause pane is now disabled.
7. In the Rows Number field, enter the number of rows or percent the query results set will return. You can,
for example, have the query return the list of latest 50 quotes for a review.
8. If you select In Percent, the top percent of rows specified in the Rows Number field will be returned in the
results set.
9. If you select With Ties, the query result set includes any additional rows that match the values in the ORDER
BY column or columns in the last row returned.
10. The Offset and Fetch fields provide you with an option to fetch only a window or page of results from the
result set. You can use the Offset field to enter the number of rows to skip, before starting to return rows
from the query expression.
11. The value you enter in the Fetch field specifies the number of rows to return, after processing the OFFSET
clause.
select
[EmpBasic].[EmpID] as [EmpBasic_EmpID],
[EmpBasic].[FirstName] as [EmpBasic_FirstName],
[EmpBasic].[LastName] as [EmpBasic_LastName]
from Erp.EmpBasic as EmpBasic
order by EmpBasic.EmpID OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY
Create SubQuery
When you construct a query, you can add various types of subqueries and indicate how they correlate with each
other.
To define a subquery:
4. In the Type field, select the type of correlation between subqueries. By default, the subquery is set to
InnerSubQuery type. In this example, you combine the current subquery's results with the TopLevel subquery
using the Union operator.
The below tables lists all available options you can use for the subquery:
Type Description
TopLevel Default value for simple query; each BAQ can contain one main TopLevel subquery.
Union The UNION command is used to select related information from two tables, much like
the JOIN command. However, when using the UNION command all selected columns
need to be of the same data type. With Union, only distinct values are selected.
UnionAll The UNION ALL command is equal to the UNION command, except that UNION ALL
selects all values.
The difference between Union and Union all is that Union all will not eliminate duplicate
rows, instead it just pulls all rows from all tables fitting your query specifics and combines
them into a table.
Type Description
Intersect Use the INTERSECT command to return the results of two or more select queries. However,
it only returns the rows selected by all queries. If a record exists in one query and not in
the other, it will be omitted from the results.
Except Returns any distinct values from the query to the left of the EXCEPT operand that are
not also returned from the right query.
CTE A common table expression (CTE) can be thought of as a temporary result set that is
defined within the execution scope of a single SELECT (or may serve as a subquery, instead
of SELECT).
A common use of CTE is to query hierarchical data. Returning hierarchical data is a
common use of recursive queries, for example: displaying employees in an organizational
chart, or data in a bill of materials scenario in which a parent product has one or more
components and those components may, in turn, have sub-components or may be
components of other parents.
InnerSubQuery InnerSubQuery is usually added in the WHERE Clause of the sql statement as a nested
query inside another query. Most of the time, a subquery is used when you know how
to search for a value using a SELECT statement, but do not know the exact value.
5. In the Result Set Rows field, select how data displays in the subquery results set.
For more information on Type and Result Set Rows options, review the previous Define Main SubQuery
topic.
7. Add table(s) you need to construct the subquery. Use the techniques defined in the Phrase Build topics to
create the BAQ.
10. On the General sheet, in the Query Phrase section, view the resulting SQL statement.
11. In this example, notice the TopLevel subquery displays at the top of the SQL statement, followed by the
second subquery of Union type.
12. Navigate to the Analyze sheet and verify the syntax is OK and the BAQ returns expected data.
SubQuery List
Use the SubQuery List sheet to view and manage all subqueries you create within the BAQ.
In the grid, all subqueries you create are ordered by the sequence number. Except inner subqueries, the sequence
number defines how partial query texts are concatenated to build the final SQL statement. If subquery contains
reference to an inner subquery, the text of the inner subquery is generated on demand and inserted where
required.
On the subquery panel, you have the ability to create and remove subqueries, change their sequence value and
view how data displays in the results set.
To manage subqueries:
2. To create a new subquery, click the New SubQuery button. You must then define its main parameters on
the SubQuery Options list.
4. To move the selected subquery up in the list, click the Up Arrow button.
5. To move the selected subquery down in the list, click the Down Arrow button.
6. You can use parenthesis to group SubQueries and create the following query constructions:
• Addition of Union SubQueries to InnerSubQueries, for example:
Select * from (select field from table union all select field2 from table2). -> top (inner union)
• Grouping of Set-Operator SubQueries, for example:
Select field from table Union (select field2 from table2 except select field3 from table 3) -> top (union
except)
Note when a group for inner SubQuery is created, the field mapping is shown using this first inner SubQuery.
Example
Top
Inner <- some separate inner SubQuery
Union <- fields are selected according to the Top field list
Top
(Inner <- groups with next Union
Union)<- Fields correspond to Inner SubQuery
Besides using BAQs to display custom views of data, you can also create updatable business activity queries.
These updatable queries have business object methods connected to them, so users can create and edit records
- updating the database through the query itself.
You create updatable BAQs in a similar way to display only BAQs by adding tables, filter criteria, display columns,
and so on. You have some extra steps, however, as you need to define which table contains the updatable fields
and also make sure the business object methods are correctly linked to the updatable fields.
Just like a read-only BAQ, you can link as many tables in relationships as you need. Multiple tables accessed by
each BAQ can be updatable, however, so you can construct updatable BAQs that contain as many updatable
fields as you need. The one limitation is that only one business object involved in each process can contain an
updatable BAQ, but because multiple updatable table combinations are possible , you should be able to create
an updatable BAQ that matches your needs.
You can place updatable BAQs on smart client dashboards. After you add these dashboards to the Main Menu,
they become custom data entry programs users can launch to both review current data and make any updates
they need. Optionally, you can also use updatable BAQs on mobile device dashboards. Once you create a mobile
dashboard that contains an updatable BAQ, users run this custom entry program on an iPhone, Blackberry, or
other supported mobile device. Users enter data through the mobile device, directly updating the database
wherever they may be. In order to build mobile device dashboards, you must purchase a mobile device dashboard
license from Epicor.
Before you can create updatable BAQs, you must have both
BAQ Advanced User and BPM Advanced User rights.
Because updatable BAQs require business process management
(BPM) methods to run, you need access to these rights as well.
You activate both advanced BAQ and BPM rights within User
Account Maintenance.
Furthermore, in order to use BPM Update Processing via
UpdateExt and Advanced BPM Processing (design,
import/export and copy), the BusinessProcessManagement
module must be licensed in your Epicor ERP installation. The
BPM license is not required for database updates through Epicor
Service Connect workflows.
User Rights
Although you can access most BAQ functionality, to create and modify updatable BAQs, you must have both
advanced BAQ and advanced BPM rights. Because the updatable business activity queries run through BPM
methods, you need to use these advanced features. You activate advanced BAQ and BPM rights on your account
within User Account Maintenance.
To assign updatable BAQ rights to a user account:
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
1. Use the Detail sheet to find and select the user record you need.
This user account can now access the updatable BAQ features. The next time you log into the application through
this user account, you can use the Update sheets within the Business Activity Query Designer.
General Properties
Use the controls on the General Properties sheet to indicate how users can enter and edit records through the
updatable BAQ. You also indicate which fields are available for data entry.
You can now begin defining the main options for your updatable query.
To define the main updatable BAQ properties:
1. First, create a new BAQ. To activate the sheets under the Update tab, one the General sheet, select the
Updatable check box.
In this example, an updatable BAQ using the Customer table is used.
2. Define the main options for your updatable query. Select the Update > General Properties sheet.
3. Select the Allow New Record check box to indicate users can add new records through this updatable
BAQ.
In this example, the check box is selected, which indicates users can enter new customer records through
this BAQ. When this check box is clear, users will only be able to update existing records.
4. If you wish, enter a Label for AddNew value. This value defines what appears on the drop-down menu
next to the New button on the Standard toolbar.
The text you enter here displays as a node on this drop-down menu. Be sure it identifies the purpose of the
new record the users will create through this updatable BAQ.
5. Select the Allow Multiple Row Update check box to give users the ability to make changes to two or
more rows in a table at the same time.
If this check box is clear, users are required to save one changed row before they can work on another
row.
6. To make new actions available for use within an Updatable BAQ directive (using the BPM functionality), you
need to create action placeholders. You do this optional step by clicking the Define Custom Actions button.
9. Enter an ActionID. This identifier defines the custom action within the updatable BAQ.
10. Enter an ActionLabel. This value defines how the action displays on buttons within the dashboard.
11. If you wish to remove a custom action, click the Delete button.
12. Continue to add the custom actions you need. When you finish, click OK.
14. You can also launch the Define Custom Action window from the Actions menu. To do this, from the Actions
menu, select Define Custom Action.
Next, you use the Query Field List to indicate which Display Column fields the users can update. You can also
create or select default values that automatically populate a field.
1. To indicate all of the selected columns within the Query Field List grid are available for data entry, click
the Check All Fields As Updatable button.
The Updatable check box is automatically selected on each field (row) in the grid.
2. The Alias field displays the specific Alias for each displayed column within your updatable BAQ TopLevel
Subquery.
3. The Data Type field indicates the kind of data contained within the specific field. Available types:
• nvarchar - Alphanumeric letters and numbers
• int - Whole numbers only
• decimal - Numbers which also contain decimal places
• bit - Defines a True/False value; on the interface, logical fields appear as check boxes or radio buttons
• date - Date (month, day, year) values only
• datetime - A date value which also includes the time
• uniqueidentifier- A Globally Unique Identifier value
4. The Updatable check box indicates users can enter data within a specific field. When you select this check
box, users can then enter data within this specific field; this new data is then saved to the database.
5. Select the IsRequired check box to make the current field required. This indicates the field cannot be empty.
When users attempt to save a new or existing record within the query and this field is blank, they will not
able to save the record until they enter a value in this field.
6. You cannot update a field if its IsReadOnly property is selected within the table. This check box displays
for your information and cannot be modified. If this check box is selected, users cannot change the data
that appears in this column.
7. Use the InitialExpression field to enter a text value that displays in the field before users actually enter
data into it. Use this feature to place some instructional text in the field to help the user understand what
information is required for this field.
8. If you want to create a calculation to determine the initial expression, click the Column Initial Expression
button. This launches a window similar to the Calculated Field window; use the controls on this window to
create a formula that generates the initial expression you need for a specific field.
9. You can also define specific acceptable values that will be available in a specific field. To do this, click the
Advanced Column Configuration button.
This feature is discussed on the following topic.
Use this window to define the type of data the users will enter through this updatable BAQ field. You can define
text fields, date fields, number fields, drop-down list options, and radio button options through the controls on
this window.
Updatable BAQs utilize two field format definitions. The format you define on the Display Fields > Columns
Select sheet defines how a field value displays in a read-only mode, for example, in a grid.
You can define a second format in Updatable field editor. This way, you can define different formats for
example, x(10) for display and >>,>>9.99 for editing.
This window is similar to the Query Parameters window described in the previous Phrase Build - SubQuery
Criteria section.
To use an editor:
1. Use the tree view to select an updatable field for which you want to define values.
2. Select the Data Type for the parameter from the drop-down list. Available types:
• Nvarchar
• Integer
• Decimal
• Date
• DateTime
• Bit
• uniqueidentifier
3. In the Format field, the default format for this Data Type displays.
If you need, you can edit this value. Be sure the format follows the convention of the database.
4. If this field is required in order for the BAQ to pull in query results, select the Mandatory check box.
5. Use the Editor Type drop-down list to define the editor control the user will have for entering data within
the updatable field. Available options:
Option Description
Common Editor Activates the Editor Default field. Enter a custom text value you need for the
field.
This text appears by default; users can then enter a different value in this field.
Radio Button Set Activates the Values Editor sheet. Use this sheet to define the various radio
button options for this field. Users can then select a radio button option from
the values you define in this window.
DropDown List Activates the Data from drop-down list. Use this list to define the source of
the drop-down list options. The field then displays options contained on the
drop-down list.
6. If you select the Common Editor option from the Editor Type drop-down list, the Editor Default field
activates. Enter the default value you want within this field. When you use this updatable BAQ in a dashboard,
this value is used to perform field level validation either before changes to a field are saved to the database
or after updates to the field are changed and returned for display on the interface.
7. If you want this field to generate a Business Process Management (BPM) method, select the Raise Events
check box. When you complete your updatable BAQ on the Update Processing sheet, you can see these
new methods within the Updatable BAQ Method Directives window. On the finished Dashboard assembly,
this will be used to perform field level validation before proposed changes to the field are committed or to
perform additional updates after the field value has changed.
8. If you want the field to have access to a quick search for finding and selecting data entry values, click the
Quick Search button to locate the quick search you need. You create quick searches through Quick Search
Maintenance; these configurable search programs display input criteria to use for a search, display search
result fields, and returns the data from the specific field you define. For more information on quick searches,
review the Quick Search section within Chapter 4: Searches.
9. If you select the DropDown List option from the Editor Type drop-down list, the Data from field activates.
Use the options from this drop-down list to indicate the source from which the data on this list populates.
Available options:
Option Description
Custom Values
Causes the Values Editor to display controls for creating a new list of values. Use this
functionality to define the various list options this drop-down list will use.
Enter the following information:
• Value - Enter the actual value of the parameter that will be send to the query.
• Display Text - Enter the text displayed for the user for this value.
• Order - Defines the sequential order of items in the list.
BAQ The Values Editor displays controls for selecting a BAQ. Enter the following information:
• Query ID - search for and select the BAQ you need.
• Display Column - select the column which displays in the lookup list.
• Value Column - defines the name of the column you want to use for the field value.
User Codes Causes the Values Editor to display controls for selecting a specific User Code. User codes
are lists of custom values you define through User Defined Code Maintenance. When
you select a user code, the drop-down list populates with values contained within the
custom user code record. For more information about creating user codes, review the
User Defined Codes Maintenance help topics.
10. Continue creating values for all of the updatable fields you need. When you finish, click Save.
Update Processing
In order for your updatable BAQ to work properly, use the controls on the Update Processing sheet to select and
configure a processing method used to update the target database.
You can select one of the following processing types:
1. Use the Service Connect Workflow method to set up the interaction of business activity query with Epicor
Service Connect (ESC). Database updates are performed using the ESC workflow created directly from
Business Activity Query Designer.
2. Use the Advanced BPM Update only method to create a BPM directive manually from scratch, or, to
customize the directive generated by BPM Update processing. Updatable BAQ directives initiate BPM actions
based on method calls launched from an updatable BAQ.
3. Use the BPM Update method to perform database updates using the special Business Object method
UpdateExt, that simulates the standard way, how application manipulates data within Business objects.
Each of these methods is discussed in the following topics.
The following topics discuss the controls on the Update Processing sheet to set up the interaction of business
activity query with Epicor Service Connect (ESC).
Epicor Service Connect settings are primarily defined on the Company Maintenance > General Settings sheet.
When a user clicks the New button, the BAQ Designer tries to connect to ESC using the default settings defined
on this sheet.
Navigate to Company Maintenance.
Menu Path: System Setup > Company/Site Maintenance > Company Maintenance
2. In the Server field, enter the server where Epicor Service Connect is installed.
3. Enter the User name and Password of an Epicor Service Connect user account that has rights to the server.
4. Click the Test Connection button to verify the connection to the Epicor Service Connect server is established.
5. In the UBAQ Workflow Package field, select the default workflow package where workflows created
from Business Activity Query Designer are placed.
At the new workflow creation, you can override this value by selecting a different workflow package than
default.
Use the following steps to create new workflow using the ESC parameters defined on the Company Maintenance.
1. To create a new workflow for the uBAQ, click the New button.
3. In the Select a Workflow package list, accept the default workflow package defined in Company
Maintenance or select a different package where you want to save the new workflow.
4. In the Enter new Workflow name field, type the name of the workflow to be created.
Good practise is that BAQ and workflow are named the same.
5. Click OK.
You can override ESC settings defined on Company Maintenance by calling an existing or creating a new workflow.
To configure parameters:
1. Next to the Service Connect Workflow field, click the Configure button.
3. From the drop-down list, select an available ESC Server you want to use for update processing.
4. The Server URL automatically displays the integration service that handles communication between Epicor
ERP and Epicor Service Connect.
5. If you want to use an existing workflow, in the Workflows tree view, search for and select a workflow you
want to use.
6. If you want to create a new workflow, click the Create New button and specify the workflow package and
workflow name.
7. In the SC Workflow Launch Credentials pane, specify the Username and Password to launch the selected
workflow. The credentials you enter on this form are shared by all BPM's Invoke Service Connect actions in
this company.
8. When you click the Advanced button, you are presented with the Workflow Context Parameter window.
The information on this window is shared between the BAQ Designer and BPM. The ESC server credentials
you enter allow calling of Epicor services from the Epicor Service Connect side by using imported .net
references.
The standard ESC template workflow and corresponding schemas are created directly from the Business Activity
Query Designer.
The following is the list of events the generic Service Connect workflow handles:
• GetNew - This method generates a new record and adds it to the database table. If your updatable BAQ
allows users to enter new records, when users create new methods they activate this method. A new, blank
row is created within the updatable table, and the user populates the fields linked to this row with new data.
• Update - This method refreshes the information within the database with new information a user has entered
in the updatable BAQ. When you test your updatable BAQ by modifying existing data, this method runs when
you click the Update button. When the updatable BAQ is embedded within a dashboard, this method runs
when the user enters new data and clicks the Save button.
• CustomAction - Use this method to run custom actions you define on the uBAQ.
• FieldUpdate - This method occurs after the user's change to a field is committed. You can use this method
to perform additional processing against the changed row. For example, when you enter a part number, you
want the part description field to populate automatically.
• FieldValidate - This method occurs before the proposed change to a field is committed. You can use this
method to validate proposed changes. For example, you can prevent users from entering an incorrect value
in a certain field such as non-existent state.
You can customize the workflow so it meets your business process requirements. Use the available Epicor
Service Connect documentation to learn how to build workflows which can automate processes, connect
different business entities, applications, or users.
Use this method to perform database updates using the special Business Object method UpdateExt. This update
method governs the whole data transaction process between the updatable BAQ and the related Business Object.
To use BPM update processing:
4. The Select Business Object window displays. The business objects for the tables on the current BAQ display
by default in this window.
5. Select the business object you want from the Suggested business objects list.
6. The Update Method indicates the method used to enter the changes made through the updatable BAQ
to your database. By default the UpdateExt method displays, which is the update method used on all
updatable BAQs.
7. If you need, you can select a different business object by clicking the Select Business Object button.
8. When you have selected the business object you want, click OK.
9. When you select a Business Object and a method, the Tables to update pane displays the hierarchical tree
of all tables, participating in the UpdateExt method.
After you select a BO, uBAQ automatically attempt to synchronize Column Mappings. If uBAQ display list
contains table fields corresponding to table fields from the UpdateExt tables list, mapping between these
fields is automatically created. Within the Tables to update tree, a checkbox displays next to each table for
which such mapping was found.
In the process of field mapping between BO and BAQ, you can select / deselect different tables based on
your needs. Only tables, checked in the tree -view will participate in Column Mapping and used in update.
10. The two sheets at the bottom display columns are mapped with the following distinction:
• The Input Column Mapping defines how data is pulled from the uBAQ table to the Business Object
table.
• The Output Column Mapping defines how data is pulled to the uBAQ from the Business Object, after
the UpdateExt method executes.
The Column Mapping sheets are discussed on the following topic.
Column Mapping
After you select a BO, uBAQ automatically attempt to synchronize Column Mappings. You can modify this
information to create custom mapping between BAQ and Business Object.
The following list outlines how BAQ Column Mapping works:
• If BO table field is used in either Input or Output Column Mapping, then input mapping for all its primary key
fields must be provided in order to uniquely identify table rows.
• BO UpdateExt tables are organized in the Tree-view. To update a child table, the primary key values of all
parent tables must be supplied in Input Column Mapping.
These required columns are automatically added when you click the Synchronize button, or when you
regenerate the BPM Directive by saving the BAQ.
• If BAQ cannot suggest mapping automatically, the right side of Input Column Mapping assignments shows
no mappings. A corresponding error message displays when BPM Directive is regenerated on BAQ save.
1. The Query To Object Column Mapping defines assignments of BAQ fields to the Business Object table
fields.
2. The MapTableName field displays the table name, used on the left side of a mapping assignment.
For Input Column Mapping, this field displays the Business Object table name.
3. The MapFieldName field displays the Business Object table field name.
4. The NetDataType field indicates .NET data type of the field such as Boolean, Integer or String.
5. When Required check box is selected, it indicates that users must enter data in this field before a new
record is saved. If they attempt to save the field without entering data in it, an error message displays. The
information in this field is supplied from Business Object, where the specific column is marked as required.
6. When IsKeyField check box is selected, it indicates this BO field is part of primary key and input value is
required for UpdateExt functionality.
7. The Expression displays the equation used to pull data from the updatable BAQ into the Business Object
table.
8. You can use the editor to manually create an expression you want to assign (or map) to the
MapTableName.MapTableField. Click the Expression Editor button to launch the Business Object Update
Expression window.
9. The Editor displays the expression used to pull data from the updatable BAQ into the Business Object table.
When you launch the Business Object Update Expression from the input mapping, the Add All Mandatory
Fields option becomes available on the Actions menu. This option adds all fields from TopLevel Display
Columns to the output mapping. You must then make sure all empty mapping expressions are filled.
10. The Object To Query Column Mapping sheet defines how data is returned to the BAQ from the Business
Object.
11. For Output Column Mapping, the MapTableName field displays a ttResult variable, corresponding the
current row in BAQ execution results table.
12. The MapFieldName field displays the BAQ ttResult field name, containing selected field Alias.
13. You can use the NullableType checkbox to manually specify that result can contain a null value.
14. You can use the Expression Editor button to manually create an expression you want to assign (or map)
to the MapTableName.MapTableField. Note that BAQ columns within an expression should be referred as
ttResult.Alias columns.
15. When you launch the Business Object Update Expression from the output mapping, the Add All Result
Fields option becomes available on the Actions menu. This option inspects the BO and adds all fields marked
as required, to the input mapping. You must then make sure all empty mapping expressions are filled.
16. For both input and output column mappings, you can use the toolbar above the grid to add/remove from
mapping and sort MapFIeldName list in an alphabetical order. The Synchronize option inspects all tables
within the BO. If BO tablename and field name exists in the BAQ display field - a new mapping row is
automatically created.
Business Objects contain the code that calls a database, sending current data to a custom dashboard for display,
or populating the database with new data. A business object (also called a BO) houses the methods used to
enter, view, and calculate data for a specific function within an application.
Each process a business object can run is called a method; by default each updatable BAQ contains the following
methods:
• GetNew - This method generates a new record and adds it to the database table. If your updatable BAQ
allows users to enter new records, when users create new methods they activate this method. A new, blank
row is created within the updatable table, and the user populates the fields linked to this row with new data.
• Update - This method refreshes the information within the database with new information a user has entered
in the updatable BAQ. When you test your updatable BAQ by modifying existing data, this method runs when
you click the Update button. When the updatable BAQ is embedded within a dashboard, this method runs
when the user enters new data and clicks the Save button.
• Get List - Retrieves the data specified by the query.
• CustomAction - Use this method to run custom actions you define on the uBAQ.
• FieldUpdate - This method occurs after the user's change to a field is committed. You can use this method
to perform additional processing against the changed row. For example, when you enter a part number, you
want the part description field to populate automatically.
• FieldValidate - This method occurs before the proposed change to a field is committed. You can use this
method to validate proposed changes. For example, you can prevent users from entering an incorrect value
in a certain field such as non-existent state.
Each of these methods can be monitored through Business Process Management (BPM) directives. BPM
customization allows using of mostly all BPM Method directive actions and conditions for processing query data.
When you create an updatable BAQ, the application writes a base processing directive for the update method.
The directive uses C# code to update the database according to the settings defined in the Business Activity
Query Designer. These directives can evaluate the data passed into or out of the database, interrupting the
processing when certain conditions you define are met. Various actions, again which you define, then automatically
run in response to the condition. You create these Updatable BAQ Method Directives from within the Business
Activity Query Designer, or, you can access the program directly from the main menu:
Menu Path: System Management > Business Process Management > Updatable BAQ Directives Maintenance
To following are the ways of using the Advanced BPM processing functionality:
1. Business Activity Query Designer helps users with updating data via a selected business object. For these
purposes, the UpdateExt method is used. This update method governs the whole data transaction process
between the updatable BAQ and the related Business Object (BO). When you select the BPM Update option
on the Update Processing sheet, you activate the BPM Update Processing section to configure data updates.
2. You do this by selecting an appropriate Business Object and defining data Mappings between BO's dataset
and query display fields.
3. Click the BPM Directives Configuration to access the Updatable BAQ Method Directives.
4. Based on the information you specified in BPM Update Processing, the BAQ Designer generates the Base
Processing directive against uBAQ.Update method.
5. This directive is named #BASE# and contains a workflow item with custom C# code, which prepares data
and calls UpdateExt for selected BO.
6. Also, Base Processing directive for the GetNew method is automatically generated if the Allow New Record
option is selected on the Update > General Properties sheet. This directive is also named #BASE# name
and it contains C# code with field assignments for new row as defined in Initial Expression column defined
on the General Properties.
7. However, the BAQ Designer gives you the ability to modify the directives for any methods. By using the
Advanced BPM Update only option, you can create a BPM directive manually from scratch, or, to customize
the directive generated by BPM Update processing.
8. If you do not specify BPM Update Processing and launch Updatable BAQ Method Directives, then no #BASE#
directives are generated automatically for the GetNew and Update methods. Use this option to customize
the method completely by yourself.
For more information on how to build a directive and which workflow elements are available for use with
uBAQ directives, review the Business Process Management chapter.
Analyze
Use the Analyze sheet to both analyze and test your query for any possible problems before you use it in the
live application.
Run the data controls on this sheet to verify that the data results you need populate on this grid. If you are not
seeing the results you want, you can return to the Query Builder sheets to modify the query and then test the
results again.
Additionally, the Analyze sheet contains the functionality you use to verify and updatable BAQ can pull in (get)
data, update records, and add new records. You can also use this sheet to test a custom Business Process
Management (BPM) method against the updatable BAQ. After you verify the updatable BAQ can perform all of
the functions successfully, you are ready to place it on smart client and mobile device dashboards. Users can then
enter and update the data they need through this query.
After you create a query, verify its functionality on the Analyze sheet.
To verify the query:
3. To set the maximum number of rows returned by the query, you can select a value in the Rows to Return
field.
From the drop-down list, you can either select one of the predefined values or you can enter a custom value:
• <empty>
• 10
• 50
• 100
Note the value entered in this field is not saved with the BAQ, it is used for testing purposes only.
If an empty value is selected then by default, the query returns maximum of 10000 records. This limitation
is only applied on retrieving BAQ results while testing their execution. If you need to turn this limit off, access
Execution Settings from the Actions menu and set the RemoveTestRowLimit parameter to True.
5. If the BAQ runs too long, you can cancel its execution using the X button that displays to the right of the
Clear Grid button.
6. To remove the query results and Query Execution Messages, click the Clear Grid button.
Before you use verify the updatable BAQ functionality, define what fields users can update and set up a processing
method of your choice. You do both tasks using the sheets under the Update tab.
1. To set the maximum number of rows returned by the query, you can select a value in the Rows to Return
field.
From the drop-down list, you can either select one of the predefined values or you can enter a custom value:
• <empty>
• 10
• 50
• 100
Note the value entered in this field is not saved with the BAQ, it is used for testing purposes only.
If an empty value is selected then by default, the query returns maximum of 10000 records. This limitation
is only applied on retrieving BAQ results while testing their execution. If you need to turn this limit off, access
Execution Settings from the Actions menu and set the RemoveTestRowLimit parameter to True.
2. Click the Get List button to test whether the updatable BAQ can pull in data from the database.
3. You are warned this test may launch BPM directives that update the database. Click Yes.
4. If the BAQ runs too long, you can cancel its execution using the X button that displays to the right of the
Clear Grid button.
5. The Query Results grid populates with data. You now can test the BAQ to find out if you can update
existing records.
7. The Fields window displays. This window contains all of the fields you indicated were updatable on the
Update > General Properties sheet. Enter a new value in one of the fields.
In this example, you modify the address of a supplier record.
8. If an updatable field was selected to raise BPM events within the Updatable field editor, two additional
buttons display next to this field. The V button performs the FieldValidate BAQ method directives; the U
button performs the FieldUpdate BAQ method directives described for the field.
10. The record you updated is now highlighted within the Query Results sheet.
11. If you want to save this change to the database, click the Update button.
12. The record is now updated. To verify the update to the database was successful, you can click the Get List
button again to retrieve the updated DB results. You can also open a specific program that should reflect
your changes, for example, Supplier Maintenance and verify your changes there.
13. If you want to add new records to the updatable BAQ, click the Get New button.
14. A blank row displays on the Query Results list. Double-click the empty row.
15. The Fields window displays. Initially, all the fields are blank Enter the values you need to create a new record.
In this example, you create a new supplier record.
17. On the last row of the Query Results grid, the new record displays.
18. If you want to save this change to the database, click the Update button. The new supplier record is now
created. To verify the update to the database was successful, click the Get List button again to retrieve the
updated DB results.
19. If you created custom actions for the updatable query and then used the Updatable BAQ Method Directives
program to set up conditions linked to this action, you can test this directive. To do this, first select the
custom action you want from the drop-down list and click the Run Custom button.
If the updatable BAQ directive is set up correctly, the Business Process Management (BPM) condition and
its subsequent actions run as expected.
Where Used
Use the Where Used sheets to review all the items that use the current query. The information on these sheets
helps you decide if you should re-design the current query, delete the query, or create a new query.
The information on these sheets helps you decide if you should modify the current query or create a new query.
Be careful if you decide to modify the query, for any changes impact other applications that use this query
If you attempt to delete a query that is in use, a warning message displays verifying whether you want to continue
deleting the query. Typically you should not delete any query in use unless the BAQ is obsolete or no longer
needed. After you delete the query, you should then remove or update the dashboard, BAQ report, or other
items that previously used it.
If several user dashboards use the current query, you should not change it, but rather create a new shared
query that contains the changes you need. Other users can then decide if they want to use your new query
in their dashboards, reports, and other items.
1. Select the Dashboard List sheet to review which dashboards use the current query.
Dashboards are flexible, powerful tools that provide easy access to critical information in a real-time
environment. In addition to the standard dashboards provided with the application, you can also create
custom dashboards. Custom dashboards can replace the need for workbenches, trackers, Shop Vision
reports, ad hoc reports, and business intelligence reports. For more information on how to create a dashboard,
review Chapter 5: Dashboards.
2. Select the Quick Search List sheet to review which quick searches use the current query.
The Quick Search functionality is a dynamic tool you use to create configurable searches you can then use
within your own user account or share publicly for other user accounts - improving the productivity of
searches. For examples of how to use this functionality, review Chapter 4: Searches
3. Select the Dynamic Report List sheet to review which BAQ reports use the current query.
You use the BAQ Report Designer to turn a Business Activity Query (BAQ) into a report. Through the BAQ
Report Designer, you select a query as the base for a report, and to define the option fields, filters, and sort
by options that display on the report interface. Once you have the report layout complete, you an add it to
the menu for users to access. For more information on this functionality, review Chapter 3: BAQ Report
Designer.
4. Select the Business Activity Query List sheet to see any references of the selected query to another queries.
You can link a business activity query as a parameter to another query. These parameters can filter data on
the query; you define what values from the linked BAQ will be used as parameter values. You add parameters
to a query through a criterion you set up within the Business Activity Designer. For more information on
using parameters, review the Specified parameter topic earlier in this chapter.
BAQ Search
Use the BAQ Search sheet to make data from your query available to users searching for related data. Many
standard search forms throughout the application contain a BAQ sheet. This sheet provides users access to BAQs
you have identified through the BAQ Search sheet.
You must indicate the query as Shared (on the General sheet)
before users can access this BAQ search in search programs.
You can not use system queries on the BAQ Search sheet. If
you want to use a system query, create its copy first.
2. The Available “Like” Columns list contains all the fields you selected for your query on the Display Columns
sheet.
4. First you highlight this column in the list of Available “Like” Columns and then click the Right Arrow button.
6. Click Save.
Since the Part Number field was selected as the Like column for searching, any place you can search for a
part has this BAQ listed and available for searching.
10. The Search Results pane in the search window displays the query information. You can use the BAQ to
search for a specific part.
For examples of how to use this functionality, refer to the BAQ Searches section in Chapter 4: Searches.
Actions
The Business Activity Query Actions menu contains a number of tools you can use. This section describes each
of these tools.
Copy Query
The Epicor ERP application contains system queries that control how users enter and update data throughout
the database. These queries are a great starting point for creating your own modified queries. Although you
cannot change a system query, you can copy a system query, rename it, and modify this copied query as you
need.
You use the Copy Query option to duplicate an existing query.
1. Click the Query ID button to search for the query you are going to copy.
2. In the Query Search window, click the Search button and select the query that you are going to copy.
4. Click OK.
5. Notice that the System. No Save. In Use icons display. The icon indicates the selected query is a system
query that cannot be edited. It also indicates this query is used by a program, report, or owned by another
author.
6. In this example, the system zContactTracker query is used on a a quick search. You can find the specific
dashboard and quick search that contains this BAQ on the Where Used sheets.
7. You want to use this query as a base for a new query. From the Actions menu, select Copy Query.
8. In the Query ID field, enter the new name for the copied query. Be sure to enter an identifier that is different
from the ID listed in the Copy From section.
11. The message displays, indicating the query was copied successfully. Click OK to confirm the message.
You can now add additional tables, new display fields, calculated columns, make the BAQ updatable, and so on
to the copied query.
You use the Export BAQ command to save the query definition. Once you have selected the query you want to
export, you can then export it to a folder you specify during BAQ export. You typically use this option to create
a backup of your BAQ or if you want to use or analyze the query on another Epicor ERP installation. If needed,
you can import back into the application.
This process only exports the query definition, not the data.
The Business Activity Query Export Process program, discussed
later in this chapter, can export the query data.
2. Once you have a query in focus, from the Actions menu, select Export BAQ.
3. In the Description field, you can change the current description of the query.
4. Click the Export to File button to find and select the folder that will contain the exported BAQ. You need
to select the directory path and enter the filename.
6. The Export process messages field details the results of the export.
7. If the export is successful, the “Query export finished with success” message displays.
8. Click Close.
Once you have exported a version of a query, you can use the Import BAQ option from within the Business Activity
Query Designer program to pull the query definition back into the application.
To use the Import BAQ command to import a query:
2. Click the Import File button to find and select the BAQ you wish to pull into the application.
3. Enter the New Query ID. In this example, you import the MyContactQuery–Rev2 query.
4. Select the Show in Designer check box to immediately load this query into the Business Activity Query
Designer program.
6. The Import process messages field details the results of the export.
7. If the import is successful, the “Query Import finished with success” message displays.
8. Click Close.
When a query is created, only the author of the query can modify it. To give another user rights to modify a
query they did not create, use the Change Author option to assign a new author to the query. The Change
Author command is only available when you are the author of the query.
To give another user access to your query:
3. The name of the current BAQ owner displays in the Author field.
4. Click the drop-down list to search for and select the User ID to which you need to make the new author of
the query.
5. The new author’s User ID displays within the Change Author window. In this example, you assign AARON
to become the new BAQ author.
8. Notice the Other owner. No Save red icon indicates you no longer can save changes to this query.
Once you have created a Business Activity Query, you can use the Generate ASP program to turn a query into
an .asp page. You can then display this page on your web site, where you can update it with current information
from your database.
Use this program to both choose which query fields you want to display and define the search options you use
with this data. You may also change the name of field columns. To finish generating the page, give the ASP file
a name and save it within your web deployment directory.
To use this program:
3. If you decide you want to create an .asp page for a different query, click the Query ID button to find and
select a different query.
5. The FieldName contains the path and name of the generated ASP file. If the current query already has a
file, its path and filename appear in this field by default.
6. To display a field on the .asp page, select the ShowField check box. By default, all fields are selected for
display.
7. You can edit the text to display the label that you want in the FieldLabel column. This name defaults from
either the database or the query.
8. If you select the IsNumeric check box, numeric search options display. If the field’s IsNumeric check box is
clear, however, string search options display.
When the IsNumeric check box is selected, it indicates the values in this column contain numeric data. This
causes the application to remove numeric grouping separators (like the comma), so that the numeric values
display correctly on the .asp page. It also changes the FieldSearch options to only display Numeric Search
Option values.
9. To make fields available for searching, select each field’s SearchField check box. When selected, this field
displays as a search option on the .asp page. By default, all fields are enabled for searching.
10. The FieldSearch defines how users can search on the current field. For example, you can select Equals for
the Customer_State FieldSearch. This means that users have to enter an exact match (for example, NY) to
provide you with all customers located in New York.
11. To create a new .asp filename and path, click the ASP Filename button.
13. Notice the default location on your application server where files will be generated.
16. You return to the Generate ASP window. Notice the path and filename now appear in the ASP Filename
field.
Once you click the Generate ASP button, an .asp file and an .xsl file are created within the WebDeployment
directory. You also need to run the Business Activity Query Export Process to export the query data (the .xml file)
to this folder as well. Now the .asp page can directly access data from your database. These files perform the
following functions:
• .asp – The file generated by the program. This file is referenced by your company’s website. The Generate
ASP program creates this file; you only need to create it once.
• .xsl – The file that sorts and displays data results on the .asp page. The Generate ASP program creates this
file; you only need to create it once.
By default, these files are generated in C:\EpicorData\WebDeployment folder on your application server.
• .xml – The data source file used by the .asp page. This file is created through the Business Activity Query
Export Process program. If this process program is scheduled within the system agent, this query’s data is
updated periodically on the website.
By default, the Business Activity Query Export Process generates this file in C:\EpicorData\Processes\UserID
folder on your application server.
You must also copy two other files - filterdata.xsl and exports.css - to the same web-deployment directory. These
files are standard style sheets provided by Epicor:
• exports.css – This file is a Cascading Style Sheet document. Developers use the Cascading Style Sheet to
control the style and layout of multiple Web pages all at once. As a Web developer, you can define a style
for each HTML element and apply it to as many Web pages as you want. To make a global change, change
the style and all elements in the Web are updated automatically.
• filterdata.xsl – This file is an XSL Style Sheet. This file is used by the ASP page to create the filters as defined
in the generate ASP program. You can use XSL to display information in your XML document.
If you expose the page via IIS, are be able to see the query output via internet browser.
To complete the updatable BAQ, use the Run BPM Designer command to set up how the BAQ interacts with the
business object's methods. Business Objects contain the code that calls a database, sending current data to a
custom dashboard for display, or populating the database with new data.
5. When you finish creating your updatable BAQ method directives, exit the program.
For more information, review the Updatable Business Activity Query section discussed earlier in this
chapter.
Use the Define Custom Action command to create action placeholders available for use with the business activity
query (BAQ).
4. Enter an ActionID. This identifier defines the custom action within the updatable BAQ.
5. Enter an ActionLabel. This value defines how the action displays on buttons within the dashboard.
7. Continue to add the custom actions you need. When you finish, click OK.
The custom actions you add through this functionality are placeholders you can then leverage within the Updatable
BAQ Method Directives program. You use this program to create conditions that monitor these custom actions.
When a user enters data which matches the condition, the condition runs th e specific actions linked to it, like
validating data or displaying an informational message.
For more information, review the Updatable Business Activity Query section discussed earlier in this chapter.
Define Parameter
Use this option to create an alternative query parameters. You can then evaluate table or subquery columns
against these parameters when building query criteria. These parameters can be nearly any value you need.
You can also use parameters to display customized method arguments for use in Business Process Management
(BPM) directives.
The query text contains references to arguments using this format: @arg_name
Example
Execution Settings
Use Execution Settings command to modify execution parameters of the selected BAQ.
You can for example, set up paging parameters to indicate how the BAQ should get a sub selection of data from
a record set, specify the longest time in which the query can run or supply SQL statements, clauses and keywords
to modify the resulting SQL syntax.
The below table displays possible execution values you can define.
PageNum
The values in this field specifies the page number user wants to get. The default value is
1.
Be aware that if you for example, set this value to 10, but the BAQ only returns 3 pages
of data, an empty result set displays.
PagingMethod
The value in this field specifies the method used to retrieve data from the datasource.
The available values include:
• Auto - This is the default paging method. When selected, the DynamicQuery tries to
automatically select the most appropriate paging method, supported by BAQ definition
and database engine.
• Simple - When a query executes, its results return through DbDataReader, but only
required page is loaded to the result table. This paging should work for any database,
so use it explicitly if Auto method does not work for some reason.
NeedTotal
This field specifies if total number of rows in the query is received (without paging). If this
flag is set to True, the ExecutionInfo table in the result dataset, returning from query
contains total number of rows.
The value in this field should be set to False whenever possible to reduce the server
load.
Where
Setting name of additional conditions in SQL notation which are applied against results
table. Only display fields and BAQ/SQL constants be referenced. You can use where
statements of any complexity including and/or concatenations. If ExecutionFilter table
contains any conditions then they will be applied before this ‘where’ condition.
Select
Setting name for SELECT. This is comma-delimited list of fields in SQL notation. Use this
setting to narrow set of fields returned by query. Note you can only reference BAQ's
display fields.
Having
Setting name for statement that appears in the HAVING clause in addition to query
settings.
OrderBy
Setting name for comma-delimited list of fields by which you want sort the query result.
Optional direction can be specified in SQL notation (ASC/DESC).
GroupBy
Setting name for comma-delimited list of fields by which you want to sort query results.
SQLServerDateFormat
This setting adds SET DATEFORMAT call at the beginning of the query. This setting should
only be used MS SQL Server.
The available options include:
• mdy (month-day-year) - default option
Transaction Isolation
This setting sets transaction isolation level which controls the locking and row versioning
behavior of Transact-SQL statements issued by a connection to SQL Server.
The available options include:
• ReadUncommited - Specifies that statements can read rows that have been modified
by other transactions but not yet committed.
• ReadCommited - Specifies that statements cannot read data that has been modified
but not committed by other transactions.
• RepeatableRead - Specifies that statements cannot read data that has been modified
but not yet committed by other transactions and that no other transactions can modify
data that has been read by the current transaction until the current transaction
completes.
• Serializable - Specifies that statements cannot read data that has been modified but
not yet committed by other transactions. No other transactions can modify data that
has been read by the current transaction until the current transaction completes. Other
transactions cannot insert new rows with key values that would fall in the range of
keys read by any statements in the current transaction until the current transaction
completes.
• Snapshot - Specifies that data read by any statement in a transaction will be the
transactionally consistent version of the data that existed at the start of the transaction.
• NotSet - no Transaction Isolation specified.
queryMaxResultSet
Specifies maximum number of rows that will be returned by the dynamic query.
queryTimeOut
By entering a value in this field, you define the database server command timeout before
terminating the attempt to execute a command and generating an error.
Persist in Query
All execution settings can be flagged as persistent or not.
If the check box is clear, any specified settings will apply to the current BAQ session only,
until the BAQ form is closed.
If the execution setting is flagged as persistent, it will be used each time the BAQ runs.
If a BAQ supplies some execution setting on execution, while the same persistent execution
setting exist, then the first one has higher priority.
There are two parameters that are always persistent - QueryMAxResultSet and
queryTimeout; these are stored in the database with the query. All other execution settings
can be persistent or not.
RemoveTestRowLimit
This setting controls if the BAQ Designer is allowed to return more than 10000 rows while
testing BAQs.
For performance reasons, this parameter should be set to it's default False value
whenever possible.
This parameter has no affect on another query limits you may specify; it only controls the
data retrieval limit while testing BAQs.
Use the Get Query Execution Plan to retrieve and save the .sqlplan execution file. You later open this file in
the SQL Server Management Studio to examine the query execution.
2. In the Save SQL Server Query Execution Plan window, you can specify the name and the location where
you want to save the .sqlplan file.
3. Click Save.
5. Once the file is saved, open it using the SQL Server Management Studio for further analysis.
Run the Business Activity Query Export Process to export the query data from your database and store it in a
personal archive directory. This data can then be used on an ASP page, or imported to Microsoft® Excel® for
analysis and publishing.
Use the Business Activity Query Export Process program to export query data through either the .xml or .csv file
formats. You can export this data each time you launch this program. You can also set up the export so that it
automatically runs each time you launch your Startup Tasks.
Menu Path: System Management > Business Activity Queries > BAQ Export Process
1. Click the Query ID button to search for and select the query to export.
2. From the Output Format drop-down list, select the export format you want to use. You can choose either
XML or CSV file formats.
3. Enter the Output Filename for the exported query. By default, this file is automatically saved on the server
within the EpicorData > Reports > <UserName> directory - where <UserName> is the name of the current
user logged into the application. The location of this data directory is specified in System Agent Maintenance.
You can override the default output location by exporting the file to a custom location you define. It is
allowed to use:
• Relative paths (root folder level only), for example, temp/filename.csv
• Network paths, for example \\server\share\folder\filename.xml
The correct file extension is attached during each export. If you select that the output will be an .xml file,
the .xml extension is automatically added to the file name.
4. For CSV output format, you can enter the Text Delimiter. For example, if you place a semi-colon (;) in this
field, this character separates the data in the exported file.
5. For CSV output format, if you want to display field labels in the export file, select the Output Labels check
box.
6. From the Schedule drop-down menu, select a schedule you want to use.
Example
You can select the Startup Task Schedule from the
Schedule list and select the Recurring check box. This way
you export this query each time you run your startup tasks.
Within the Epicor Administration Console, several application server settings are available for use with BAQ
functionality. You can restrict how business activity queries generate results. This can help you avoid performance
issues caused when BAQs process large amounts of data. You can also indicate if BAQ database calls should be
recorded in the server log.
1. You launch the Epicor Administration Console from your server machine. Depending on your operating
system, you launch this tool in different ways:
• If you are on Windows SQL Server 2008 R2, click Start > All Programs > Epicor Software > Epicor
Administrative Tools > Epicor Administration Console.
• If you are on Windows SQL Server 2012, press the <Windows> + F button to display the Charms bar;
from the Apps screen, select Epicor Administration Console.
2. From the tree view, expand the Server Management node and Epicor Server node.
4. Now from either the Action menu or the Actions pane, select Application Server Settings.
5. For the BAQ Query Max Result Rows field, enter the highest number of rows that can be returned by a
business activity query.
By entering a value in this field, you restrict how many rows can be returned by each BAQ. This prevents
the query from pulling in an unlimited number of records, restricting situations where a runaway BAQ
consumes too many system resources to generate query results.
The default value is 0, indicating there is no limit. In this example, each BAQ can pull maximum of 2000
rows.
6. Now in the BAQ Query Timeout field, enter how many seconds can elapse before the application server
stops the query.
By entering a value in this field, you define how long each BAQ is allowed to run. When a query attempts
to generate results and reaches this time limit, the application server stops the query and sends the user a
time out message.
The default value is 0, indicating there is no limit. By entering 900, you allow queries to run 15 minutes
before they time out.
7. Within the Standard Logging information, select the BAQ Logging check box to record Business Activity
Query (BAQ) database calls.
Each time user activity activates a BAQ, the application server log records which query was called and how
long it took this BAQ to gather the data results.
By selecting this check box, you enable the following trace flag in the trace.config configuration file:
<add uri="trace://ice/fw/DynamicQuery" />
As a result, the server log records the following information:
Node Description
QueryID Displays a BAQ ID.
CompanyID A company, under which the BAQ is executed.
SQLExecTime Time spent on executing query's SQL statement on an SQL server.
DataFetchTime Time in milliseconds spent on reading result from an SQL Server and
preparing Result dataset.
PagingMethod If paging is used, displays the name of a paging method. (Simple, Partition,
Offset, Auto)
PageNumber If paging is used, displays the number of requested page.
PageSize If paging is used, displays the size of a page.
TotalTime Total time in milliseconds spent on query processing, including
preparation, execution, fetching data and finalization.
TotalRows Displays the number of rows in a result set.
RowLimitReached Presented if BAQ Query Max Result Rows setting is enabled in Application
Server Settings. If a query result set hits this limit; this node displays the
current limit setting value.
Example
A BAQ (Business Activity Query) info zone is an embedded query you can link to a specific field on a program
interface. When you activate a BAQ info zone, it displays as a linked tool tip window. The data that populates
this window depends on both the business activity query and the current value, if any, within the linked field.
After you create or modify the BAQ to use for the BAQ info zone, you link the BAQ to a specific field by either
using Extended Property Maintenance or embedding the BAQ info zone in a customization. When you launch
the program that contains the customized field, you will see a BAQ info zone indicator on the field. You can then
modify the color used to display this indicator and define a shortcut key combination that will activate the BAQ
zone. You define these personalization features in the Options window; you can access this window from the
Tools menu.
1. If a field is linked to a BAQ zone, a zone indicator displays next to the field.
2. Hold your mouse over the zone indicator; a tooltip window displays.
3. This BAQ zone window populates with data. The BAQ zone uses both the query and the field value, if any,
to generate its data results. In this example, the Part Number field has a zone indicator that displays a
graphic file for the selected part (1032KNUT).
This section contains a series of best practice methods to help you develop BAQs. If you follow these suggestions,
you will have more success creating both display-only and updatable BAQs
Fewer Tables, Better Performance
Carefully consider how many tables you need to join in your business activity query. The functionality has few
restrictions, so, if you wish, you can create incredibly complex queries. The more tables you join on the query,
however, the slower performance the query has during runtime.
If you wish to see a lot of data at once, create a series of smaller BAQs and then display them together on the
same dashboard. If you need to create a very complex view of your data, however, consider building an executive
dashboard instead. Both the dashboard and executive dashboard features use BAQs as building blocks for
gathering and displaying data, but contain additional, more efficient functionality for publishing and subscribing
values between tables. Because of this, it is often better to have a series of smaller BAQs you can manipulate
through a dashboard, rather than one huge BAQ that requires a lot of processing time to pull in its data.
To learn more, review Chapter 5: Dashboards and Chapter 7: Executive Dashboards.
Start Small and Test Often
Begin your complex query project by starting small with just one or two tables. You can then analyze the results
to find out if you are pulling in the desired data at each step through the database. You can then add more
complexity by adding another table and testing the results. By adding and testing each table and subquery, you
verify the results as you build the complex BAQ. Always be sure to build a complex BAQ in sections and then
frequently check the results. If you do not, you may pull in undesirable data, and it will be difficult for you to
determine which table is causing the problem.
Too Much Data
If you are getting more rows in your results than you expect, you may need to filter the second, using a field on
the first table. For example, you want to create a BAQ that shows when a specific operation is scheduled to run.
Because the database contains operations scheduled as What-If operations and others scheduled as actual
operations, you may get duplicate results. If you filter the JobOperDtl (job operation detail) table by using the
ResourceID field on the ResourceTimeUsed table, only resources assigned to operations in the actual schedule
appear in your BAQ results.
Use Calculated Fields
If you have similar data placed in different columns because of different record types, use a calculated field to
total these amounts for display within a single column. For example, if you are creating a query to review labor
in your manufacturing center, each employee will log time as indirect labor and direct labor. To find out the total
amount of labor, use a calculated field that contains a formula for totalling the indirect and direct labor values.
Outer Joins – When to Use
The Outer Join table relationship is useful in situations where you want to see everything from the first table and
find out what records are not linked to these records in the second table. For example, you want to see which
customers have recently ordered products from your company. To do this, you build a query that outer joins the
Customer table with the OrderHed (sales order header) table. All the customer records appear alongside all of
the sales order records. You can then see in the BAQ the customers that currently do not have sales orders placed
with your company.
Sorting Performance
Sorting data by a selected column is a powerful feature, but be aware that some significant processing time may
be required to display the reordered results. This situation is especially true when you sort a large amount of
data. The query tool has to first return all of the records into memory before it can re-order their sequence through
the selected column. All of this processing occurs on the server, so the data calls need to move across the network
before they arrive at your client workstation. So if you sort on a large amount of data, be patient – the reordered
results are on their way.
Case Studies
This section of the chapter explores some step-by-step case studies. Each case study explores a different aspect
of the business activity query (BAQ) functionality.
This BAQ generates a summary of each shop employee’s total labor and burden hours. During this case study,
you join the Employee Basic (EmpBasic) table from Shop Employee Maintenance with the Labor Detail (LaborDtl)
table from Labor Entry. You then filter the results against a specific date and create calculated fields to generate
the total labor and burden hours.
4. Select the Shared check box to indicate other users within the current company can use this query.
7. The Erp.EmpBasic table displays. Click and drag this table onto the grid.
8. Click the Connected Only Tables button. This limits the tables so that only tables linked to the EmpBasic
table display on this list.
9. The Erp.LaborDtl table displays; click and drag this table onto the grid. These two tables automatically link.
10. You want to filter the labor data based on a cutoff payroll date. Highlight the Erp.LaborDtl table.
12. Click the New button. A row displays in the Criteria grid.
14. For the Compare Operator, select Greater Than or Equal To (>=).
15. From the Filter Value drop-down list, the select specified constant option.
16. Click the specified link to launch the Specify a Value window.
17. The Specify a Value window displays. In the Value field, enter the date you need.
Select the columns on both tables that you want to view in your results.
1. Click the Display Fields > Column Select tab. Use this sheet to define what columns display on the query
results.
3. Expand the EmpBasic node and move Name into the Display Column(s) area.
4. Select the Group By check box to group BAQ results by each employee.
5. You next add two calculated fields to the query results. Click the Calculator button.
7. Click New.
9. From the Data Type drop-down list, select the Decimal option. This indicates the field accepts decimal
places within its values.
10. You are creating a calculated field that totals each employee’s labor hours. In the Functions area, expand
the Aggregate node.
11. Select the Sum(x) option. Notice the function syntax displays in the Editor field. This function adds together
all values the query finds in a specific column. For this query, it will total the labor hour values linked to each
shop employee record.
12. In the Fields area, expand the LaborDtls field and double-click LaborHrs.
14. Repeat these steps to create another calculated field that totals burden values for each shop employee. Use
the Sum(x) function and select the BurdenHrs field.
17. Notice your calculated fields are included within the Display Column(s) section. If you wish, click inside the
Label column to modify the text that displays for each column.
18. You are ready to test the query. Click the Analyze tab.
Because you created calculated fields, the total labor and burden hours for each employee displays in the Query
Results.
This BAQ displays all the employees who are currently clocked in, but not clocked out, on operations. During this
case study, you will join the Labor Head (LaborHed) table to the shop employee table (EmpBasic), and then filter
the results by the employees that still have an active labor transaction running within the database. You will also
sort the results by employee.
4. Select the Shared check box to indicate other users within the current company can use this query.
6. Search for and place the Erp.LaborHed and EmpBasic tables on the canvas.
7. These table have a relation defined in schema and they automatically link.
8. You want to filter the employee data based on the employees who are still clocked into the application.
Highlight the LaborHed table.
10. Click the New button. A row appears in the Criteria grid.
11. From the Field Name drop-down list, select the ActiveTrans option.
12. From the Compare Operator drop-down list, select the Equal To (=) option.
13. From the Filter Value drop-down list, select the specified constant option.
14. Click the specified link to launch the Specify a Value window.
15. The Specify a Value window displays. In the Value field, enter Yes. This indicates that only employees
who are currently clocked in display on this query.
Select the columns on both tables that you want to view in your results.
4. Move the following columns from the Available Columns area to the Display Column(s) area:
• EmpBasic_Name
• EmpBasic_EmpID
6. Move the following columns from the Available Columns area to the Display Column(s) area:
• LaborHed_ActualClockinDate
• LaborHed_ActualClockinTime
• LaborHed_ActLunchInTime
• LaborHed_ActLunchOutTime
• LaborHed_ActLunchInTime
• LaborHed_ActiveTrans
8. You want the results to sort by each employee’s name. Expand the EmpBasic node.
11. You are ready to test the query. Click the Analyze tab.
All the employees who are currently clocked into the database display in the Query Results.
This case study demonstrates how to create a simple updatable query. It shows how to create or update supplier
records.
10. Move the following fields into the Display Column(s) section and change the field labels as follows:
• Vendor_Company
• Vendor_VendorID
• Vendor_Name
• Vendor_VendorNum
• Vendor_Address1
• Vendor_City
• Vendor_State
• Vendor_ZIP
• Vendor_Country
4. Click the Check All Fields as Updatable icon (the white checked box icon).
8. In the Suggested business objects section, select the Erp.Vendor object and click OK.
9. In the Tables to update pane, ensure the Vendor table is becomes selected.
1. Click the Get List button to test whether the updatable BAQ can pull in data from the database.
2. You are warned this test may launch BPM directives that update the database. Click Yes.
3. The Query Results grid populates with data. You now can test the BAQ to find out if you can update
existing records.
5. The Fields window displays. This window contains all of the fields you indicated were updatable on the
Update > General Properties sheet. In the Fields window, enter a new value in one of the fields.
In this example, you modify the address of a supplier record.
7. The record you updated is now highlighted within the Query Results sheet.
8. If you want to save this change to the database, click the Update button.
9. The record is now updated. To verify the update to the database was successful, click the Get List button
again to retrieve the updated DB results. You can also open a specific program that should reflect your
changes, for example, Supplier Maintenance and verify your changes there.
10. If you want to add new records to the updatable BAQ, click the Get New button.
11. A blank row displays on the Query Results list. Double-click the empty row.
12. The Fields window displays. Initially, all the fields are blank Enter the values you need to create a new record.
In this example, you create a new supplier record.
14. On the last row of the Query Results grid, the new record displays.
15. If you want to save this change to the database, click the Update button.
16. The new supplier record is now created. To verify the update to the database was successful, click the Get
List button again to retrieve the updated DB results.
In this case study, create a BAQ that counts open, closed and total amount of orders per customer. Create two
SubQueries that will count open and closed orders and group them together by customer. The information
obtained by the Inner SubQueries will be presented by the TopLevel SubQuery.
7. From the list, select the Erp.OrderHed table and drag it on the canvas in the center pane.
9. From the toolbar, click the Add Row to add new line.
11. In the Operation column, verify the equal sign (=) defaults.
Select Columns
3. Double-click CustNum to add the OrderHed_CustNum field to the list of Display Column(s).
4. Select the Group By check box to indicate you want the group open orders by customer.
6. The Calculated Field Editor window displays. For the Field Name, enter CountOpen and press Tab.
10. To indicate you want to count all open order records, inside the brackets, enter * (asterisk).
14. For SubQuery 1 you just created, in the Type field, select InnerSubQuery.
This indicates this SubQuery will become a nested query inside the TopLevel BAQ you will create later.
2. On the Query Builder > SubQuery Options sheet, accept the following defaults:
Name Type
SubQuery2 InnerSubQuery
5. From the list, select the Erp.OrderHed table and drag it on the canvas in the center pane.
The BAQ Designer must create the table alias for the
OrderHed table since it is already used in the previous
SubQuery.
8. From the toolbar, click the Add Row to add new line.
10. In the Operation column, verify the equal sign (=) defaults.
Select Columns
4. Select the Group By check box to indicate you want the group closed orders by customer.
8. In the Editor pane, manually add the calculation that counts all closed orders.
count( * )
5. Search for and add the Erp.Customer table on the canvas in the center pane.
6. Above the table listing, click the SubQueries button to displays the list of available SubQueries.
8. From the toolbar above the canvas, select the Add Connection icon (chain links).
The cursor turns to a cross-hair.
9. Click on the Erp.Customer table and drag a line to the SubQuery1 table, then release.
12. From the Customer field or any expression field, select CustNum.
13. From the SubQuery1 field or any expression field, select OrderHed_CustNum.
14. Repeat steps 8 - 13 to create connection between Erp.Customer and SubQuery2 tables.
2. Expand the Customer table and move the Name field to the list of Display Column(s).
3. Expand the SubQuery1 and move the Calculated_CountOpen field to the list of Display Column(s).
4. Expand the SubQuery2 and move the Calculated_CountClosed field to the list of Display Column(s).
2. Click Test.
The BAQ displays open, closed and total amount of orders per customer.
This case study demonstrates how to build a BAQ that displays total value breakdown of sales for a given day.
This BAQ will provide information on total values of:
• Quotes entered in the sales pipeline.
• Orders booked in the system.
• Invoices sent to customers.
You accomplish this task by creating a BAQ comprised of three SubQueries and combine their results into one
dataset.
1. In the Business Activity Query Designer, click New to create a new query.
3. In the Description field, enter Total Value of Quotes, Orders, Invoices by Date.
Column Name
QuoteHed_Company
Customer_Name
QuoteHed_QuoteNum
QuoteHed_EntryDate
9. For each of the above columns, select the Group By check box.
11. The Calculated Field Editor window displays. Click New and enter these field values:
Field Value
FieldName QuoteSum
Data Type decimal
Field Value
Label Total Value
16. In the Fields section, expand the Available tables > QuoteHed node and double-click QuoteAmt.
Verify the Editor displays the following calculation:
sum( QuoteHed.QuoteAmt )
18. Move the Calculated_SubQueryName column up and make it the first column in the list.
You will first change the name of the TopLevel SubQuery in focus.
3. Click Save.
7. Navigate to the Query Builder > Phrase Build sheet. Place the following tables on the designer canvas:
• Erp.OrderHed
• Erp.Customer
Since the Customer table is already used in the BAQ definition, accept the proposed table alias.
Example
8. Navigate to the Display Fields > Column Select sheet. Move the following columns to the Display
Column(s) list.
Column Name
OrderHed_Company
Customer1_Name
OrderHed_OrderNum
OrderHed_OrderDate
9. For each of the above columns, select the Group By check box.
11. The Calculated Field Editor window displays. Click New and enter these field values:
Field Value
FieldName OrderSum
Data Type decimal
Label Total Value
16. In the Fields section, expand the Available tables > OrderHed node and double-click OrderAmt.
Verify the Editor displays the following calculation:
sum( OrderHed.OrderAmt )
18. Move the Calculated_SubQueryName1 column up and make it the first column in the list.
5. Navigate to the Query Builder > Phrase Build sheet. Place the following tables on the designer canvas:
• Erp.InvcHead
• Erp.Customer
Accept the proposed Customer table alias.
6. Navigate to the Display Fields > Column Select sheet. Move the following columns to the Display
Column(s) list.
Column Name
InvcHead_Company
Customer2_Name
InvcHead_InvoiceNum
InvcHead_InvoiceDate
7. For each of the above columns, select the Group By check box.
9. The Calculated Field Editor window displays. Click New and enter these field values:
Field Value
FieldName InvoiceSum
Data Type decimal
Label Total Value
14. In the Fields section, expand the Available tables > InvcHead node and double-click InvoiceAmt.
Verify the Editor displays the following calculation:
sum( InvcHead.InvoiceAmt )
16. Move the Calculated_SubQueryName2 column up and make it the first column in the list.
7. With InvcHead SubQuery in focus, in the design canvas click on the Erp.InvcHead table.
8. At the bottom of the screen, verify the Table Criteria sheet displays.
11. In the Operation column, verify the equal sign (=) defaults.
13. Click the word specified to launch the Select Parameter window.
14. Verify the Date parameter you created is highlighted and click Select.
15. Repeat steps 7 - 14 to apply the same filter on OrderHed and QuoteHed SubQueries. To switch between
SubQueries, use the Active SubQuery toolbar.
Use the below table for reference:
4. Click OK.
6. Right-click anywhere in the grid and select Show Group By and Show Summaries.
7. Drag the Document Type column to the pane above the grid.
11. You BAQ results are now broken down by Quotes, Orders and Invoices with their total values for a given
day.
You can use the UNION, EXCEPT and INTERSECT operators of SQL enable to combine more than one SELECT
statement to form a single result set. The UNION operator returns all rows. The INTERSECT operator returns all
rows that are in both result sets. The EXCEPT operator returns the rows that are only in the first result set but
not in the second.
In the previous case study - Combine Results Sets, you learned how to use UNION operator to combine results
of multiple SubQueries into a single result set. In this case study, learn how to intersect the results of two
SubQueries and use the except operator to retrieve the query result set where data exists in the first SubQuery
and not in the second one.
1. In the Business Activity Query Designer, click New to create a new query.
7. For the TopLevel SubQuery you want to filter see orders for customers coming from USA and Canada.
10. Click the New button. A row appears in the Criteria grid.
11. Create the following criteria. To set the Filter Value, use the specified constant option.
13. Move the following columns from the Available Columns area to the Display Column(s) area:
• Customer_CustID
• Customer_Country
• OrderHed_OrderNum
15. You are ready to test the query. Click the Analyze tab.
17. In this example, the BAQ returns 302 order records from customers based in USA or Canada.
6. Accept the new field Aliases of tables already used in the TopLevel SubQuery.
7. For the second SubQuery you want to filter orders for customers coming from Germany and Canada.
10. Click the New button. A row appears in the Criteria grid.
11. Create the following criteria. To set the Filter Value, use the specified constant option.
13. Move the following columns from the Available Columns area to the Display Column(s) area:
• Customer_CustID
• Customer_Country
• OrderHed_OrderNum
15. You are ready to test the query. Click the Analyze tab.
17. In this example, the BAQ returns 17 order records from customers based in Canada.
3. Click Save.
4. Now test how BAQ results change. Click the Analyze tab.
5. Click Test.
6. In this example, the BAQ returns 285 order records from customers based in USA.
A common can be thought of as a temporary result set that is defined within the execution scope of a single
SELECT (or may serve as a SubQuery, instead of SELECT). Returning hierarchical data is a common use of recursive
queries.
1. In the Business Activity Query Designer, click New to create a new query.
8. From the list, select the Erp.PartMtl table and drag it on the canvas in the center pane.
9. Click Save.
7. You now define which BAQ fields you want filter by the date parameter. Select the SubQuery Criteria
sheet.
10. In the Operation column, verify the equal sign (=) defaults.
12. Verify the PartNum parameter you created is highlighted and click Select.
Select Columns
2. Move the following columns from the Available Columns area to the Display Column(s) area:
• PartMtl_Company
• PartMtl_PartNum
• PartMtl_RevisionNum
• PartMtl_MtlSeq
• PartMtl_MtlPartNum
• PartMtl_QtyPer
• PartMtl_RelatedOperation
• PartMtl_PullAsAsm
• PartMtl_ViewAsAsm
• PartMtl_PlanAsAsm
Now you are ready to build the BOM Level hierarchy calculated field and Indentation calculated field.
4. Click New.
10. For the Field Name, enter Ind1 and press Tab.
12. In the Editor, enter the following code that calculates the indentation level of subassembly parts.
cast ( substring('........',1 ,(Hierarchy + 1) ) + PartMtl.MtlPartNum
as nvarchar(25))
ForSubQuery2, you will again use the Part Material table but this time, you join it with CTE SubQuery1.
7. To switch tables and subqueries, use the buttons above the list of tables.
8. Create a manual connection between the two tables using the Add Connection button.
9. Use the following fields to create the inner join between tables:
Select Columns
2. Move the following columns from the Available Columns area to the Display Column(s) area:
• PartMtl1_Company
• PartMtl1_PartNum
• PartMtl1_RevisionNum
• PartMtl1_MtlSeq
• PartMtl1_MtlPartNum
• PartMtl1_QtyPer
• PartMtl1_RelatedOperation
• PartMtl1_PullAsAsm
• PartMtl1_ViewAsAsm
• PartMtl1_PlanAsAsm
Now you are ready to build the calculated field to increment the BOM Level hierarchy.
4. Click New.
9. Click New to create another calculated field. The Indentation you create references the UnionAll SubQuery
Aliases, otherwise it is similar to the one created within the CTE SubQuery.
10. For the Field Name, enter Ind2 and press Tab.
12. In the Editor, enter the following code that calculates the indentation level of subassembly parts.
cast ( substring('........',1 ,(Hierarchy2 + 1) ) + PartMtl1.MtlPartNum
as nvarchar(25))
In the TopLevel SubQuery3, you display data from the CTE SubQuery1.
6. From the list of SubQueries, select SubQuery1 and place it on the canvas. Accept the new Alias the BAQ
creates.
8. Move all columns from the SubQuery11 to the Display Column(s) area
9. Click Save.
You are now ready to test the query.
4. Click OK.
6. To display the hierarchy, group the BAQ results by the BOM Level and Indentation (Ind1) columns.
Now the BAQ results are broken down by levels. The BOM Level 0 displays the parent part - in this case
DCD-200-ML with its subassemblies showing on their respective levels within the Bill of Material.
Use the External Query functionality to create a connection to external (non-Epicor) data sources. This feature is based
on accessing external data via ODBC connections. and provides the mechanism for retrieving, updating and displaying
information from an external database using the SQL language. Working with external data source looks similar to
ordinal query design and execution. The data you retrieve using the external query can be used in additional dashboard
renderings, like dashboard applications, mobile framework, Epicor Sharepoint Publisher and so on.
To use the functionality, you need an ODBC connection to an external server configured on the machine where the
application server is hosted. This connection must also be specified when you create the query. Through the External
BAQ Designer, you can browse and select tables from an external data source in the same way as when data is pulled
from the Epicor database.
The process of creating an external BAQ involves the following:
• Establish a connection to an external datasource using the ADO .NET DB provider available on the machine and
compose a connection string to access the external database management system.
• Set up security restrictions to schema and data coming from an external datasource.
• Modify external datasource metadata specified in the source database as required.
• Enable the external datasource you create in the company you work with.
• Build an external Business Activity Query and use it as a datasource for reports, dashboards, trackers and so on.
• Expose the data to users using the Epicor Everywhere™ Framework tools.
This chapter describes how to set up and configure connection to an external datasource. The process of building a
query is nearly identical to ordinal BAQ design. For more information on how to construct a query, see Chapter 01:
Business Activity Queries.
Use External Datasource Type Maintenance to set up security restrictions to schema and data from an external
datasource.
On the Data Filtering, you can set up restrictions to limit the data displayed by the query. You can create a
single criterion that pulls in the data you need. You can also create a combined criteria by linking your criterion
with And or Or statements.
On the Schema Filtering sheets, you can apply a filter on a schema level by selecting which tables and columns
you want to display in External Business Activity Query Designer.
1. Click New.
3. The Application Type field is used to control any specific logic or flow that is related to specific applications
associated with the datasources.
• Generic - Use this default option to create a datasource type for any type of target databases. Using
this type, the whole communication between the application and external data source is performed using
the .ADO.Net datasource.
• Prophet21 - Use this option when you integrate the Epicor ICE framework with Prophet 21(P21)
application.
• Eclipse - Use this option when you integrate the Epicor ICE framework with Epicor Eclipse application.
• iScala - Use this option when you integrate the Epicor ICE framework with Epicor iScala application.
4. In the Description field, enter a brief text to describe the purpose of the datasource type.
5. Click Save.
The first step to filter data coming from an external datasource is to create a new security group.
3. In the FilterGroupName field, enter a unique name for the security group.
Example Company_ID
The below steps discuss how to create a filter to limit the data the external datasource displays through BAQ.
To complete the data filtering:
1. On the Detail > Data Filtering sheet, in the lower pane, click the New Filter button.
2. In the FilterName field, enter a name for the definition or accept the default value.
Example Filter1.
3. In the TableName field, enter a name of the table used in the criterion.
You can accept the default value of --any table --, which means that any table within the datasource should
be checked for some field. It is also possible to use wildcard characters to limit the list of tables used to filter
the data.
4. In the FieldName field, enter a name of the field the rule will valuate.
Example Company_id
5. In the DefaultConstant field, select a BAQ constant from the drop down list or manually enter the constant
value.
Example
• BAQ constants - CurrentCompany, CurrentUserID
• Manually entered constants - "Company1", "True"
6. When you need to apply a filter based on the values of more than one criterion, use the And Or field to
define the criteria string clause.
7. If you want this criterion to evaluate a Not criterion value, select the Neg check box.
8. If needed, use the LeftP and RightP fields to insert parenthesis to the clause.
9. If you want to change the sequence through which filters run, highlight a filter on the grid and click either
the Move Up or Move Down buttons.
The below steps discuss how to limit which tables display for selection when you design a new query using BAQ
Designer.
To apply a filter on the table level:
3. In the SchemaName field, enter a name of the database schema used in the criterion.
You can accept the default value of --any schema -- to display or hide tables for any schema within the
selected datasource. It is also possible to use wildcard characters to limit the list of schemas used in the filter.
4. In the TableName field, enter a value to limit which tables become available for selection creating a BAQ
using the datasource.
You can accept the default value of --any table --, to apply a filter on all tables within the selected database
schema. It is also possible to use wildcard characters to limit the list of tables used to filter the data.
5. When you need to apply a filter based on the values of more than one criterion, use the And Or field to
define the criteria string clause.
6. If you want this criterion to evaluate a Not criterion value, select the Neg check box.
7. If needed, use the LeftP and RightP fields to insert parenthesis to the clause.
8. If you want to change the sequence through which filters run, highlight a filter on the grid and click either
the Move Up or Move Down buttons.
3. In the SchemaName field, enter a name of the database schema used in the criterion.
You can accept the default value of --any schema -- to display or hide selected tables and columns for any
schema within the selected datasource. It is also possible to use wildcard characters to limit the list of schemas
used in the filter.
4. In the TableName field, enter a value to limit which tables and respective fields become available for
selection.
You can accept the default value of --any table --, to apply a filter on schema or column level only. To limit
tables and respective fields from displaying in BAQ Designer, you can use SQL Server wildcard characters,
such as % or _ (underscore).
5. In the FieldName field, enter a value to limit which columns become available for selection in BAQ Designer.
To limit certain fields from displaying in BAQ Designer, you can use SQL Server wildcard characters, such as
% or _ (underscore).
6. When you need to apply a filter based on the values of more than one criterion, use the And Or field to
define the criteria string clause.
7. If you want this criterion to evaluate a Not criterion value, select the Neg check box.
8. If needed, use the LeftP and RightP fields to insert parenthesis to the clause.
9. If you want to change the sequence through which filters run, highlight a filter on the grid and click either
the Move Up or Move Down buttons.
Use External Datasource Maintenance to build a connection string used to access an external database.
When you create a new datasource, first specify a datasource name, concise description and select an available
DataSource Type for your external datasource. Datasource types are created in External DataSource Type
Maintenance. You can use datasource type to describe security restrictions that should be applied to schema
and data from some external source.
To connect to an external datasource, you must compose a connection string. First, select one of the ADO.Net
providers available on the server. ADO.NET is the .NET technology; an object-oriented set of libraries for interacting
with data sources. There are several data providers you can use to communicate with different data sources.
Description
.NET Framework data
provider
Once you select an available .NET provider, use the Configure button to set up Connection Parameters. These
parameters vary based on the selected provider.
When setting up connection parameters, on the Advanced Properties sheet you can specify detailed properties
for Windows supported .NET providers, such as ODBC, OLE DB and SQL client. The list of driver properties vary
based on selected ADP. NET provider. For more information on specific driver properties, refer to the Microsoft®
Developer Network at http://msdn.microsoft.com/en-US/.
Apart from the default connection parameters offered by the selected .NET provider, the following artificial BAQ
keys are available for use when building a connection string.
Key Description
SkipLoadErrors=true; Sets NULL for the value that cannot be loaded in the field (such as zero-date for
Oracle, as conversion of 0 to date is not supported by .Net)
AliasMaxLength=30; Sets the maximum possible length of field aliases.
UseFieldAlias=true; When used, field aliases will match field names. Standard way of building aliases
using tableid_fieldname format will be suppressed. If duplicate alias entries occur,
digits in ascending order will be placed at the end of aliases.
Key Description
SqlDialect=Oracle; When used, this parameter is primarily used by the ODBC provider to build SQL
query according to target relational database management system (RDBMS) syntax.
The available values include: Oracle, MySql and Mssql2000.
To verify the connection to your external datasource, use the Test Connection button. When you successfully
establish connection, you can use the datasource to build a Business Activity Query.
1. Click New.
2. In the Datasource field, enter a unique identifier that best describes the external datasource.
4. In the Datasource Type field, select a type you wish to use in your external datasource.
Datasource types are created in External DataSource Type Maintenance. You can use datasource type to
describe security restrictions that should be applied to schema and data from an external datasource.
5. In the ADO. Net provider field, select a provider available on the server.
A provider you select is used for connecting to a database, executing commands, and retrieving results.
7. The Connection Parameters window displays. The fields on this window vary based on the selected ADO.
Net provider.
8. For example, for SQLOLEDB Data Provider, first enter a Data Source; specify a server name and instance
name.
10. If you want to connect to an external datasource using the Windows security, select Use Trusted Connection
option. This means application server credentials are used for authentication. If your windows account does
not have required permission to access an SQL Server database, use the SQL Server credentials to log in.
11. When setting up connection parameters, on the Advanced Properties sheet you can specify detailed
properties for Windows supported .NET providers, such as ODBC, OLE DB and SQL client. The list of driver
properties vary based on selected ADP. NET provider. For more information on specific driver properties,
refer to the Microsoft® Developer Network at http://msdn.microsoft.com/en-US/.
12. To verify the connection to your external datasource, use the Test Connection button and verify the
connection to an external datasource is successful.
13. The Authentication parameters you entered now display on the Connection Parameters window. You can
change the parameters on this window, if necessary.
14. A Connection string contains initialization information that is passed as a parameter from a data provider
to a data source. The syntax depends on the data provider, and the connection string is parsed during the
attempt to open a connection.
15. You can use the Test Connection button to verify the connection to an external datasource is successful.
Apart from the default connection parameters offered by the selected .NET provider, the following artificial
BAQ keys are available for use when building a connection string.
These artificial keys were introduced to resolve problems with zero dates and alias lengths. When used, they
must be entered manually within the connection string.
Key Description
SkipLoadErrors=true; Sets NULL for the value that cannot be loaded in the field (such as zero-date,
as conversion of 0 to date is not supported by .Net)
AliasMaxLength=30; Sets the maximum possible length of field aliases.
UseFieldAlias=true; When used, field aliases will match field names. Standard way of building
aliases using tableid_fieldname format will be suppressed. If duplicate alias
entries occur, digits in ascending order will be placed at the end of aliases.
SqlDialect=Oracle; When used, this parameter is primarily used by the ODBC provider to build
SQL query according to target relational database management system (RDBMS)
syntax. The available values include: Oracle, MySql and Mssql2000.
2. The External System pane fields vary based on the selected Datasource Type.
3. In the iScala Server field, enter the full domain name of the iScala server (or the name for which https
binding of IIS hosting iScala WCF services is configured).
For Prophet 21 and Eclipse integration this field displays the Token server URL field. Enter the URL of the
server that validates calls from ICE framework against external application.
4. For Client ID, enter the user name to be used by BAQ engine to authenticate in external system.
5. In the Client secret field, enter the password configured in external system for the above user.
6. You can set the maximum number of rows the external query is allowed to return. To do so, enter a value
in the Query Maximum Row Count field.
7. The Query Execution TimeOut (Sec) value specifies the longest time (in seconds) in which a query can
run, when executed by the datasource in focus. Specifying 0 for this option indicates all queries are allowed
to run indefinitely.
Export Datasources
Use the Export Datasources functionality to make your external datasources available to users at another
location.
When you export a datasource as a .baqds file, users outside your network can then import this definition onto
their client machines and establish connection to an external datasource. You can also use this functionality to
archive your datasource definition.
To export datasources:
3. By default, all selected datasources, related datasource types and company settings are selected for export.
4. You can customize the exports list using the check boxes that display next each item.
6. Enter a File name and select a location of the exported *.baqds file.
7. Click Export.
8. View the Export process messages pane and verify the process is complete.
9. Click Close.
The exported datasource(s) definition is now available to other users.
Import Datasources
Use the Import Datasources functionality to import previously exported datasources and datasource types into
your environment.
To import external datasources:
4. You can customize the list of imported items by selecting a check box next to each datasource, datasource
type and company settings you want to import.
5. Click Import.
6. View the Import process messages pane and verify the process is complete.
7. Click Close.
Verify the connection to an external is successful. If necessary, click Configure button to modify Database
Connection Parameters.
When you create and ODBC connection, it is important to understand which kind of Data Source Name (DSN)
you should use on the system. On an x64 system, you can create an ODBC connection (DSN) on the 32-bit side
of the system or on the 64-bit side of the system.
The Epicor ICE3 framework used by Epicor ERP and ICE Extend products takes the bitness into account when
user works with BAQ External Data Sources and executes external queries. BAQ distinguishes 32bit and 64bit
ODBC datasources to provide compatibility between bitness of IIS process and of underlying ODBC driver dll file.
Hence, if the application utilizing the Epicor ICE 3 framework is running in a 64bit mode, it doesn't see 32bit
DSNs, and vise versa.
1. To configure 32bit ODBC datasources, you can call ODBC Data Source Administrator tool using this command
line:
%windir%\SysWOW64\odbcad32.exe
2. In order for BAQ to see and consume 32 bit ODBC datasources, in Internet Information Services (IIS) Manager,
select ERP10/ICE3 application pool.
5. To configure 64bit ODBC datasources, call ODBC Data Source Administrator tool using this command line:
%windir%\system32\odbcad32.exe
6. In ERP10/ICE3 application pool, for Enable 32-Bit Applications property, select False.
Use the External Datasource Metadata Maintenance to modify column properties of data coming from an
external datasource.
In External Business Activity Designer, column properties such as format, label or description display according
to the underlying metadata specified in the source database. When there is no metadata specified for a table,
External Business Activity Designer automatically determines all required column properties.
In External Datasource Metadata Maintenance, you can manually change properties of columns you want to
include in your Business Activity Query.
First, select a Datasource Type for which you want to modify metadata and select one of the datasources
attached to the Datasource Type. The datasource you select provides a list tables you can select to modify
metadata.
Example
You want to create an updatable Business Activity Query (BAQ)
that displays the list of customers. Because you typically contact
your customers via email, you want to make sure the email
address field for each customer is filled. In External Datasource
Metadata Maintenance, you select a Datasource Type and a
Sample Datasource that provides the data for the query. You
will then search for a customer table that holds the information
you need. On the Field Detail sheet, highlight the email address
field and select the Required check box. When you create an
updatable BAQ and use it on a dashboard, users will not be
able to change the existing customer information or create a
new customer record unless they enter a value in the email
address field.
2. In the Sample Datasource field, select an external datasource associated with the selected datasource type,
for which you want to create metadata.
4. Click Tables.
5. In the External Tables window, search for a table or multiple tables for which you want to modify column
properties.
You can narrow down the list of tables you want to retrieve by entering a value in the Table Name
Starts with field and selecting a database schema.
8. The table you select display as a node in the Tree View on the left side of the form.
2. The grid displays the Customer table you retrieved form an external datasource.
3. You can enter a value in the Description field to create custom table description.
In this example, enter List of Customers.
You cannot modify the rest of the fields; they display for your information only.
1. In the Tree View, expand the table and select a field you want to modify.
3. The Fields > Field Detail sheet is automatically selected, presenting the existing properties of the selected
field.
4. In the Description field, you can explain the field's purpose and provide other helpful information.
In this example, enter Customer Email Address.
5. The Field Table defines the column's title when used on a query or a dashboard.
In this example, enter Email.
6. The Format displays the layout for the characters within the field. This value can be displayed in either
schema or alphanumeric format. You can change this value if necessary.
7. By selecting the Required check box you indicate the field cannot be empty. When users attempt to save
a new or existing record within the query and this field is blank, they will not able to save the record until
they enter a value in this field.
8. If you want to prevent users from changing the data in this field, select the Read Only check box.
9. To view the list of all fields of the selected external table, navigate to the Fields > Field List sheet.
10. View the metadata information you entered for the EmailAddress field.
You can use this sheet to modify properties of multiple fields at once, for example, to make certain fields
mandatory, change their label and so on.
Before you can use the created datasource to build a Business Activity Query, you must make it available to users.
Use the BAQ External Datasources sheet within Company Maintenance to enable external datasources for the
selected company. On this sheet, you can also modify security settings applied to external datasources.
Navigate to Company Maintenance.
Menu Path: System Setup > Company/Site Maintenance > Company Maintenance
2. In the Datasources grid, all external datasources created in the External Datasource Maintenance
program display.
3. Select the Enabled check box for each datasource you want to make available within the current company.
4. If you want to skip security checking for the selected datasource, in the Datasources grid, select the Skip
Filter check box. Once selected, any Filter Groups and Filter Definition for the selected datasource become
ignored.
5. If you wish to skip security checking for a specific group defined for the selected datasource, in the Filter
Groups grid, select the Skip Filter check box.
Example
In the External Datasource Type Maintenance, you
can create multiple filter groups. The selected external
datasource retrieves the required data based on
datasource type settings. For example, you can filter the
external data by a specific company and parts you want
to display in a dashboard. In the future, a request may
occur to display the information in the dashboard for all
companies. In such case, you can use the Skip Filter check
box to ignore the filtering for the selected group.
6. If the selected filter group uses a BAQ constant to filter the data, you can use the Filter Definitions grid
to override this constant.
7. The current value of the selected constant displays in the ConstantValue field.
In this example, the current company value is EPIC06.
8. If you want to override the default BAQ constant by applying a custom value, clear the Use Default check
box and enter a custom constant in the FilterValue field, for example, EPIC03.
External Business Activity Query provides the mechanism for retrieving, updating and displaying information from
an external database using the SQL language. It serves as an interface you use to create custom SQL text. The
query text is then sent to the database server using the selected .NET provider, where it is executed. The information
you retrieve serves as a data source for reports, dashboards or searches.
Navigate to External Business Activity Query.
Menu Path: System Management > External Business Activity Query > External Business Activity Query
1. Click New.
4. If you want to make this query is available to all users, select the Shared check box.
5. If you want to update the external database using this query, select the Updatable check box.
6. In the External Datasource name field, select an external datasource available for the current company.
8. You continue design the query in the same way as in Business Activity Query Designer.
The External BAQ Designer UI is almost identical as Business Activity Query Designer that is designed to work
with MS SQL Server 2008 and higher. All criteria filters, function lists in calculated fields, expressions,
supported SubQueries and SubQuery types are not modified in External BAQ UI.
A user designing an external query should only use those External BAQ Designer features which are supported
by the foreign Database Management System it uses.
Example
For more information on how to construct a business activity query, see Chapter 01: Business Activity
Queries.
Use the BAQ Report Designer to turn a Business Activity Query (BAQ) into a SQL Server Reporting Services (SSRS) report.
You create a personalized BAQ through the Business Activity Query Designer. You then use the BAQ Report Designer
to select the BAQ as the base for a report, and to define the option fields, filters, and sort by options that appear on
the report interface. To design and format the report, you use Microsoft SQL Server Report Builder. Once you have the
report layout complete, you can add it to the menu for users to access.
To effectively use the BAQ Report Designer, you should have a solid knowledge of both business activity queries (BAQs)
and SSRS reports. This chapter focuses on designing the report interface in the application and provides an example
of working with the Microsoft SQL Server Report Builder.
The reports you create through this tool are flat reports, which means they only pull data from the table(s) defined on
the selected BAQ. If you need to pull data from multiple queries (and so multiple tables), use a Dashboard report to
expand the amount of data to include. Dashboard reports are discussed in the Dashboards chapter.
A BAQ report is based on a selected existing BAQ and will include four standard datasets.
Before you create a report, you must first define the BAQ you are going to use. You can use an available BAQ
or create a new BAQ in the Business Activity Query Designer. The BAQ you use must contain the Company
column. The Company field is necessary to join the standard tables in the datasets (using the Company ID), and,
most importantly, the BAQReportParameters table. Once you have identified the BAQ for your report, you then
use the BAQ Report Designer to create a new BAQ report.
Each BAQ report contains four tables that are displayed as the report's datasets in Report Builder:
• Company – This table defines your Company ID and Company Name values, ensuring the BAQ is synchronized
with your company's data.
• RptLabels – This table is used by the Epicor application for the standard text labels which display on the
reports. This table contains all the language versions of the current report. These report labels generate the
field labels, so each field on the report can be displayed in a different language by matching the Label Name
for each item.
• BAQReportParameter – The information written to this table originates from the parameter information
entered on the report user interface (UI). This information is used for two purposes: to display the parameters
on the report, and, when designing the report, to control sorting, summary, grouping, and so on.
• BAQReportResult table – This table contains the specific data pulled from the database that matches the
query parameters.
There are several standard BAQ reports, delivered with the application, that were created using the BAQ Report
Designer program.
Use the following steps to review the form (application interface) of the standard BAQ report Rebate Contract
Transactions. Being familiar with the BAQ report interface will help you when creating a new BAQ report later
in this chapter.
2. On the Selection sheet, the Report Options section displays fields for entering report parameters. In this
example, options include Start Invoice Date, End Invoice Date, Start Transaction Date, and End
Transaction Date. These options were defined when the BAQ report was created.
3. The Filter Summary section displays four filters - Part, Product Group, Customer, and Rebate. The
available filters also were defined when the BAQ reports was created.
5. On the Filter sheet, click the Part button to search for and select a part or group of parts.
8. The Filter Summary section displays Some Selected in the text box next to the filtered field.
9. Use the Sort By field to choose how you want the information in the report sorted when it prints. In this
example, the report is sorted by Customer and then by Invoice Date. The available sorting criteria also were
defined when the BAQ reports was created.
10. By default, all reports contain the remaining fields for Report Style, Schedule, Archive Period, and User
Description.
11. Click the Print Preview button on the standard toolbar to display the report on your screen. PDF is the
default display for the Standard - SSRS report style.
Before creating reports, review the BAQ Report Designer's BAQ Report Options for SSRS Reports.
3. In the BAQ Report Options dialog box, you are concerned only with the settings in the SSRS Report
Options group. The Crystal Report Options group is retained for compatibility with previous application
releases.
4. SSRS Web Service URL defines an alternate directory path to the SSRS Report Builder application. By
default, the URL that launches the Report Builder is automatically pulled from the Epicor server configuration,
so typically you can leave this field blank.
However, if the path defined for the server is a "localhost" URL and you are on a different computer, you
will need to enter the complete URL path in this field (for example: http://<MachineName>/Reports). You
can get the web service URL from the SSRS Configuration Manager located on the server. After you enter
this path, selecting Actions > Design SSRS Report will open your BAQ report in Report Builder.
5. BAQ Report Template indicates the default template used to generate new base BAQ report (.rdl) files.
This file name displays for your information; you cannot edit this field .
6. Click Apply if any changes were made and then close the dialog box.
This example demonstrates how to create a BAQ report based on an existing BAQ, design the report layout in
SSRS Report Builder, save the report (.rdl) on the SSRS Report Server, and add the report to the application menu.
Advanced users will be able to design both BAQs and SSRS reports that address complex data reporting
requirements.
2. Click the Down Arrow next to the New button on the Standard toolbar; select New Report Definition.
3. Working on the Detail sheet, in the Report ID field, enter an ID for the new report. In this example, enter
CustOV.
The Report ID cannot contain any spaces. Once you enter and save a Report ID, you cannot change this
identifier. You can, however, make a copy of the report to create a new identifier.
4. Enter a Description for the report. In this example, enter BAQ Report - Customer List.
5. Click the BAQ ID button to search for and select the BAQ to use in this report. In this example, choose
zES_Customers.
If you know the name of the BAQ, you can enter it directly in the BAQ ID field.
6. The text entered in the Form Title field displays as the title of the report. In this example, enter Customers
Overview.
7. For SSRS Report, note that CustOV.rdl has been added automatically based on the value in Report ID.
8. Click Save.
9. A new combination of report data definition and report style has been created automatically for your new
BAQ Report. To review, navigate to Report Maintenance. You can leave the BAQ Report Designer open.
Menu Path: System Management > Reporting > Report Style
Use the BAQ Report Designer's Option Fields sheet to set up record selection criteria that users can enter as
parameters when running the report. In this example, you add fields for the state where customer is located and
for customer name.
1. In BAQ Report Designer, click the Down Arrow next to the New button; select New Option Field.
2. The Option Fields sheet displays with a line for the new option.
3. In the fields for the new option, Option Field indicates the BAQ Report column on which the option will
be based. All the columns contained within the selected BAQ appear on this list. Select Customer_State.
6. For Data Type, leave the default nvarchar. This value is based on the data definition of the field selected
in the option field.
8. In the line for the new option, select Customer_Name for Option Field.
12. In the Order column, enter 1 for the Customer.Name option and enter 2 for the Customer.State option.
This sets the order in which the options fields are displayed on the report form.
In BAQ Report Designer, use the Test Report Form action to perform an initial test of the new report.
This verifies the report form and print preview functionality for the new report and enables you to obtain, from
the System Monitor, the report's TableGuid identifier that will be needed for testing the report while you are
working on the report design in Report Builder.
1. With the new report CustOV displayed on the BAQ Report Designer Details sheet, choose Actions > Test
Report Form to display the report's form.
2. On the report form, verify that the option fields that have been added to the form are present.
4. The report displays with a header layout based on the template for new SSRS reports. Note that the BAQ
that is the basis for the report is shown as is the report title that was entered when creating the report.
In the application, PDF is the default print preview format for SSRS reports, Later in the chapter, SSRS Report
Builder will be used to add data fields to this starting point.
5. Close the report and report form, launch the application's System Monitor. Navigate to the Reports sheet
and locate the line for your report.
6. The TableGuid identifier is in the FileName column. You may need to scroll to the far right end of the grid
to locate the column.
The value will be similar to this example. Record , for later use, the actual value you are seeing. You will not
need the REPORT DATABASE: portion.
7. Close or minimize the System Monitor and remain in the BAQ Report Designer.
Use SSRS Report Builder to design the new report's data layout.
1. With the new report CustOV displayed on the BAQ Report Designer Details sheet, choose Actions > Design
SSRS Report.
2. Report Builder opens and displays the report layout for editing and design. For a new report, the report
header layout stored in the template file BAQReport.rdl is applied automatically.
3. In Report Builder, select the Insert tab and then select Table > Table Wizard to run the New Table or
Matrix wizard.
4. On the wizard's Choose a dataset screen, choose the dataset that will be the source of the fields that you
add to the report design. For this example, choose BAQReportResult, which is a one of the standard
datasets associated with a BAQ and BAQ report. Click Next.
5. Starting in the Available Fields list on the Arrange Fields screen, move fields into the report layout. For
this example, move the following fields and then click Next.
• Move Customer_Name, SalesRep_Name, Customer_City, Customer_State, and Customer_Country
to Row Groups.
6. On the Choose the Layout screen, enable or disable options for showing totals and grouped data. For this
example, clear all options and click Next.
7. On the Choose a Style screen, choose a style that controls fonts and color. For this example, accept the
default and click Finish to close the wizard.
8. The report layout now includes the selected data fields and choices for layout and style.
Optionally, you can click the Report Builder button again and choose Open to review the report's folder
location on the SSRS report server.
10. To test your design in Report Builder, verify that you are on the Home tab and click Run.
11. At the top of the report page, enter the TableGuid identifier obtained from the application System Monitor
earlier in the chapter and click View Report.
The report runs in HTML format, as it would if it was run from SQL Server Report Manager.
13. In Report Builder, you can continue to make adjustments to the report design. As you work, be sure to save
and retest the report as described in steps 9-12. When you are satisfied with the report, click the Report
Builder button and choose Exit Report Builder.
14. Back in BAQ Report Designer, test the report to verify it in the application. Click Actions > Test Report
Form to open the report's form.
15. Click Print Preview to display the report with your design work. Leave the Report Options fields blank
for this test.
17. Close the report and test the report options added to the form earlier in the chapter. In the State/Prov
field, enter MN and click Print Preview.
18. The report displays with the list limited to customers located in Minnesota. Close the report and report form
when done, but remain in the application.
Add the BAQ report to the menu system in the Epicor ERP application.
For this example, the BAQ report is added to the application menu structure under Sales Management. You can
use locations and values that match the report you are working with.
Menu Path: System Setup > Security Maintenance > Menu Maintenance
2. On the Menu Maintenance tree, navigate to: Main Menu > Sales Management > Order Management
> Reports. Verify Reports is highlighted.
3. click the Down Arrow next to the New button; select New Menu.
4. On the Detail sheet for the new menu item, enter a value in the Menu ID field. UDXXX01 is entered for
this example.
5. In the Name field, enter Customers Overview to match the report title.
6. Enter a value in the Order Sequence field. For this example, 997 is entered which will place the new menu
item at or near the end of the current list of menu items.
7. Click the Program Type drop-down menu and select BAQ Report.
8. Click Report and then search for and choose the BAQ report. In this example, choose CustOV.
10. After giving the application about 10 minutes for a scheduled update (or after logging out and back in to
force the update), open the Customers Overview report form.
Menu Path: Sales Management > Order Management > Reports > Customers Overview
12. The report displays in PDF format, as it has earlier in the chapter during report development and testing.
The Epicor ERP application customization functionality enables you to add fields to form, including user-defined
fields. Within the customization itself, you can create form and row rules which run whenever users enter data
or perform other actions which activate these rules. These rules in turn launch custom events which you define
on the customization.
If you have customization rights, you have full access to all the customization tools available in the Epicor
application. Leverage this functionality to make the BAQ report an efficient and valuable reporting tool for any
business flow within your organization.
The following procedure provides an overview of the workflow for enabling and working with customization
tools.
1. Turn on Developer Mode. From the application Home Page, go to the Settings Page, select General
Options and then select Developer Mode.
2. Navigate to and open the BAQ report. In this example, navigate to Sales Management > Order
Management > Reports > Customers Overview to open the BAQ report created earlier in the chapter.
With Developer Mode enabled, the Select Customization window displays. All existing customizations for
the BAQ report display. For this example, there are no existing customizations.
3. To create a customization from the original report form, select the Base Only check box and click OK.
4. The BAQ report form displays. To customize this form, click the Tools menu and select Customization.
5. The Customization Tools Dialog displays on top of the report form window. Notice also that a grid now
overlays on top of the report form.
6. You can now add fields, create rules, and modify the code for the report program. You access all of this
functionality within the various tabs and the Tools menu on the Customization Tools Dialog.
To learn about the customization tools, review the Epicor ICE User Experience and Customization Guide.
Multiple chapters within this book describe all of the customization tools in detail.
7. After you finish customizing the form, click Save on the Customization Tools Dialog.
8. In the Customization Save Dialog enter a unique Name for the customization. For this example, enter
Customers List Custom01.
9. Enter a Description that helps identify the purpose for the customized BAQ report. For this example, enter
Customization Demo.
10. Click Save. Optionally enter comments when prompted and click OK. Exit Customization Tools Dialog.
11. Turn off Developer Mode. From the application Home Page, go to the Settings Page, select General
Options and then clear Developer Mode.
12. You now can add the customization to the application menu. Open Menu Maintenance
Menu Path: System Setup > System Maintenance > Menu Maintenance
In the Menu Maintenance tree, select the BAQ report for which you have created a customization. In this
example, navigate to and select Customers Overview.
13. On the Detail sheet, select the customization from the Customization drop-down list.
Your customized form now is applied when the report is selected from the application menu. Users within the
current company will now use this custom version of the BAQ report.
Chapter 4: Searches
Search programs are available throughout the application. The standard searching tools enable you to easily locate
and organize records using filters and specific criteria. In addition to the standard searches, you can also create your
own specific searches to quickly and precisely locate the information you need, where and when you need it.
Tools are available to modify search programs. Quick Searches are customized search programs you can create from
Business Activity Queries (BAQs) that pull in unique search results. BAQ Searches leverage BAQs to locate search results.
Advanced Searches are set up within a smart client dashboard; they contain specific fields that you can use for defining
the search results. Use Data Tag Searches to find records grouped together through a specific data tag definition
assigned to each record. Create Named Searches that use the default options you want when the search program is
launched. The Enterprise Search is a separate search application you can use to retrieve structured content - like sales
orders, jobs, AR invoices - from your Epicor database.
This chapter explores how you can create and use these search programs, so your users can more efficiently locate the
information they need throughout the application.
You launch search programs by clicking the search buttons found on the sheets within the application. Typically,
these buttons are labeled with the primary record queried through the search program. You can also launch
some search programs by clicking a button on the Standard toolbar.
1. In this example, the Sales Order button for the Sales Order Entry > Summary sheet displays.
2. You can also search for sales orders by clicking the Binoculars button on the Standard toolbar.
When you click the search button, the record’s search program appears. In this example, clicking the Sales Order
button displays the Sales Order Search program.
Default Features
1. The Basic tab displays all the default options within the search program. These items are the primary fields
you can use to limit the search results.
2. Use the Quick Search tab to find and select a quick search program.
3. The BAQ tab contains a list of available Business Activity Queries you can use to generate the search results.
4. The Advanced tab contains a list of available Advanced Search options created through the Dashboard
program.
5. The Data Tags tab contains a free-form field where you can enter one or more data tags applied to the
records for which you are searching.
6. Use the Named Search drop-down list to select a named search option. When you select a named search,
either the Basic tab’s search options populate with pre-defined values, or a BAQ Search or Quick Search
program displays. Click the Named Search button to create Named Searches.
9. To pull in multiple records within the current program, highlight two or more records on the grid and then
click OK.
10. To pull in the first 100 records, click the Select 1 - 100 button.
11. To display the next set of records in the grid, click the Next 100 button.
12. Click the New Search button to clear the results and start a new search.
13. To save the current search settings but remove the current search results, click the Clear Results button.
14. You can also limit how many rows are returned within the search results. To do this, click the Options
button.
16. If you want all the available rows to display within the Search Results, select the Return All Rows check
box.
17. To limit how many rows display within the Search Results, enter a value within the Maximum Rows
Returned field. In this example, this search program only displays the first 100 records in the Search Results
grid.
18. When you finish defining the search options, click OK.
To open the search program on any field where a search is available, press <Ctrl> + S on your keyboard. If data
is available in the field, the search program displays with this specific data in the Starting At field and then returns
search results based on that value. If the field is blank, the search form will display, but the search results do not
return automatically.
To perform a hot key search:
1. Place your cursor in a field that has a search program and enter the data you want to use to retrieve search
results; press <Ctrl> + S on your keyboard.
3. The data entered into the field appears in the Starting At field.
4. The search is run and the results display in the Search Results grid.
These features are available within each search program. The rest of this chapter explains how you can modify
and personalize these search programs.
Quick Searches
The Quick Search functionality is a dynamic tool you use to create configurable searches you can then use within
your own user account or share publicly for other user accounts - improving the productivity of searches.
A quick search can be the default search program that displays when a search is launched either from the Standard
toolbar’s Search button or from a specific field’s search button. It can also be the primary search that displays
with other key programs near the top of a context menu. All quick searches appear on the Quick Searches tab
within basic search programs that query similar data. Quick searches can also be used with the Named Search
feature, so you can launch a quick search immediately.
The Quick Search functionality is a dynamic tool you use to create configurable searches you can then use within
your own user account or share publicly for other user accounts - improving the productivity of searches.
You indicate which users can create quick searches through User Account Maintenance.
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
3. Within the Tools Options group box, select the Can Maintain Quick Search check box.
4. Select the Can Maintain Enterprise Quick Search check box to indicate this user can create quick searches
using the Enterprise Search feature. This functionality is explored later in this chapter.
This user can now create and update quick searches throughout the application.
You create quick searches through Quick Search Maintenance. To launch this program, right-click any field used
for searches and select Quick Search Entry from the context menu. In this example, you create a quick search for
Serial Tracked Parts.
4. To create a new search, click the New button on the Standard toolbar.
5. Enter a Quick Search ID for the quick search. This identifier displays on the Quick Search tab found within
search programs that query similar data. In this example, you enter SerialTracked.
6. Enter a Description for the quick search. This defines the concise explanation for the quick search; it also
displays on Quick Search tabs.
7. Now click the BAQ button to find and select the Business Activity Query used as the base query for the
quick search. You can use the system BAQs for the search. You can also use any custom BAQs you create.
8. If you want to create a new BAQ or edit an existing BAQ, select Business Activity Query from the Actions
menu.
9. Select the BAQ column used to return the search results from the Return Column list. All the columns from
the selected BAQ display on the list. In this example, you select the Part.PartNum option.
10. The Context Key (Like) field indicates whether this quick search is linked to any other search input fields
that share the same LIKE property. If you are creating a quick search against an input field that does not
share a LIKE property with another field, the Context Key (Like) field is blank.
11. The Called From field defines the program from which this quick search pulls its data. In this example, the
quick search pulls its data from the Erp.UI.PartEntry program (form).
12. The Created by field displays the name of the user that created the quick search.
13. If you want this quick search available for all users within the company, select the Shared check box.
14. The All Occurrences check box defines where this quick search is used. When selected, the check box
indicates this quick search is available for all searches that share its Context Key (Like) property. When clear
however, the check box indicates this quick search is only available from the primary program that launches,
or calls, this quick search.
For example, you create a quick search that has Part.PartNum as its Context Key (Like) value. If you do
not select the All Occurrences check box, this quick search is only available from within Part Maintenance.
If you select this check box, however, this quick search is available when users search for parts within Sales
Order Entry, Opportunity/Quote Entry, Job Entry, and anywhere else users search for a part number value.
15. Select the Base Default check box to indicate this quick search is the primary search program for the current
search input field. When users click the Search button on the Standard toolbar or a search button next to
a field, this quick search program displays instead of the original search program.
16. Select the Context Default check box to indicate this quick search appears with the main options at the
top of the search input field’s context menu.
17. You can also use the Suppress Base check box to indicate whether the base search form is available to users.
When selected, the Base Search button does not appear on the quick search window. Users are then
prevented from displaying the original search form. To override this setting, users can press the <Shift> key
while clicking the search button; the base search form will launch instead. Suppress Base checkbox is
enabled when the Base Default is checked.
18. Select the Validation Only check box to utilize the quick search as a data entry validation tool. The
Validation Only Quick Search is used to verify, while you enter data, the new value entered into the
Context Key (Like) Data Column. When this change is sent to the database, the new value is compared
against the results of the Validation Only Quick Search. If the new value is found within the quick search
results, the data is entered into the database. If the new value is not found in the quick search results,
however, then a Quick Search Validation Exception message displays and you are not able to enter this value
into the data. For more information about creating quick search criteria, read the next Create a Quick Search
– Criteria section.
For example, you want to create a customization that only displays Cash Sales for customers from a specific
American state – Minnesota. A system Business Activity Query (BAQ) is available called zCustomer01 that
searches for these records. You decide to use a Validation Only quick search against this BAQ to validate
the customer data can only be pulled from Minnesota records. You create a quick search that has one
criterion: Customer. State Equals Constant “MN”. The Validation Only Quick Search then makes sure that
all the entered Cash Sales customer records have Minnesota addresses.
19. When you finish defining the main attributes of the quick search, click Save.
When you finish defining the main details of your quick search, you next need to indicate what search input
fields display on the quick search form. To do this, you set up criteria for each field.
2. For this example, the first criterion you create is a check box; use this check box to find serial tracked parts.
To do this, click the Down Arrow next to the New button.
4. Select the Criteria Column you need. This column from the Business Activity Query is used for the search
input field. All the columns from the BAQ selected on the Detail sheet display on this list. In this example,
you select the Part.TrackSerialNum column.
5. Enter a Caption for the search field. The text you enter here displays on the quick search form. In this
example, you enter Serial Tracked.
6. The Condition value defines how the search input field evaluates the value the user enters. The search
results that display resolve against the condition you select from this list. For this example, you select the =
(Equal To) value. Available options:
• = (Equal To) – This condition returns a search result if it is the same as the search value. This condition
also ignores trailing blanks, so “abc” is equal to “abc “. Typically you use this condition instead of the
MATCHES condition, as this condition has better performance.
• < > (Not Equal To) – This condition returns a search result if the first expression is not equal to the second
expression.
• > (Greater Than) – This condition returns a search result if the first expression is greater than the second
expression.
• < (Less Than) – This condition returns a search result if the first expression is less than the second expression
• >= (Greater Than or Equal To) – This condition returns a search result if the first expression is greater
than or equal to the second expression. This condition has better performance than the BEGINS condition.
• <= (Less Than or Equal To) – This condition returns a search result if the first expression is less than or
equal to the second expression.
• BEGINS (Starts with the entered value) – This condition is useful in a WHERE phrase that specifies which
records should be retrieved from within a block of records. This condition is different from the MATCHES
condition, which requires all records be reviewed by the search query.
• MATCHES (Is the same as the entered value) – A character expression you use to search on character
strings. This can include a constant, field name, variable name, or expression whose value is a character.
Note that the character expression cannot have any trailing blanks on the end of it; for example, “abc”
does not match “abc ”.
When the Condition Value is active, users can enter asterisks (*) as wild card search values; this indicates
that any group of characters works for the search results – including a null group of characters. A period (
. ) can also be used to indicate that any single character can be used in that position. If you want these
characters to be literal values instead of wildcard values, enter a tilde ( ~ ) value. For example, “~*a~.b” is
a match for “*a.b”. Enter a double tilde ( ~ ~ ) to make the match pattern a literal quoted string in a
procedure file.
7. Use the Criteria Type drop-down list to define the input field type that displays on the quick search.
Depending on the criteria type, a different field displays on the quick search form. For this example, you
select the Prompt type. Available options:
• Prompt - Users directly enter search input values through this field. These values are then calculated
against the Condition value to generate the search results. If you use a Prompt Type on a quick search,
it cannot be used as a data entry validation tool. The Validation Only check box is not available on the
Detail sheet.
• Constant - Users define a fixed value for the current criterion through this field. The quick search then
uses this fixed value to gather the search results. For example, you create a criterion that uses a constant
value of Customer.State = “MN”. This criterion causes the quick search to only find and select customer
records that have Minnesota addresses.
• Value List - This type is a field that displays a drop-down list. When you select this type, you must then
create the values that display on this list using Quick Search Value Items; these items are explored later
in this section.
• Radio Set – Use this type to create a set of radio buttons for the quick search. When you select this
type, you define the radio buttons using Quick Search Value Items; these items are explored later in this
section.
8. The Criteria Value list defines the return value used to filter the search results. An optional value, this list
is active when you select the Constant option from the Criteria Type list. All the columns found on the BAQ
that were selected on the Detail sheet display; select the value you need.
9. If you want this search input field to ignore null records, select the Filter On Null check box. If you want
null records to display, however, clear this check box; only records that have a blank field value display within
the quick search results. For example, if the criterion searches by Customer.State and you clear this check
box, only customer records that have blank State fields appear in the search results.
10. When you finish creating a search input field, click Save on the Standard toolbar.
11. The next search input field you create is a series of radio buttons that you use to filter the quick search
results on Manufactured, Purchased, and Sales Kit part types. To create these radio buttons, once again,
click the Down Arrow next to the New button and select New Quick Search Criteria.
12. For this Criteria Column, you select the Part.TypeCode value.
13. Enter the Caption you want to display. In this example, you enter Part Type.
14. You want the search results to display the part records that match each radio button’s values. From the
Condition drop-down list, you select the = (Equal To) value.
15. For the Criteria Type, you select the Radio Set option.
16. You next must define the radio buttons that display on the search form. To do this, click the Down Arrow
next to the New button and select New Quick Search Value Item.
17. The Value Items grid displays. Enter the Display Member you want to appear next to the radio button. In
this example, you enter manufactured.
18. Now enter the Value Member used against the records to filter the search results. In this example,
manufactured parts use a value member of M, so you enter this value in this field.
19. To create a new row, press the <Tab> button on your keyboard; add all the radio buttons you need. In this
example, two other part types are available, Purchased (P is their value member) and Sales Kit (K is their
value member).
21. You have one more search input field to create; a field that limits the results directly by part number. Once
again, click the Down Arrow next to the New button and select New Quick Search Criteria.
22. Because this search input field filters the results based on part number, you select Part.PartNum for the
field’s Criteria Column.
23. Enter a Caption for this field. For this search input field, you enter Part Begins With for the caption.
24. Select a Condition for this search field. In this example, you select BEGINS.
25. Now select a Criteria Type. Because users directly enter values in this field, you select the Prompt type.
You have now finished creating the search input fields that display on this quick search form.
Always test your quick search to make sure it is working properly. To do this, use a command from the Actions
menu.
3. Your quick search program displays. Use the search input fields to verify the quick search works correctly.
Users have a number of ways to launch your quick search. You can launch quick searches from within a related
search program, from a context menu, or directly through a search button. This section explores these various
launch methods.
All quick searches that query data related to a standard search program appear on a search’s Quick Search tab.
If multiple quick search options are available, users can then select the quick search they want to display.
1. Launch the search program by clicking its specific search button. In this example, you click the Part
Maintenance button.
2. The search program displays. In this example, it is the Part Search program.
4. All the quick searches associated with the current search program display within the Quick Search grid.
5. Highlight the quick search you want to use. In this example, you select the SerialTracked quick search.
Quick searches can also display in two locations on a field’s context menu. They can launch from the default list
that displays at the top of a context menu; they can also display on a Quick Searches sub-menu.
To place a quick search on the default list:
2. Click the Quick Search ID button to find and select the quick search you wish to modify.
5. Now return to the main program. In this example, you return to Part Maintenance.
6. Right-click within the field linked to the quick search program. In this example, you right-click within the
Part field.
8. The quick search appears within the list of the default Open With programs. Select this command and the
quick search displays. All the default Open With programs appear in alphabetical order.
You can also set up the quick search to become the default search program. This causes your quick search to
display instead of the original search program.
2. Click the Quick Search ID button. Find and select the quick search you wish to modify.
5. Return to the main program. In this example, you return to Part Maintenance.
7. The quick search displays. In this example, the Serial Tracked Parts search program displays.
Business Activity Queries (BAQ) are used throughout the application to search for related data. You create BAQ
Searches in the Business Activity Query program by selecting “Like” columns. When fields in your query are
selected as “Like” Columns and this same field is used for searching in various programs, the BAQ becomes an
option within the search program.
You can indicate that data from your query is available to all users searching for related data on the BAQ Search
sheet. You select fields from the Available “Like” Columns list and move them into the BAQ “Like” Columns list.
Available features:
• The Available “Like” Columns list contains all the fields selected for your query on the Display sheet.
• The BAQ “Like” Columns lists the items you move over from the Available “Like” Columns area. Users
searching for information similar to the data contained in the BAQ “Like” items can access your BAQ Search.
Many standard search programs throughout the application contain a BAQ sheet; this sheet makes your query
available when users search for related data.
You cannot use system queries (those that begin with the letter
z) for BAQ Searches because you cannot modify them.
However, you can copy a system query and then select “Like”
columns to be used on the BAQ Search sheet. Refer to the
Modify an Existing Query section in the Business Activity Queries
chapter, to learn how to copy and modify an existing BAQ.
In the previous chapter, you created a new query called EPIC03-SalesInfo that displays sales order information.
You decide you want users to access this query from the Customer Maintenance and Sales Order Entry programs
so they can look up data related to customer and sales order numbers.
Menu Path: System Management > Business Activity Queries > Business Activity Query
1. In the Query ID field, enter the query. In this example, you enter EPIC03-SalesInfo.
2. Verify the Shared check box is selected. The query must be shared in order for your users to access this
BAQ from a search form.
4. Select the “like” columns used for the BAQ search. In this example, you select the Customer.CustID field in
the Available “Like” Columns list.
6. The selected field moves to the BAQ Search “Like” Columns list.
7. In this example, you also select the OrderHed.OrderNum field and move it to the BAQ Search “Like”
Columns.
8. Click the Save button on the Standard toolbar to save the query.
Once the BAQ Search information is saved, you can now leverage this BAQ in searches that use the Customer
ID and the Sales Order Number fields. For example, this query is now available when you search for sales orders
in Sales Order Entry and when you search for Customer IDs within Customer Maintenance. During this example,
you launch the BAQ Search within Sales Order Entry.
Menu Path: Sales Management > Order Management > General Operations > Order Entry
The CRM menu path is: Customer Relationship Management > Order Management > General Operations >
Order Entry
1. Click the Sales Order button to launch the Sales Order Search form.
3. Select CustomerOrders.
Advanced Searches
An Advanced Search is a dashboard you access to search for related data from a standard search window.
The Advanced Search functionality is designed around the concept of “Like” fields. Similar to the “Like” fields
used in a BAQ Search, the Advanced Search also uses “Like” fields; however, the data displays as a Dashboard
and opens in a separate window. You can then use the dashboard to search for specific data, select a record,
and pull the record back to the original program from which you were searching.
Advanced Searches are available wherever you can launch a search window. You launch these programs either
from a search button or from a context menu.
Advanced Searches are accessed through the search button in many programs or through a field’s context menu.
In this example, the Sales Order Entry program is used to demonstrate how you can access an advanced search.
Menu Path: Sales Management > Order Management > General Operations > Order Entry
The CRM menu path is: Customer Relationship Management > Order Management > General Operations >
Order Entry
5. The Fulfillment Workbench Search dashboard opens in a new window on your workstation.
6. You can now use the dashboard to search for specific records using the criteria available on the window.
In this example, you want to search for sales orders for the Distribution Product Group. You select Distribution
from this list.
7. Click the Search button to retrieve the records that match the criteria.
8. The results display in the Open Sales Order Release Search grid.
9. Once you find the record for which you are searching, select it in the grid.
11. The record selected in the dashboard displays in Sales Order Entry and you can now modify the sales order
as you need.
12. You can also right-click a field to access a Search (and any defined advanced searches) from the context
menu.
Named Searches
Use a Named Search to create a series of pre-set search options. In the Sales Order Search program, for example,
you can create a Named Search that only pulls in open orders created for Bill To customers. You could also create
a Named Search that automatically launches a BAQ Search or a Quick Search.
You leverage named searches in several ways. You can launch these searches manually from the Named Search
drop-down list within each search program. A specific Named Search option can be the default for the search
program; each time you launch the search, the Named Search options display. You can also set up Named
Searches to automatically populate data within either the search program or its parent program.
6. Enter a Named Search ID for your new named search. In this example, you want to create a search that
pulls open sales orders and sorts them by their Purchase Order Numbers. Enter OPEN in this field.
7. Enter the Description of the named search. In this example, you enter Open Sales Orders.
8. The Application field displays the program for which you are creating the named search. In this example,
the Erp.UI.SalesOrderEntry.dll file displays.
9. The Search Form field displays the name of the search program being modified. In this example, Sales Order
Search displays.
10. Select the Search Type for this named search. Available options:
• Basic Search – Use this search type to modify the default values on the search program’s Basic tab.
When you select this option, the search form’s Basic tab is shown.
• BAQ Search – Use this search type to select a Business Activity Query to populate the named search.
To learn how to create these search programs, review the BAQ Searches section found previously in this
chapter.
• Quick Search – Use this search type to select a Quick Search that populates the named search. To learn
how to create these search programs, review the Quick Searches section found previously in this chapter.
11. If you select either the BAQ Search or Quick Search type option, the Search Using drop-down list displays.
This list displays all the BAQs or Quick Searches available for this search program. Select the search option
you want from the list.
12. For this example, however, you are defining options for the Basic Search type.
13. When you select this Search Type, the Basic tab from the current search program displays.
14. Enter the default values you want for this named search. In this example, you want the results sorted by
purchase order, so from the Sort By field, you select PO Number. You also want only open orders created
for sold to customers to display; these business entities are the customers that purchased the goods. Bill To
customers are the business entities who pay for the goods.
You now can select several options for the named search. These options affect how the named search runs when
it activates. To define these options:
2. If you want this named search to be the default for the current search program, select the Default check
box.
3. When the Default check box is selected, the Auto Execute check box becomes available. Selecting this
check box causes the search program to automatically run when the main program launches. The search
query also populates the Search Results grid.
4. When the Auto Execute check box is selected, the Unpin Criteria Sheet check box becomes available.
Selecting this check box causes the main search sheet to automatically hide; only the populated Search
Results grid displays.
5. When the Return All Rows check box is selected, the Search Results grid displays all the data that matches
the options within the named search.
6. If you clear the Return All Rows check box, however, the Maximum Rows Returned field becomes available.
Enter the highest number of rows you want to display within the Search Results grid. In this example, this
named search displays a maximum of 1,000 records (rows).
7. Select the Single Value Auto Select check box to indicate that if the search program only locates one
record, this record automatically populates within the maintenance or entry program.
8. When you finish defining your options, click Save on the Standard toolbar.
10. You can now see this search program in action. Click the Sales Order button.
11. The Sales Order Search window appears, using the named search options you selected. Notice in this
example, the search program automatically populates the Search Results grid with open orders, sorting
them by PO Number.
12. It also hides the Search program’s main sheet; these options are now a tab at the top of this window.
Each time you launch this search program, it displays using these options.
You can also personalize each program to automatically load in all the records selected through a named search.
You can then immediately populate a maintenance or entry program with the data you want.
To personalize a program to do this. In this example, you use Sales Order Entry:
3. Notice the As the Form Opens group box. The options in this group box define some actions that run each
time you launch the program.
4. Select the Auto Populate Data radio button. This indicates you use a named search to automatically
populate the current program with records.
5. The drop-down list below the Auto Populate Data radio button becomes active. All the named searches you
have created for this program display on this list. In this example, you select the OPEN named search.
6. Click OK.
7. Now close and reopen the Sales Order Entry program you just personalized.
8. Now each time you launch this program, all the open sales orders automatically populate within the program.
You can use the Navigation toolbar to find and select the order you need.
You can define a similar default action using the Auto Load Search option. You also set up this value within the
Options window.
3. Select the Auto Load Search radio button. This indicates you want the search program to automatically
display each time you launch the program.
4. The drop-down list below the Auto Load Search radio button becomes active. All the named searches you
have created for this program display on this list. In this example, you select the OPEN named search.
5. Click OK.
6. Close and reopen the Sales Order Entry program you just personalized.
7. Now each time you launch this program, the Sales Order Search program automatically displays.
8. Notice that, by default, the named search’s options display within the Basic tab.
You can always restore the original search program. To do this, press the <Shift> button on your keyboard and
then launch the search program. The original search program appears – displaying its Basic tab. You can then
select any Named Search, BAQ Search, Quick Search, or Advanced Search created for this search program.
Use Data Tag Searches to find and select records grouped together by private or shared tags. The tags are
unstructured text values that provide a way to associate otherwise unrelated records so that you or other users
can search for them. For example, you may have a group of customers you want to review on a regular basis.
You can create a private data tag for your important customers called “XXXImportant” (where “XXX” is your
initials) and use the Data Tag search from Customer Maintenance to retrieve all the records at the same time.
Or, you might want to group a number of sales orders for review by someone else. You can apply a public data
tag called OrderReview which a sales manager can use from Sales Order Entry.
Private data tags are associated with your user account. Other users cannot retrieve records using your private
tags and likewise they cannot see or edit them. Public data tags can be viewed and used in Data Tag searches
by all users. You can add as many data tags as needed to a record, each separated by a space. Because the tags
are space delimited, however, you cannot include a space as part of a data tag.
You can add data tags to any record throughout all the programs in the application. In this example, the Customer
Maintenance program is used to demonstrate how you can add data tags to a record.
Menu Path: Sales Management > Order Management > Setup > Customer
The CRM menu path is: Customer Relationship Management > Order Management > Setup > Customer
1. Click the Customer search button and retrieve one or more records.
2. Right-click the main field; from the context menu, select Tag Record.
4. To add a private data tag—one for your use only—enter the data tag value into the My Tags field. If other
tags are already in the field, add a space and then the new tag.
5. To add a shared data tag—one that can be used by others—enter the data tag value into the Shared
Tags field.
6. Click OK.
7. You return to the Customer Maintenance window. You do not need to save the record for the tag to be
in effect.
1. To add a tag to some, but not all, of the records in a grid, select one or more records. You can use the
Ctrl key with your left mouse button to specifically select more than one row.
5. Enter one or more data tags, either private or shared, as you need.
6. Click OK.
Once data tags are added to records, you can perform a Data Tag search.
4. In the Data Tags field, enter one or more tags. To search using multiple tags, separate each one with a
space or a line return:
• Space - The search assumes the “AND” condition between the tags. The search results will only display
records that contain all of the data tags.
• Line return - The search assumes the “OR” condition between the tags. The results will display records
that contain at least one of the listed tags.
5. Click Search.
6. The Search Results grid displays all records where either a private tag or a shared tag matches the search
criteria.
Business Process Management method directives and data directives can leverage data tags to create custom
application functionality. You can define a condition statement that checks for the presence of a data tag on a
record. This condition statement can then be used as part of a directive that sends you an e-mail when a record
you tagged is modified. Also, actions can be used to add one or more data tags to a new record or remove data
tags from an existing record.
Adding a data tag to a record means that a previously untagged record would now display in your Data Tag
search results after it has been updated. For more information about BPM conditions and actions you can use
with the data tagging feature, review the Conditions and Actions – The Complete List section in Chapter 11:
Business Process Management.
Use Data Tag Maintenance to view and manage the list of data tags used throughout the application. With this
program, you can search for, view, and optionally purge data tags.
To use Data Tag Maintenance:
Menu Path: System Management > Purge/Cleanup Routines > Data Tag Maintenance
2. The Search Form displays. You can enter values into one or more of the Basic Search criteria fields to limit
the number of results.
3. Enter a TableName to limit the search for data tags created against a specific table. You must know the
table name. The search will not return partial matches.
4. Enter the name of a Tag if you want to search for a specific data tag. You must know the tag name. The
search will not return partial matches.
5. Select a Type to search for only private or public tags. You can select either All, Shared, or Not Shared.
6. Select the name of a User to search for data tags created by that specific user.
7. Use the Date After or Date Before fields to search for data tags entered after or before a specific date.
10. Select the search results that you want to review and possibly purge.
13. Click the List tab to see all the tags you selected in a grid.
14. If you want to purge some, but not all of the data tags, click the Selected check box next to each tag that
you want to delete.
16. Optionally, you can select Purge All to purge all the tags in the grid.
Enterprise Search
Enterprise Search is a search application you use to retrieve indexed content from within your Epicor application.
You can search on any record within the Epicor database – like a part, customer, purchase order, AR invoice,
and so on. You can also search for text found in any record within the Epicor database. All the records within
the Epicor database that use this record in which this text is found display within the search results.
Other search programs within the Epicor application are limited to querying records for a specific record type;
for example, you need to launch Job Search in order to find and select job records. Through Enterprise Search,
however, you can find all the places within your Epicor database that reference a specific search item, and then
use links within the search results to display the search item you want within the application program you need.
Data is indexed using a series of delivered Business Activity Queries (BAQs) that provide a starting point for the
primary data available when you first install the application. You can, however, extend this functionality by adding
user-defined BAQs into the indexing service.
Only users with certain rights can access Enterprise Search. These rights are assigned in User Maintenance. Once
these rights are assigned, you launch Enterprise Search through two methods – from the Main Menu within the
Smart Client or from a URL you can set up as an icon on your desktop. Both methods are described in this section.
Included at the end of this section is a list of Enterprise Search Options you use to quickly return the best possible
search results.
You give specific users access rights to Enterprise Search within User Account Maintenance.
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
3. Within the Access Options section, select the Allow Enterprise Search check box.
4. Within the Enterprise Search section, select the Use Default URL check box to use the Enterprise Search
index defined for the company as the user’s search index. Search indexes are defined in the Enterprise Search
Administration Console.
5. If an alternate search index URL is defined in the Enterprise Search Administration Console and you want
this user to access this index, enter this URL in the Search URL field.
You can launch Enterprise Search from the Home Page or Menu application within the smart client application.
The search results then display within an Enterprise Search pane. Use this pane to navigate to a specific program
that contains the data you wish to view.
1. Click Search (magnifying glass icon) in the upper right corner of the application Home Page or Menu
application to display the Search application.
2. In the Search Panel, Enterprise Search is selected by default in the search resources. Use the Search field
to enter a value. Enter 516FW.
5. The primary records that contain references to the search value display as links.
6. Related information categories display within the group box. You can click these links to view additional
search results.
7. To display the search value within a specific program, select a link. In this example, you want to display a
specific part transaction through the Part Transaction record, so you select Part Transaction link.
8. The results of the tag you selected display. Select the first link.
9. The specific program launches; the record that contains the selected search value displays. In this example,
Part Maintenance displays.
10. You may need to navigate through the record to locate the search value.
You can also launch Enterprise Search externally and then launch a specific Epicor Web Access program from it.
Epicor Web Access is an alternate interface that displays your Epicor application through a web format. For
instructions on how to install Epicor Web Access, review the Epicor 9 Installation Guide.
To externally launch Enterprise Search:
5. The primary records that contain references to the search value display as links.
6. Related information categories display within the group box. You can click these links to view additional
search results. For example, if you want to see all the invoices, click Invoices.
7. The search results are further refined to show a specific type of record that includes the search value.
8. To display the search value within a specific program, select a link. In this example, you want to display a
specific quote transaction through the Opportunity/Quote Tracker, so you select this link.
Enter your credentials in the Epicor Web Access login window. The search value displays within the specific
Epicor program.
9. You can also navigate to a specific program from a context menu. To do this, right-click a link that displays
within the search results.
10. A series of programs display on this context menu. Select the program you want from the list.
To use Enterprise Search, you enter the record or text in the Search field and click Go. This basic way of searching
for data returns links to all records that contain the search text. If you want to refine the search results, you can
use Enterprise Search filter options. These advanced search options help you return more specific search results.
The filter options include:
• Basic Search - Enter search text to retrieve any records that include the word or words. For example:
• The search text consignment returns records that contain the word “consignment”.
• The search text consignment returns records that contain the word “consignment”.
• Phrase Search - Enter the search text surrounded by quotes to retrieve any records that contain the exact
phrase. For example, the search text “consumer goods” returns records only if they appear together. This
search text would not return records that contain “consumer packaged goods”.
• Wildcard Search - Enter a wildcard character within your search text to retrieve a range of results. The
following wildcards are available:
• * (asterisk) - Represents one or more characters. For example, the search text con* returns records that
contain words beginning with “con” such as “container”, “containerization”, “contact”, or “contract”.
• ? (question mark) - Represents a single character. For example, the search text ?ab returns records that
contain words “lab” or “tab”, but not “grab”.
• OR Search - Enter OR between words in your search text to retrieve any records that contain the words on
either side of “OR”. For example, the search text stock OR non-stock returns records that contain either
word – “stock” or “non-stock”.
• Explicit Without Search - Enter a hyphen (-) before a word in your search text to retrieve records that do
not contain a specific word. For example, the search text lead time –demand returns records that contain
the words “lead” and “time”, but not the word “demand”.
• Tag Search - Tags are added to indexed data. Enter a tag name to retrieve any records that include the tags.
For example, the tags for Sales Order are Order and SO. The search text order critical or SO critical returns
sales order records that contain the word “critical”.
Application administrators can obtain the list of tags from the Enterprise Search Administration Console.
These tags are specific to Enterprise Search and are not the public and private data tags you add to records
within programs throughout the application. For more information on public and private data tags you add
to records, review the previous Data Tag Searches section in this chapter.
• Date Search - Enter a date in your search text, in any of the following formats, to retrieve records that contain
the specified date.
• 2016-01-01T00:00:00 (date:time)
• 01/12/2016 (mm/dd/yyyy or dd/mm/yyyy)
• 1/12/2016 (m/dd/yyyy or d/mm/yyyy)
• 1/12/16 (m/dd/yy or d/mm/yy)
Predictive Search
The Predictive Search feature reduces the time spent on searching for a particular record.
The Predictive Search feature reduces the time spent on searching for a particular record.
User with security rights maintain Predictive Searches using the Predictive Search Maintenance program. To access
the program, right-click on a field and from the context menu, select Predictive Search Entry.
To create a predictive search, you first select a Business Activity Query (BAQ) that defines the search data. Then
you configure the fields you want to display on the tooltip window. You can limit the BAQ to only display the
top number of rows you define. You can also indicate if the predictive search is available for all DB field occurrences
within the Epicor application.
When you configure a key field with the predictive search, as you start typing in the field, the suggested results
display in a floating tooltip window. The search results change dynamically as you type, which makes the searching
easier and more efficient.
You indicate which users can create and edit Predictive Searches through User Account Maintenance.
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
3. Within the Tools Options group box, select the Can Maintain Predictive Search check box.
When the user right-clicks on a field, the Predictive Search Entry becomes available on the context menu. This
user can now create and edit predictive searches throughout the application.
Business Activity Query provides the datasource for your search results. You can use either the system BAQs for
the search or you can create custom BAQs to supply the data you need.
Menu Path: System Management > External Business Activity Query > External Business Activity Query
1. Click New.
2. In the Query ID field, enter XXX_CustomerList, where XXX are your initials.
7. From the list, select the Erp.Customer table and drag it on the canvas in the center pane.
10. Add Cust.ID and Name fields to the list of Display Column(s).
12. Click Test and verify the BAQ retrieves the list of customers.
You create predictive searches through Predictive Search Maintenance. To launch this program, right-click any
field used for searches and select Predictive Search Entry from the context menu.
In this example, you create a predictive search for Customer field found in Sales Order Entry.
1. In the Sold-To pane, place your cursor in the Customer field and right-click mouse to invoke the Context
menu.
3. To create a new search, click the New button on the Standard toolbar.
4. In the Predictive Search field, enter XXX_CustomerList (where XXX are your initials).
6. Click BAQ, search for and select XXX_CustomerList BAQ you created
7. In the Return Column, select Customer_CustID. This field defines the column that will bind in the Customer
field when a user selects an option in the predictive search tooltip window.
8. In the Return Column, select Customer_Name. This column is used to filter the BAQ records. When you
activate a predictive search and start typing in the field, BAQ results will be filtered by customer names.
Once you restart the program from which you created the Predictive Search, you can test the functionality.
2. Click New.
3. Start typing in the Customer field and notice the suggested results display in a floating tooltip window. As
you type. the Predictive Search results are filtered by Customer Name.
When you select a value, the Customer ID is placed in the Customer column. This is the value the fields
expects.
Within the application's sysconfig file, the following properties control the behaviour of Predictive Searches.
System administrators may modify these values to fine-tune the Predictive Search performance.
Chapter 5: Dashboards
Dashboards are flexible, powerful tools that provide easy access to critical information in a real-time environment. In
addition to the standard dashboards included with the application, you can also create custom dashboards. Custom
dashboards can replace the need for workbenches, trackers, ShopVision reports, ad hoc reports, and even simple
business intelligence reports.
You can 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.
Dashboards display data through business activity queries (BAQs). Several display options are available to present data.
For example, you can present data on a grid, chart, or guage. You can add a Tracker View (to display an advanced
search) where you define the fields by which users can search data. You can also add a URL link to display web pages
or web parts on the dashboard.
The Dashboards chapter begins with a brief review of standard system dashboards. Next, it explores how you can
create your own dashboard, adding queries and multiple views to display the information you need. You then learn
how to enable a dashboard for use as an advanced search. The chapter next describes Publish and Subscribe functionality.
The unique framework of the dashboard can publish data from one query and then subscribe to the data by another
query. Users can see related information between the two queries when a record is selected in the dashboard.
The chapter continues with steps on how you build and deploy a dashboard to your Favorites Bar and the Main Menu.
To do this, you use the Application Builder process to compile the dashboard into a user interface and then deploy it
to the server.
The chapter concludes with a section on creating updatable dashboards where users can view and modify the data
presented through the query. When configured with updatable BAQs, the dashboard becomes a data entry program,
giving you the ability to construct dashboard applications that streamline your business process.
Many standard system dashboards install with the application. Use the dashboard framework to modify the way
information is presented. Additional features include:
• Modify dashboard assemblies to create new dashboards to place on the Main Menu
• Dashboard components synchronize with system entry programs (Publish and Subscribe)
• Right-click and print enabled
• Copy and paste enabled
• Display information in graphs, charts, and gauges
• Conditional formatting based on user-defined rules
• Leverage EPM Performance Canvas and gems for import and export dashboard definitions
Standard dashboards are located in the General Operations folder of each module on the menu. Since dashboards
provide information that pertains to multiple modules, many are available in multiple locations within the Main
Menu.
Dashboards are identified on the menu by a magnifying glass and book icon.
Navigate in a Dashboard
One example of a standard system dashboard is the Part On Hand Status dashboard.
Menu Path: Executive Analysis > Status Dashboards > Part On Hand Status
1. After you launch the dashboard, click the Search button on the Dashboard Browse to find and select the
parts to view in the dashboard.
2. When you select the part record from the Search Results grid, related information about this part displays
in the dashboard. Only one part record displays at a time. Use the Navigation toolbar to select another
record to view in the tracker. In this example, part DSS-1012 is selected. The part number displays on the
title bar and the part’s on hand information displays in the On Hand Locations grid.
3. To view Warehouse and Inspection information for the selected part, click the respective sheets.
4. You can right-click a part number record in the Search Results grid and select Open With… The Context
Menu displays related information for the part selected. Options on the context menu launch in a new
window for the selected program.
6. Notice the part information for DSS-1012 defaults into the window. When you launch a secondary program
(in this case Time Phase) from a dashboard, it uses publish and subscribe functionality to display the selected
record’s information in the new program.
7. To view Time Phase information for a different part, you can select a new part in the dashboard and it
refreshes the Time Phase window with the new part’s information. In this example, you click part DSS-1010
in the Part On Hand Status. The Time Phase Inquiry window refreshes with part DSS-1010’s information.
Many dashboards also include an Advanced Search where you can select specific records using the fields provided
on the search sheet. Only the records that match your search criteria display. To use the advanced search features
in the Opportunity/Quote Status dashboard:
Menu Path: Executive Analysis > Status Dashboards > Opportunity / Quote Status
1. Navigate to the Advanced Search sheet. In the Cust. ID field, enter Addison.
3. The Search Results list only displays quotes that belong to the customer Addison.
Authorization
In order to create new dashboards, users must be granted Dashboard Developer permission in User Account
Maintenance. Any user with security rights can access a dashboard once placed on the menu; however, creating
a new one from scratch (or updating an existing one) requires a security privilege that is typically granted only
to certain people in your organization.
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
1. Click the User ID button to find and select the user you need. You can also enter the User ID directly.
Dashboard Creation
You use the Dashboard program to create and modify dashboards in the application.
Before creating a dashboard, it is important to first spend some time thinking about what information would be
helpful to employees at your organization. What is the appropriate format for this information? Is it more graphical
in nature? Should users be able to search the data displayed in the dashboard? Can existing queries (Business
Activity Queries) be used on the dashboard, or do you need to create new queries? Once you identify what you
need to display, you can begin to create your dashboard. In the examples that follow, you create a dashboard
that displays customer orders, shipments, and invoices.
Menu Path: Executive Analysis > Business Activity Management > General Operations > Dashboard
To verify the Developer mode is enabled when the dashboard program launches:
2. Once you are in Developer mode, the New button displays on the Standard toolbar.
5. In the Definition ID field, enter a unique identifier for the dashboard. In this example, enter CustSvcDbd.
6. Enter a Description for the dashboard. In this example, the description is Customer Service Dashboard.
7. By default, the Refresh button is automatically added to the dashboard interface; this button updates data
for a single selected record. When you select the Enable Refresh All check box, the Refresh All button is
added to the Standard toolbar in the dashboard. When users click the Refresh All button, the query
updates all the data displayed on the dashboard.
8. Select the Include Tree on Dashboard Assembly check box to display a Tree View in the finished
dashboard assembly for navigation between data records in the primary query. Once the Application Builder
deployment process is run, the Tree View displays. The Application Builder Process is discussed later in this
chapter.
9. When you select the Target Mobile Device check box, you indicate the dashboard can display in a mobile
device. When you generate the dashboard, you also create a mobile device version of the dashboard.
Dashboards for Mobile Devices are discussed in Chapter 8: Dashboard Utilities.
You are now ready to design your dashboard. Remember to save changes frequently while you develop the new
dashboard.
To begin designing a dashboard, you first add a query to it. Queries are created in the Business Activity Query
Designer program and are used to retrieve and display information from a table (or multiple tables) in the database.
You can add multiple queries to the same dashboard that display related information.
In order to demonstrate all the dashboard functionality, you must copy a standard query to make additional fields
available for use in the chapter examples. To learn how to do this, read the Modify an Existing Query section in
Chapter 4: Business Activity Queries.
The first query that you add to the dashboard, EPIC03-CustTrackerOrders01, displays customer order information.
2. In the Dashboard Query Properties window, click the Query ID button to find and select the query.
3. In the Query Search window, click the Search button and select EPIC03-CustTrackerOrders01.
Queries that begin with the letter “z” are standard queries written by Epicor included with the application.
System queries are also identified by the Delivered check box.
4. Click OK.
6. Click the Refresh button on the Standard toolbar to execute the query and retrieve the data.
7. In the Tree View, two icons display when the query is added to the dashboard. The Query icon displays
on top and references the EPIC03-CustTrackerOrders01 query you added.
You use the Tree View to help design the dashboard and ultimately navigate through it. As you add multiple
views to the dashboard, this becomes the primary tool to understanding the information that displays.
8. The Grid icon for EPIC03-CustTrackerOrders01 displays under the Query icon in the Tree View. The
default view for every query added to the dashboard is called a Grid View.
9. Use the Available Views panel in the Tree View to select published, available views you want to add to
your dashboard.
10. If you want to hide the Available Views panel, from the View menu, select Published Views. The Published
Views and Available Views functionality is discussed later in this chapter.
The Dashboard Query Properties window contains important information about the query you have just added
to the dashboard. You control many characteristics of the query and ultimately how the data displays on the
dashboard using these properties. You can access these settings at any point while developing the dashboard.
Once a query is added to the dashboard, all related views, like grids or charts, are based on the parameters
established in the Dashboard Query Properties window. For example, any filters applied at the query level are
applied to all grid and chart views that use this query to display information.
You can apply filters to any specific view. Depending on what the user wants to display, it may be better to apply
filters at the View level as opposed to the Query level. This feature is useful to display groups of information,
such as sales broken down by territory or customer groups.
When a new query is added to a dashboard, the Dashboard Query Properties window displays automatically.
Once the query is added, you can access the Properties window manually by right-clicking on the Query icon in
the Tree View and selecting Properties from the context menu.
2. Select Properties.
The Dashboard Query Properties window displays.
3. The Caption field displays the default description of the query added. In this example, the caption is Order
Query for Customer Tracker; however, you can override this value. The text in the Caption field displays in
the query’s sheet and grid caption bars.
4. Select the Auto Refresh on Load check box. This refreshes the data in the dashboard automatically when
you launch the dashboard. This eliminates the need to click the Refresh button manually on the
Standard toolbar when the dashboard is initially run. Use caution when enabling this check box, as queries
that retrieve many records take more time to load to the dashboard when you initially open it.
Use the Publish sheet to select which columns from the query to publish from the dashboard query. Information
published from one query can be used to display on the title bar, as well as for subscription by another query. In
this example, you publish the customer name to the title bar. As you select different sales order records in the
grid, the order’s customer name displays on the title bar. You learn more about publish and subscribe later in
this chapter.
2. The columns that display in the Publish Columns list include all the fields built into the query when it was
created. Select the Customer_Name, Customer_CustID, and Customer_CustURL fields in the Publish
Columns list.
3. Select the Publish to Title check box. You can publish specific data to the title bar of the dashboard. In
this example, the customer name is selected to display in the title bar of the dashboard.
4. From the drop-down list, select Customer_Name. This field contains all the columns you selected in the
Publish Columns list. The column selected in this field is what displays on the title bar.
5. In the Title caption field, enter Customer:. This value displays as a prefix placed before the published
customer name.
6. Click OK.
7. Notice the title bar now displays the customer name of the selected record.
8. A new icon displays in the Tree View when you publish information from the query. The Satellite icon, with
an arrow pointing out, indicates the query is publishing information.
Use the Filter sheet to apply filters to the data retrieved when the query is published from the dashboard. These
dashboard filters run in addition to any filters that already exist in the query. In this example, you add a filter to
the EPIC03-CustTrackerOrders01 query to only display open sales orders.
1. In the Tree View, right-click the Query icon and select Properties.
2. The Dashboard Query Properties window displays. Navigate to the Filter sheet.
3. From the ColumnName list, select the field you want to filter. This field contains a list of all the columns
included in the query. In this example, select OrderHed_OpenOrder.
4. From the Condition list, select the appropriate condition you use to define filter criteria. This list contains
all Boolean operators such as: equal to (=), not equal to (<>), greater than (>), less than (<), greater than or
equal to (>=), and less than or equal to (<=). You can also select BEGINS, which enables you to define the
criteria based on the value that begins in the field. In this example, you select equal to (=).
5. In the Value field, enter True. The Value field contains a list of available values from which you can choose,
or you can define your own value by entering it in the field. Available options:
• The values of columns published from the query (for example, customer name)
• The values of all columns included in the query BAQ Special Constants (for example, Today, Tomorrow,
Yesterday, Year, Day, and so on)
• Use these values to compare a field to the value of another field, to a constant such as the current day
of the week, the fiscal year, and so on.
6. Click OK.
When a query is added to a dashboard, the default view for displaying the data is a Grid View. You typically will
have multiple grids displaying different information from a single query on a dashboard. For example, you can
add another Grid View that displays open orders for a specific customer or for a specific territory. You accomplish
this by applying a new filter on the grid view that defines these criteria. Each query and view added to the
dashboard has its own properties window where you can define additional parameters.
Use the Dashboard Grid Properties window to define the columns that display, activate group by and summary
options, enter filters, and set up rules for displaying information.
You access the Dashboard Grid Properties window by right-clicking the Grid icon in the Tree View of the
dashboard.
Modify Grid Properties – Change Display Columns and Enable Group By and Summarization
in a Grid
When a grid is added to the dashboard, all columns included in the query appear by default. You can modify
the columns that display and also enable the Group By and Show Summaries options in the properties window.
1. Right-click the Grid icon in the Tree View of the dashboard and select Properties.
2. In the Caption field, enter Open Orders. This value displays in the header of the Grid and also in the Tree
View of the dashboard.
3. Click the Clear All button to clear the selection of all the Display Columns.
4. Select the Visible check box for each column you want to display in the grid. In this example, the following
fields are selected:
• OrderHed_OrderNum
• OrderDtl_OrderLine
• OrderHed_PONum
• OrderDtl_PartNum
• OrderDtl_LineDesc
• OrderDtl_SellingQuantity
• OrderDtl_DocUnitPrice
• Customer_Name
• Customer_TerritoryID
• OrderDtl_ProdCode
• OrderDtl_NeedByDate
5. Use the Up and Down Arrow buttons to change the order the columns display within the Grid view. As
you click these buttons, the order of the columns changes on the grid.
7. Select the Show Group By check box. The Group By functionality then displays as the default view in the
grid. If this feature is not turned on in the Properties window, it can still be toggled on or off by the end
user in the dashboard during runtime. For this example, select this check box.
8. Select the Show Summaries check box to define additional summarization options. Available options:
• Average
• Count
• Maximum
• Minimum
• Sum
You can use one or more of the above options to summarize data on a single grid view.
9. Click OK.
10. Now only the columns you selected display in the grid. The Caption displays Open Orders in the Tree View
and the Grid Caption displays Open Sales Orders.
Now that you have updated the Grid Display properties, you can modify the grid information by utilizing the
Group By and Summarization options. In this example, you apply a sum to the Doc Unit Price field and group
the grid by Customer. You also move columns within the grid.
3. Click OK.
4. Scroll to the bottom of the grid to view the Sum of the Order column.
5. Drag the Name column header up to the blue header bar to group the data by customer.
7. You can expand the groups to reveal the order detail by clicking the + icon next to each customer.
8. To save the groupings as the default layout for the grid, from the Tools menu, select Layouts > Save
Layouts As Default.
9. To turn the Show Group By functionality on and off, right-click anywhere in the grid and select Show
Group By. In this example, group by is turned on.
10. When Show Group By is turned off, the check mark does not display next to the option.
11. You can also move columns within the grid. Click a column header and drag it to its new position in the
grid. Release the column when the black arrows appear. In this example, you move the customer Name
column to the first column in the grid.
12. Click Save on the Standard toolbar to save the changes to the dashboard.
Just like a filter can be applied at the query level, the same functionality is available at the grid level. Many of the
standard dashboards use filters at the query level. Query filters run against data on the server. When all the query
data is sent to the client, you can create additional client side filters that further restrict the data results that
display in the grid. In this example, you apply a filter to the grid that causes the grid to only display sales orders
with a Document Unit Price greater than zero.
1. In the Tree View, right-click the Open Orders grid icon and select Properties.
2. When the Dashboard Grid Properties window displays, navigate to the Filter sheet.
6. Click OK.
You can add multiple grid views of the same query information to a dashboard. By using grid filters, the data
can be organized to display multiple views for the same source information.
Now that you have applied a filter to the Open Orders grid, you add another grid view to the dashboard to display
the zero dollar orders. You then apply a filter to this grid which only displays open orders with a Document Unit
Price equal to zero.
To add a new grid view to the dashboard:
1. In the , right-click the Query icon and select New Grid View.
7. Click OK.
8. By default, the new grid is docked on the bottom section of the dashboard.
9. You can move the grid and create a tab to display each of the grids associated with the query. Click the
Zero Dollar Orders grid header and drag it up next to the Open Sales Orders grid. Release the grid when
the outline displays a notch.
10. Both grid views now display side-by-side as two separate sheets with tabs on the dashboard.
11. Notice the Tree View now displays two Grid View icons under the Query icon.
You can define rules and conditions that control how certain data displays within the grid. As the conditions for
the data change, the view indicates this change based on the rule action that you define. In this example, you
apply a rule to highlight orders that do not have a customer purchase order number.
1. In the Tree View, right-click the Open Orders grid icon and select Properties.
2. When the Dashboard Grid Properties window displays, navigate to the View Rules sheet.
3. Click the New View Rule button; the View Rule defines the criteria for the rule. This activates the Select
Field, Rule Condition, and Rule Value fields for entry.
4. From the Select Field list, select the field for which you base the rule. In this example, you select
OrderHed_PONum.
5. Select the Rule Condition. Available options: Contains, Equals, Greater Than, Less Than, Not Equal, and
Starts With. In this example, you select Equals.
6. Leave the Rule Value blank (or null). The Rule Value list contains every column in the query, and also
constant values from which you can select.
9. When you click the New View Rule in the available rules list, the Edit View Rule button becomes available.
You can then use this button to edit rules that were created.
10. The Rule Action defines how the selected field displays within the Grid view. Click the New Rule Action
button to activate the Select Field and Setting Styles fields for entry.
12. From the Setting Styles list, select Error. The Error style turns a cell red; however, other styles are available
from which you can choose. Available options:
• OK – This style turns a cell green
• Warning – This style turns a cell yellow
• Highlight – This style turns a cell blue
• Invisible – This style turns a cell black
16. Sales orders that do not have a purchase order number now display red in the Open Sales Orders grid.
You can apply the same rule and action to the Zero Dollar
Orders grid by following the same steps as above in the
Zero Dollar Orders Grid Properties window.
Use the Image Columns sheet to create an image column within a grid view. This column can display an application
image you select. You can also create row rules which indicate the conditions for displaying various images within
this column.
You can immediately use this functionality to display any image included within the application. You can also
display your own images through the Resource Editor program. This separate utility is available for download
from EPICweb. Use this utility to find, select, and add your own images to the application. You can then use
these images on your dashboard.
First, create a new image column and name it accordingly. Then select the default image and decide where in
the grid you want the image to display.
If you need, 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.
In this example, you add an image column that normally displays a blank cell. You then select a row rule so this
column displays the exclamation icon whenever an order release unit price is greater than $1,000.
1. Right-click the Open Orders grid icon in the Tree View of the dashboard and select Properties.
2. When the Dashboard Grid Properties window displays, navigate to the Image Columns sheet.
3. Enter a Column Name for the new column. Be sure to enter a name you can easily find when creating row
rules. By default, all image columns are placed at the bottom of the column list. In this example, enter
PriceCheck.
4. Enter a Caption for the new column. This value is the text that displays at the top of this column. For this
example, enter Price Check.
5. From the Image Name list, select the default image you want to display. This item is the default image that
displays if no other rules are applied against the image column. All images available within the application
display; select the image you need from the list. For this example, select the (None) image. When the None
image is selected, no image displays as the default.
6. Use the Visible Index value to define where inside the grid you will place your new image column. The
lower the number, the closer to the left of the grid the image column appears. For example, if you enter
one (1), this indicates the column is the first left-side column in the grid. In this example, enter the default
value of 1.
8. Open the Dashboard Grid Properties window again and navigate to the View Rules sheet. You will
create a View Rule to display the exclamation image when the order line release price is greater than the
numeric value 1,000.
10. From the Select Field list, select the field you want to base the rule on. In this example, select
OrderDtl_DocUnitPrice.
12. Enter or select the Rule Value for this rule. This defines the value against which the Rule Condition is
evaluated. In this example, enter 1,000.
14. The new rule displays within the Row Rules list.
16. From the Select Field list, select the field this action affects. You need to select the new image column, so
you select the Price Check column you just created.
17. Because you selected an image column, the Setting Styles field changes to the Image Name field. All the
images available within the application display on this list; select the image you need. In this example, you
select the Exclamation image.
19. The image column rule now displays within the Rule Actions list.
21. Now when you view the dashboard grid, any order release that has a Document Unit Price greater than
1,000 will have the Exclamation icon displayed next to it.
The Chart View creates charts and graphs from the data within the selected query. You can have multiple charts
on a single dashboard that display different information in a graphical format. In this example, you create a Chart
that displays Open Orders by Territory.
Use the Dashboard Chart View Properties window to define the columns used in the chart, select different chart
types, customize chart colors, and other options.
1. In the Tree View, right-click the Query icon and select New Chart View. The Dashboard Chart View
Properties window displays.
2. In the Caption field, enter Chart - Open Orders by Territory. This value displays in the tab of the chart
view that is added.
3. From the Chart By list, select the field you want to use. This field is the horizontal axis, also referred to
as the X axis, and contains all the columns in the query from which you can select. In this example, select
Territory to display open orders by territory.
4. From the Chart On list, select the field you are charting. This defines the vertical axis, also referred to as
the Y axis, and contains only columns in the query defined as numbers. In this example, select Doc Unit
Price to display the open order amounts.
5. Fields can also be selected from the Group By (or Z axis) list. Use the Group By feature to group all the
records in a grid by a specific column.
You can select more than one field to chart. When you
do this, runtime users can switch between the fields to
see the information charted with different values.
7. From the Color Model list, select the colors of the chart. Available options:
• LinearRange - You can select a starting and an ending color with this option. The chart then displays
in regular gradations between these two colors. To change the Start Color or End Color, select the color
from each list.
• LinearRandom - Use this option to select a starting and an ending color. The chart then displays in
random gradations between these two colors. To change the Start Color or End Color, select the color
from each list.
• PureRandom - With this option, the application assigns colors automatically. This value is the default
color model applied to all charts.
• Wireframe - This option creates a wireframe chart. Only the lines of the chart display; no fill colors are
used.
8. Click OK.
10. Notice the new Chart icon now displays in the Tree View of the dashboard under the Query and Grid
icons.
Chart Settings
Once a chart is added to the dashboard, you can change the default settings of the chart. Hold the mouse over
the Settings tab to access and modify the chart settings.
To add a legend to the chart and change the column chart to a 3D column chart:
1. Hover your mouse over Settings. The Settings window slides open.
2. Select the Legend check box if you want a legend displayed with the chart. When you select this option,
you select where to display the legend (top, bottom, left, right) from a drop-down list. In this example, place
the legend display on the right side.
5. Hover your mouse over Settings and, from the Chart Type list, select CylinderStackBarChart3D.
You can add a Tracker View to a dashboard. Typically used to create an Advanced Search, you can enter search
criteria based on the specified query and retrieve the search results back to the dashboard. Users leverage this
tool to find the exact information they need without searching through all the records in the dashboard.
Several steps are involved in creating an advanced search. You first have to add the Tracker View and define the
fields to be available for searching. The second step involves customizing the tracker view. This process utilizes
a subset of the customization tools available in the application.
The Dashboard Tracker Properties window is where you identify the columns that you want to use for searching.
Options are also available to embed a grid view, display group by and summary data, add filters, and define rules
for how the information displays.
In this example, you add a Tracker View to a dashboard for an advanced search. You then select the columns
available on the search form.
1. Right-click the Query icon in the Tree View and select New Tracker View.
2. In the Caption field, enter Advanced Search. This value displays in the header of the Tracker View and
also in the Tree View of the dashboard.
The Filter and View Rules sheets are exactly the same as
the other view property windows. These options are not
necessary when creating an advanced search.
3. Click the Clear All button to clear the selection of all the Display Columns.
4. Select the columns you want to use for searching in the Visible list. In this example, select the following
fields:
• OrderHed_OrderNum
• Customer_Name
• Customer_State
• Customer_TerritoryID
5. Select the Prompt check box for each of the fields you wish to use for searching. The fields change from
read only to enabled for user input.
6. The Condition field determines how the data entered in each field is used for searching. In this example,
select StartsWith in the Condition field for the Customer_Name column. When selected, this option
indicates users can find Customers using a partial Customer Name.
7. If you want to create a new query grid view to display within the tracker view, select the Embed Grid View
check box. In this example, you do not select it.
8. Click OK.
10. Notice the new Tracker icon for the Advanced Search displays in the Tree View.
11. To use the Advanced Search, first click the Clear button on the Standard toolbar.
12. To find customers that belong to a specific territory, select a Territory from the drop-down list. In this
example, select United States – Mid West.
Once you add an Advanced Search to the dashboard, you can add additional search criteria functionality such
as a starting at and ending at range. In this example, you add a second field for Order Number so that users can
search for a range of sales order numbers within the dashboard.
1. In the Tree View, right-click the Advanced Search icon and select Customize Tracker View.
2. When the Customization Tools Dialog displays, from the Tools menu, select ToolBox.
3. The Toolbox displays. Use this tool to add elements to the current form. Notice that each element you can
place on your form has its own button.
4. Click the EpiNumericEditor element on the Toolbox to add a new Order number field to the sheet.
6. In the Properties grid for the new Numeric Editor control, change the IsTrackerQueryControl property
to True. The field now acts as a control for the search window.
7. You next need to bind this new field to a field within your dashboard query. In this example, use this field
to find Order Numbers. To do this, select OrderHed_OrderNum in the QueryColumn field.
8. Enable the new numeric field for entry of data. To do this, change the DashboardPrompt property to True.
Once you have the two Order Number fields for the range on the form, you next have to assign conditions
to each field.
10. The original Order Number field on the form also needs to be assigned a condition. To do this, select the
Order field on the Advanced Search sheet.
12. It is also helpful to change the label text for the Order field to indicate this item is now a range search. To
do this, select the Order label element on the Advanced Search sheet.
14. The TabIndex field controls the order in which the user is prompted through the Advanced Search fields.
In this example, change the TabIndex to 28 so that you are prompted from the first Order Range field to
the second as you press the Tab key.
15. Click Save and close the Customization Tools Dialog window.
16. To use the Order Range search, enter a sales order number in each of the range fields. In this example,
enter 5100 and 5115.
18. The Open Sales Orders sheet now displays only open sales orders that are greater than or equal to 5100
and less than or equal to 5115.
Gauge views are visual tools that measure the levels of a specific view you select from your dashboard query.
Gauges can communicate various aspects of your data. As users click various records within the main query on
your dashboard, the gauge updates to reflect the level of the data on each record.
Use the Gauge Properties Window to select the gauge style you want to display on your dashboard. You then
indicate the value to measure and define the starting and ending values that measure the value on the gauge.
You can also create filter expressions to limit the data that displays on the gauge.
1. In the Tree View, right-click the Query icon and select New Gauge View.
2. Enter a Caption for the gauge. This value displays on both the Tree View and the tab that contains the
gauge. In this example, enter Gauge - Selling Quantity.
3. Click the Gauge Type button to find and select the gauge you want to display on the dashboard. After
you select the gauge type and return to the Dashboard Gauge Properties window, the name of the selected
gauge displays next to the Gauge Type button. Its type also displays in the Gauge Properties grid.
4. In the StartValueBinding field, enter a value to use as the beginning gauge value. When the gauge evaluates
where to place its marker, the StartValueBinding value is evaluated against the EndValueBinding value. In
this example, enter 0 in this field.
5. In the EndValueBinding field, enter a numeric value to use as the final value on the gauge. In this example,
enter 100 in this field.
6. To complete the gauge, from the MarkerBinding list, select the data column to use to define the marker
on the gauge. As data changes within the query, this marker moves to a different location on the gauge.
In this example, select OrderDtl_SellingQty.
7. Click OK.
8. You can now display the gauge on your dashboard and evaluate how well the visual indicator evaluates the
selected data column. In this example, the current sales order detail line selected has an Order Quantity
of 30.00.
9. Select a sales order detail line that has an Order Quantity of 300.00. The gauge updates to display this
new quantity level.
Use the URL/XSLT View to display a website using a URL address or an XSLT style sheet that displays data on your
dashboard. When you select this option, you can either enter a web address or select an existing XSLT file on
your network.
When you enter a web address, the application passes the URL to Microsoft® Internet Explorer®, so you can use
the typical Internet options for the Web pages. You can also set up this feature to update the URL based on a
Web site address included in the selected query. So as you select a different record in a query, the URL also
updates with the Web address listed with this record.
When you enter a filename that ends in .xslt in the Web Address field, additional fields become available for you
to further define the Style Sheet details.
URL/XSLT Properties
The URL/XSLT Properties window contains all the fields you need to set up a link to a Web address or to display
your data using an XSLT Style Sheet. In the first example, you add a URL View and link the URL to the Customer
Website field. As you select sales orders for different customers in the query, the URL sheet automatically displays
each customer’s website.
The second example shows you how to add an XSLT Stylesheet View that displays a summary of all activity for
the customer record you select.
To link a URL to the customer’s website, the query must contain the Customer Website field. In this example,
you are using a query that already contains this field.
2. Enter a Caption for the URL. The text entered here displays in the title bar of the URL on the dashboard.
By default, the Caption contains Epicor’s Web address. In this example, enter Customer Website.
3. If you want to display a specific website, enter a URL/XSLT Address. In this example, leave this field blank
so you can link to different websites based on the record selected in the dashboard.
4. In the Publisher field, select EPIC03-CustTrackerOrders01 - Order Query for Customer Tracker:
Customer_CustURL. The Publisher field contains all the columns that you selected to publish from the
query. As you choose orders for different customer records, the URL/XSLT view uses the customer website
published from the query to update the website.
5. Click OK.
6. Notice the URL/XSLT icon now displays in the Tree View of the dashboard.
7. Now when you select a sales order from the Open Sales Orders grid, the customer website displays on
the dashboard.
8. You can move this sheet to create separate sheet on the dashboard. To do this, drag the Customer Website
panel up so that the gray outline forms a notch at the top.
9. When you release the mouse, the Customer Website sheet displays as its own sheet.
You use a Process Link on the dashboard to create a direct link to a system program commonly used; for example,
Sales Order Entry, Job Entry, Customer Entry, W2 Processing, and so on. Once the process is linked to the
dashboard, it can be launched from the Actions menu on the dashboard.
Use the Dashboard Process Link Properties window to define the linked programs and then test its deployment.
2. Click the Process ID button to find and select the program you want to link to the dashboard.
4. Select the entry program the primary users of the dashboard can access. In this example, select the Customer
menu process (ID ARMT1010).
5. Click OK.
6. To test the process link, click the Test button to launch the Menu Process ID.
8. Notice the Customer program icon now displays in the Tree View.
It also displays in the Actions menu. When you deploy this dashboard to the menu, users access the Process
Link for the Customers program from the Actions menu of the dashboard.
Use the unique dashboard framework to publish data from one query and subscribe to another query. This feature
displays related information when a record is selected in the dashboard and also in the title bar.
In order to use Publish and Subscribe functionality, you must first have multiple queries on the dashboard that
display related information. In this example, you add a second query to display sales order line item shipment
information. Once this new query is added to the dashboard, you are able to use Publish and Subscribe. As you
select a sales order from the Open Sales Order or Zero Dollar Orders grids, the related shipment information
displays for that order.
The second query you add to the dashboard, zCustomerShipments, displays line item shipment information.
To add a second query to the dashboard:
2. Click the Query ID button to find and select the zCustomerShipments query.
4. Click OK.
5. Click the Refresh button on the Standard toolbar to execute the new query and retrieve the data.
6. To change the title of the grid view, in the Tree View, right-click the zCustomerShipments grid icon and
select Properties.
The Dashboard Grid Properties window displays.
9. Select the Visible check box for each field you want to display from the list. In this example, select the
following fields:
• ShipHead_ShipDate
• ShipDtl_PackNum
• ShipDtl_PackLine
• Calculated_QtyShip
• ShipDtl_OrderNum
• ShipDtl_OrderLine
Publish
Information published out from one query can be used to display on the title bar, as well as for subscription by
another query. In a previous example, you published the Customer Name to the title bar of the dashboard. In
this example, you publish the Order Number and Order Line from the EPIC03 – CustTrackerOrder01 query. Since
shipment information is stored at the line item level, you need to both publish the order number and order line.
1. In the Tree View, right-click the EPIC03CustTrackerOrderso1 query icon and select Properties.
4. Click OK.
Subscribe
To have a view subscribe to published data, you use a Filter in the Dashboard Grid Properties window. Similar to
a filter which limits the data that displays, you can apply a filter that only displays data in a particular field when
it is equal to the value of the data published. In this example, a filter is applied to the Shipment Details grid. The
filter uses both the Order Number and the Order Line published from the EPIC03-CustTrackerOrders01 query.
This limits the shipment detail to display only the line item selected in the Open Sales Orders and Zero Dollar
Orders grid views.
Apply a Filter that Subscribes to the Published Order and Line Number
1. In the Tree View, right-click the Shipment Detail grid icon and select Properties.
3. From the ColumnName list, select the field you want to filter on. In this example, select ShipDtl_OrderNum.
5. From the Value list, select EPIC03CustTrackerOrders01 - Open Orders: OrderHed_OrderNum. This
entry filters the data based on the order number published from the query.
6. Press the Enter key to add a second filter to the grid properties.
7. From the ColumnName list, select the second field you want to filter on. In this example, select
ShipDtl_OrderLine.
9. From the Value list, select CustTrackerOrders01- Order Query for Customer Tracker:
OrderDtl_OrderLine. This second entry filters the data based on the order line.
11. Notice the Shipment Details grid icon now displays a satellite icon with an arrow pointing down in the
Tree View of the dashboard. This indicates this grid view is subscribing to published information.
12. The EPIC03CustTrackerOrders01 query icon also displays a satellite icon in the Tree View, except this
icon shows an arrow pointing up. This indicates that information is being published out of this query.
Use a Dashboard Browse to add a standard search button on the dashboard along with the Navigation toolbar.
The standard search button (indicated by a binoculars icon) enables users to start a search for records within a
dashboard. Users leverage the Navigation toolbar to scroll through selected records, or select a specific record
from a drop-down list of search results.
The Dashboard Browse is added to the query level of a dashboard using a special filter on the query. You must
also determine for which field you are using the search. For example, you can use the Part Number field in the
Part master file.
Similar to an Advanced Search (tracker view), use the Dashboard Browse to select specific records to display in
the dashboard. In this example, you add a Dashboard Browse to the EPIC03CustTrackerOrders01 query.
1. In the Tree View, right-click the EPIC03-CustTrackerOrders01 icon and select Properties.
3. From the ColumnName list, select the field you want to search by. In this example, you want to enable the
search by sales order number so you select OrderHed_OrderNum.
5. From the Value list, select Dashboard Browse. This option displays at the bottom of the list of values.
The Dashboard Browse Properties window displays.
6. The value in the Browse Label field displays in the navigation tools area in the toolbar. In this example,
Order: is the default label that displays; however, you can change this if you want.
7. Select the column that you want to display in the Display Column field. The values in the column selected
display in the drop-down list of the navigation tools area. In this example, OrderNum is the default value
that causes the order numbers to display for browsing.
8. Select the columns you want to display in the drop-down list of the Navigation toolbar from the Drop
Down Columns list. In this example, select OrderNum and CustomerName.
9. Click the White Arrow button to move them into the selected columns list.
10. Select the Primary Browse check box. By selecting this option, the Dashboard Browse is placed on the
toolbar of the dashboard as the primary search mechanism.
11. Select the Manage Widths check box. Click the drop-down list to select the display option you want to
use to manage the width of the dashboard browse. By default, it automatically formats to the width of the
data.
14. Notice the Dashboard Browse displays on the toolbar of the dashboard, so you can find and select specific
orders using the standard Sales Order Search window.
15. Click the Binoculars button on the Dashboard Browse to launch the Sales Order Search.
16. From the Search window, select the records to display in the dashboard browse.
The Dashboard User Notes and Tech Notes are areas where you can store specific documentation or notes about
the current dashboard. While you are in Developer Mode, you can update both User Notes and Tech Notes. Users
who do not have Dashboard Designer privileges can only maintain the User Notes, but can still view the Tech
Notes.
1. To open the Dashboard Notes window, click the Notes icon on the Standard toolbar.
2. Enter User Notes. User notes are visible only to the specific user who entered them.
3. Enter technical notes in the Tech Notes field. All users can view the notes you enter here.
Dashboard Properties
Just like each view on the dashboard contains unique properties, the dashboard itself has its own properties
where you can define the additional characteristics about the dashboard.
Located on the General sheet of the dashboard, you can use the Title Bar Subscribers to publish more than one
field to the title bar of the dashboard. This feature is available when yu have multiple queries publishing
information, and you want to indicate the various queries that are used on the dashboard.
You can also make the dashboard available as an Advanced Search so that users can access this dashboard from
a standard search window. The Advanced Search functionality is designed around the concept of “Like” fields.
Similar to the “Like” fields used in a BAQ Search, the Advanced Search also uses “Like” fields; however, the data
displays as a dashboard and opens in a separate window on your workstation. You can then use the dashboard
to search for specific data, select a record, and retrieve the record back to the original program from which you
were searching.
In this example, you will use the Customer Service Dashboard to publish additional columns from the Customer
Shipments query for display on the Title Bar of the dashboard.
1. In the Tree View, right-click the zCustomerShipments query icon and select Properties.
7. Click OK.
Now as you select an order that has shipment detail, the part number for the line item shipment displays
on the title bar.
8. Notice the Titlebar Subscribers area on the General sheet now displays the newly added ShipDtl_PartNum.
To enable the Customer Service dashboard as an Advanced Search in the Part program:
2. When you select the Include Tree on Dashboard Assembly check box, the application displays a tree
view on the dashboard for your users to navigate. The nodes of the Tree View display the primary query
data published from the dashboard.
5. From the Available “Like” columns list, select OrderHed.OrderNum. The key fields of your dashboard
display in this list; use them to search throughout several programs in the application.
6. Click the White Arrow button to move it to the Advanced Search “Like” columns list. When fields in
your query are selected as “Like” Columns and the same field is used for searching in various system
programs, the dashboard displays as a search option in the programs search form.
7. From the Available “Like” columns list, select Part.PartNum and click the White Arrow to move it to
the Advanced Search "Like" column list.
The dashboard is now available as an advanced search option anywhere that you can search for sales orders
and/or parts.
Dashboard Modification
Now that you have learned how to create your own dashboard, you can easily modify an existing dashboard. It
is strongly recommended that you first make a copy of the dashboard you want to update, and then save it with
a new name. You can modify a dashboard delivered by Epicor or modify custom dashboards using this same
method. The example below demonstrates how you copy a standard delivered dashboard and save it with a new
name so you can modify it.
Copy a Dashboard
In this example, you open the standard Job Status dashboard and save it with a new name so that you can modify
it.
2. The Dashboard Search Form window displays. Click the Search button and select JobStatus from the
search results.
3. Click OK.
The System Dashboard Warning message displays.
4. Click OK.
6. In the Definition ID, enter a unique identifier for the dashboard. In this example, enter MyJobStatusDbd.
7. Click OK.
You can now modify the dashboard however you want. You can add new queries or columns, apply filters,
or modify the advanced search.
Use the Multi Threaded Save functionality when you want multiple rows to update through a series of threads.
This functionality improves performance when you have a large amount of data to update. If you activated multi
threading or you wish to save the records through this process, you need to display the Multi Threaded Save
window.
In this example, use the Customer Contact Update dashboard created in the Updatable Dashboards section.
To access this functionality on the updatable dashboard:
1. Click the Down Arrow next to the Save button and select the Multi Threaded Save option.
2. The Multi Threaded Save window contains parameters you define. To help you decide what values to
enter in these parameters, review the Records to Update value. This value indicates how many records
you will save through this process.
3. If you want to update records using multiple threads, select the Submit in batches check box. You can
now define how many batches, or threads, you wish to use to save the data.
4. In the Submission batch size field, enter the number of records you will save in one thread. When you
save the data, these records all process at the same time.
5. In the Submission threads field, enter the number of threads you will use to process the data. You can
enter up to 10 threads.
6. Click Start.
7. The Processing Statistics section now displays the progress of the Multi Threaded Save. As records are
saved to the database, the values in the Records Processed and Percent Complete fields increase. These
fields also report any errors that occurred as well as the process performance times.
Use these values to determine the optimal performance for multi threading. If you update large amounts
of data, modify the Submission batch size and Submission threads values each time you run this process to
discover the combination that gives you the best performance.
8. Click Close.
Reusing Views
You can use the Publish Views functionality to publish views from one dashboard and make them available for
reuse on another dashboard. The view then displays in the Available Views panel on any dashboard, and you or
other users can select this view for display on a different dashboard. This feature gives you a convenient way to
display any view for reuse on another dashboard.
In the following example, you will publish the Customer List view from the Customer Contact Update dashboard
created previously in this chapter within the Updatable Dashboards section. You will then open the Opportunity
Quote Status dashboard and add this view to it.
1. In the Tree View, right-click the Customer List grid and select Publish View.
You can also publish a view from within the Dashboard View Properties window of any view by selecting
the Publish View check box.
2. In the Published View Properties window, view the Dashboard Caption field that displays the source
of the view.
3. In the Published Caption field, enter a name that will display in the list of Published Views.
4. In the Group field, enter or select a name of the group you would like to link to a published view.
6. Click OK.
7. To display the Available View panel, from the View menu, select Published Views.
8. The Available Views panel displays the list of all published views at the bottom of the Tree View.
9. If you want to un-publish a view, right-click the view in the Tree View and select Un-Publish View. In this
example, leave the view published.
11. To clear the dashboard, click the Close All button on the Standard toolbar.
13. You return to the Dashboard program. You can now reuse this view on another dashboard. In this example,
reuse it on the Opportunity/Quote Status dashboard.
In the Definition ID field, enter Opportunity/QuoteSts to open the Opportunity Quote Status
Dashboard. This record is a copy of the standard system Quote Status dashboard.
14. Click Refresh to run the query and populate the dashboard data.
15. Notice the Available Views panel displays the previously published Customers List view.
16. To add the published view to the current dashboard, select the view from the Available Views panel and
click Load Published View.
17. Now synchronize the information between views. Do this by publishing the Customer Number from the
zQuoteStatus query and subscribe to the value using the Customer List view.
In the Tree View, right-click the zQuoteStatus query icon and select Properties.
18. In the Dashboard Query Properties window, navigate to the Publish sheet.
21. Change the Customer List view to subscribe to the value of the Customer Number published from the
zQuoteStatus query.
In the Tree View, right-click the zCustomer01 query icon and select Properties.
27. The dashboard now displays the Customer List grid view. This view subscribes to the value of the customer
number on the selected quote. You are now re-purposing this view for display within a different dashboard.
The application contains several tools you can use to create, globally modify, deploy, and manage dashboards. The
Dashboard Utilities chapter explores each available tool. If you need to heavily customize a dashboard, you should
leverage these important utilities. You use these utilities to manage both smart client dashboards and mobile device
dashboards.
The utilities are organized into the following categories in this chapter:
• Export and Import Dashboards
• Build and Deploy a Dashboard to the Main Menu
• Create and Deploy Mobile Device Dashboards
• Dashboard URL Query Phrase Subscribers
• Epicor SharePoint Publisher
You can export dashboards from your Epicor application. These dashboards are then stored as an archive on your
personal directory. You can then import them back into any database when you need.
Export
Two export options are available:
• Export Dashboard Definition – This option exports the dashboard to a specified location as a .dbd file. This
file includes all the views, properties, and layouts that you defined in the dashboard.
• Export Dashboard and BAQs – This option exports the dashboard definition and all the queries used on
the dashboard. This option is useful when you have created your own queries and you do not want to copy
the queries separately to another database or company.
In this example, export a copy of the Customer Service dashboard (created in the previous chapter) along with
the business activity queries used to display its data.
2. Notice the Export Dashboard Definition window defaults to the Export folder on your local machine.
5. Click Save.
Import
When you export a dashboard, you can import it into the application with the Import Dashboard Definition
option.
To import the Customer Service dashboard into the application:
2. Notice the Import Dashboard Definition window defaults to the Export folder on the local machine.
4. Click Open.
The Rename Dashboard Definition window displays.
6. Click OK.
7. To replace an existing query with the imported query, select the Replace existing check box for a selected
query.
8. If you do not want to replace an existing query with the imported query, clear the Replace existing check
box and enter an ID in the New BAQ ID field. Be sure the BAQ ID conforms to the custom query naming
conventions as described in the Business Activity Queries chapter.
9. Click OK.
After you finish designing a dashboard, you need to both build and deploy it to your users. You use the Application
Builder process to compile the dashboard definition into a UI finished assembly and then deploy it to the server.
When the dashboard definition is compiled, you deploy it to the Main Menu and the Favorites Bar where users
can access it. You can then customize and personalize the dashboard as described within the Epicor ICE User
Experience and Customization Guide.
3. View the compiled assembly you will deploy to end users. Typically, you test the dashboard functionality
and then close the test dashboard.
4. The results of the Test Application now display in the Deploy Dashboard window.
5. Select the Deploy Smart Client Application check box if you want the dashboard to display as a program
on the Main Menu within smart client installations.
6. Select the Add Menu Tab check box if you want the dashboard to display as a separate tab on the Main
Menu.
7. To add the dashboard as an option to the Favorites menu, select the Add Favorite Item check box.
8. If you want this dashboard available from Epicor Web Access, select the Generate Web Form check box.
9. To generate the dashboard for use on a mobile device, select the Generate Mobile Application and
Available for Mobile Menu check boxes. These check boxes are only available if the dashboard is designed
as a Mobile Device Dashboard.
11. Notice the Application Builder message displays the location where the .dll file is deployed on the server.
Once you deployed the dashboard, other users may use it.
Here's how other users can access the dashboard you created:
1. When you use the ERP application using the Classic Style click the Favorites bar on the Main Menu.
2. It contains a Favorites Group called Dashboard Assemblies. Since you deployed the dashboard as the
Favorite item, notice the Customer Service Dashboard now displays as an icon you can select and launch
from within this group.
3. Also, in the Classic Style, the Menu Tab on the Main Menu now contains the Customer Service Dashboard.
The dashboard displays when you select the tab.
4. When you use the ERP application using the Modern Shell style, the dashboard displays as a tile within the
Dashboard Assemblies Favorites group on the Home page.
5. In the Classic Style, you can quickly add the dashboard to the menu using the drag and drop functionality.
You first select the folder on the Main Menu where you want the dashboard to deploy. In this example, you
navigate to: Sales Management > Order Management > General Operations
6. To add the dashboard assembly to the menu, from the Options menu, select Developer Mode.
7. Right-click the Customer Service Dashboard on the Favorites Bar and drag it to the selected menu
location.
8. Click OK to confirm you want to copy the item to the Main Menu.
9. Now the dashboard is available to all users who have security access to the selected menu.
The Epicor Mobile Access module supports access to mobile dashboards. Mobile dashboards are generated as
web applications that run on a number of mobile browsers including the BlackBerry® and iPhone™ devices. By
utilizing updatable business activity queries (BAQs) and the Mobile Dashboard functionality, you can create custom
data entry mobile web pages that users can access and update data directly from their phones and other mobile
devices.
2. On the Options sheet, select the Allow Mobile Access check box.
1. Click the Definition ID button to find and select the dashboard you want to target for use on a mobile
device. In this example, select ABC_CustContUpdate.
4. Click OK.
5. A warning message alerts you that certain features of the dashboard are not supported on mobile devices.
Click OK.
6. A new dashboard definition is created for the mobile version of the dashboard. In this example, the new
Definition ID is ABC_CustContUpdate_m.
7. Notice the Target Mobile Device check box is now selected. This indicates the dashboard will display on
a mobile device interface.
8. Use the Mobile Navigation sheet to define how to navigate between the views on the mobile device
dashboard.
9. Use the Mobile sheet to test how the dashboard data displays on the mobile device.
Both the Mobile Navigation and Mobile sheets are discussed in the next sections.
2. Flows are automatically defined when the mobile dashboard generates, but you can change the order to
create the flow you want. In this example, the Customer List grid displays first when the dashboard opens
on a mobile device. The Customer Contacts grid is the next view that displays; it contains the contacts linked
to the selected customer.
3. Navigate to the Mobile Navigation > Jumps sheet to define which view users can immediately display, or
jump to, from each view. These views display as available options in a drop-down list from your mobile
device. For example, from the Customer List view, users can quickly display the Customer Contacts list for
that customer, and also the Advanced Search view. Jumps are helpful when a dashboard has many views
and you need to set up several ways for users to navigate around the mobile device dashboard.
4. As you select different Jump names, you can define the Jump to Page for each view. In this example, select
Grid: Customer Contacts. The Available Jump Pages display.
6. Click the Right White Arrow to add the option to the Jump To Page list.
7. In this example, the Advanced Search view is now available from the Customer Contacts grid view.
8. Navigate to the Mobile sheet to see how the dashboard displays on a mobile device.
11. Select a customer from the list. In this example, select Ace Molding.
12. Click the Right Blue Arrow to see the next view defined on the Flow sheet.
13. In this example, you now see the Contact List for the Ace Molding customer as this customer was selected
in the previous Customer List view.
2. In the Deploy Dashboard window, select the Generate Mobile Application check box. This check box
indicates you want to create a mobile device application from the current dashboard.
3. Select the Available for Mobile Menu check box. This check box indicates you want users to navigate to
this mobile device dashboard from the mobile device menu.
4. Click Deploy.
5. When the process finishes generating the mobile device dashboard, click OK and close the dashboard.
1. Notice the Mobile Menu in the tree view displays the Customer Contact Update mobile dashboard you
just deployed.
2. The deployment process created all the required fields for the new mobile menu option.
3. Use the Security sheet to define security and user access to the mobile dashboard.
1. Open the Epicor Mobile Access application on your mobile device and enter your User ID and Password.
2. Click Login.
3. The Main Menu displays the Mobile Menu and System options.
2. The Records in Page field controls the number of records that display on a page.
When the mobile dashboard runs, you will use the navigation buttons to display another set of records.
3. The Client Pages field controls how many pages should be cached on the client (browser).
For example, if you set up a grid to display 5 records, you can specify a number of pages to be cached; for
example, 3. This means 5 records will be displayed and two more pages - total of 10 records will be cached
on the local client.
4. The Editing in grid check box controls if editing is allowed directly in a grid.
You can use this check box to disable automatic keyboard pop-ups, each time you touch a mobile grid.
5. To display mobile dashboards not yet made available for users by placing the dashboard on the Mobile
Menu, select the Non published menu check box.
When you are working on a mobile dashboard in a smart client, you have an option not to place it on the
Mobile Menu and make it available for EMA users until you finish designing the dashboard. To do this, on
the Deploy Dashboard screen, leave the Available for Mobile Menu check box clear. To view and test
this dashboard in Epicor Mobile Access, select the Non published menu check box.
6. To display a red mark next to all required fields, select the Display Required Indicator check box. This
indicator displays either on a column header within a grid or next to a field label within a dashboard tracker.
7. If you wish to display icons next to Main Menu items, select the Menu Icons check box.
8. In mobile dashboards, you have an option to override a default width of a screen by entering a value in the
Default Width Override field. If you leave this field blank, the default value defined for a detected mobile
device is used.
9. To override a default width of entry controls used in a mobile dashboard, enter a value in the Control Width
Override field.
If you leave this field blank, the default width of controls defined for a detected mobile device is used.
10. From the Theme list, you can select one of the available themes for the detected mobile device or style you
select.
You can add new themes or alter existing ones using the Theming menu option.
11. The Style field populates automatically based on a detected mobile device and defines mobile dashboard
parameters such as screen width or set of available themes.
Select Company
On the System menu, you have an option to select a company for which you want to display the mobile
dashboards.
To select a company:
4. The Mobile Menu option now displays the mobile dashboards available for the selected company and site.
Change Language
Within your Epicor application, you can add or update languages used to display text in windows, menus or
messages. In Epicor Mobile Access, you can access the same set of languages you define in the source Epicor
application.
To change the language in your EMA environment:
3. Click Done.
For more information, review the Language Maintenance topics within the Epicor ICE 3 User Experience
and Customization Guide.
Change Appearance
Epicor Mobile Access comes with the list of predefined themes you can use on your mobiles. Themes are a way
to customize predefined appearance according to your taste and preferences.
To create a new theme or change the existing one:
2. Select a predefined Style that controls the appearance of Epicor Mobile Access on your mobile device.
3. If you want to modify an existing theme, from the list, select an available Theme.
5. Now select the View Mode you want to use to modify a theme.
6. The Normal View Mode option displays all mobile dashboard elements along with the color assigned to
them.
For example, to change the background color of the body element, first select a Style and a Theme you
would like to use on a mobile device. From the Colors list, select an available color you would like to apply
to the element, for example, Red. Within the element grid, locate the body element and next to the
background-color field, click the left arrow button to apply the selected color.
7. The Group By Colors option displays the list of colors currently used on mobile dashboard elements for
the selected style and theme.
For example, you can change the color of all elements that currently display in red. From the Colors list,
select the color you would like to use instead of red, for example, GreenYellow. Within the list of colors,
locate the Red color and click the left arrow button to apply the GreenYellow color you selected.
8. The Text option displays the selected theme in a CSS style sheet format.
The cached information is now removed from the browser and the EMA menu is refreshed.
3. Click Refresh to retrieve the data for the Customer List on the dashboard. The Flows and Jumps defined
in the Dashboard program control the order in which the forms are loaded.
5. Click View.
6. The details for customer Ace Molding display. Since the customer query on this dashboard is not an updatable
query, these fields are not updatable.
11. To update and edit the contacts for this customer, click Edit.
12. To enter a new contact for customer Ace Molding, click the New button.
15. The EPIC06-UpdCustContacts: Summary view now displays the new contact record you entered.
You can set up a dashboard with a URL view that uses a phrase subscriber with a replacement value, or token.
This token pulls a value from a publisher and substitutes it within the query phrase for the subscriber. As records
are selected within a query view on a dashboard, this token updates with a value linked to the selected record.
The subscribing phrase then updates the URL view with the specific item linked to this record.
First, you create a new dashboard. To supply the part information, use the delivered zPartTracker01 query.
To create a new dashboard:
1. Click the Down Arrow next to the New button and select New Dashboard.
4. To define the query for the dashboard, click the Down Arrow next to the New button; select New Query.
8. To publish all the part records, select the Part_PartNum check box.
9. Click OK.
You return to the dashboard.
For this example, you will create a URL query phrase that links a part record to a specific image file. This image
file then displays within the dashboard. In order for this token to work correctly, you must have a series of graphic
files saved on your workstation or in another location your Epicor application can access.
To add the URL view:
3. Enter a Caption for the URL view. In this example, enter My Part Image.
4. Now enter the URL/XSLT Address you need. Since your images are stored on your hard drive, you can click
the Ellipsis button to find and select the location. You can also enter the path directly. In this example,
you enter: C:\DL\zone\[MyPart].png
Notice you create a token in this address path. The [MyPart].png indicates this is a value you will update
from your publishing query. In this case, you want to update this value with the Part Number value, as all
of your graphic files within your image library use the Part Number value to identify each graphic file.
5. Define the query phrase subscriber. For this example, you need to create a subscriber that captures the Part
Number value from the publishing query and updates the subscribing token value. Navigate to the Query
Phrase Subscribers grid.
6. Click New.
7. Click the Publisher list and select the published field you defined on the query view. For this example, select
the Part_PartNum field.
8. Enter the Token this publisher will update. In this example, enter [MyPart].
9. Click OK.
You can now see this query phrase subscriber in action.
12. Notice the part image displays within the URL view.
14. Notice a new part image displays within the URL pane.
Use the Epicor SharePoint Publisher functionality to display dashboards in the Microsoft® SharePoint® environment.
You leverage web dashboards to create SharePoint web parts that directly link to business activity queries (BAQs).
Web parts are integrated sets of controls for creating web sites you can use to directly modify, within a web
browser, the content, appearance, and behavior of web pages. All dashboard web parts directly access the Epicor
application server, so no web services or other intermediate layers are required to run web dashboards.
SharePoint web parts contain nearly the same functionality as Epicor dashboards. The data initially pulled into
the dashboard can be refreshed as needed. The Grid views contain both Order By and Group By functionality.
Web dashboards support publish and subscribe between views, so data within a grid view can update data with
a linked chart view. Web dashboards also link to the Performance Canvas for embedded Epicor EPM functionality.
® ®
To use ESP, Microsoft SharePoint 2007, 2010, or 2013
(preferred) must be installed and operational in your
environment. To create a link between the Epicor application
and Microsoft SharePoint, Epicor SharePoint Publisher must be
installed on the server.
The following sections describe how to create and modify a web dashboard on a Microsoft SharePoint 2013 site.
4. From the Files menu, select New Document and then Web Part Page.
6. In the Choose a Layout Template box, select an appropriate template for the new web page. In this
example, add five web parts using the Header, Footer, 3 columns template.
7. Select the Document Library where you want to save the Web Part Page.
1. Based on the template you select, navigate to a section of the dashboard you want to modify and click Add
a Web Part.
3. From the Web Parts list, select a view type. You can select the following dashboard web parts to display
on a web page:
• Epicor Publisher Chart View – Chart Views display query results through graphs and charts. Use this
graphical tool to quickly display and understand large quantities of data directly on a web dashboard.
• Epicor Publisher Gauge View - Gauge graphic acts as a visual indicator that updates, when selected
data changes within the query it monitors.
• Epicor Publisher Grid View – A grid view is the default view for every query you add to a dashboard.
Use this view to utilize a single-click dashboard deployment. This process is discussed later in this chapter.
• Epicor Publisher Top Navigator (Dashboard Browse) - While creating a dashboard in a smart client,
use the Dashboard Browse functionality to add a standard search button and a Navigation toolbar to
the current dashboard. You may use the same option on a web dashboard by selecting this web part.
• Epicor Publisher Tracker View – In dashboards, Tracker Views are primarily used to create an Advanced
Search. In a smart client, you have the possibility to customize the interface of a Tracker View. Epicor
SharePoint Publisher supports displaying of customized Tracker Views, so any modification you create
in a smart client will also display in a SharePoint environment.
• Epicor Publisher URL/XSLT View – Use this web part to display a website or an XSLT Style sheet on a
web dashboard.
4. From the Add part to drop-down list, select a section where the selected web part is placed.
7. The Sharepoint Publisher Grid View window displays at the top of the web part page. The following
example shows you how to set up a grid view. These same steps apply to all other dashboard view types.
8. In the ICE 3 Server field, verify and, if needed, update your application server address and port number.
If you do not know this information, contact your System Administrator.
9. If you want, select the Enable «Single Sign-On» check box. Single Sign-On (SSO) functionality simplifies
logging in to the web dashboard. When this property is active, a user only needs to log in to the application
once; this user can then access all the available functions without having to log into each one of them.
10. Optionally, select the Require credentials check box to ask a user for credentials once a new session is
opened.
11. In the EPICOR Login / Password fields, enter the appropriate credentials. These values are used to launch
the Epicor application. If the Single Sign-On feature is enabled, these fields do not display.
14. From the Dashboard to display drop-down list, select a dashboard. In this example, select
ABC_CustContUpdate.
16. The available dashboard views display below the selected query. Select the check box next to the view you
want to display on your web dashboard.
In this example, move the Customer Contacts view from the Header section to the Left Column section
of the SharePoint page.
2. Use the drag and drop functionality to move the view to a different section.
The Customer Contacts view now displays in the Left Column section.
1. In the web part box, from the drop-down list in the top right corner, select Edit Web Part.
2. If you want to use the paging functionality, expand the Grid settings node. In many situations, the paging
feature improves performance. This functionality stores result sets, or pages, in a temporary directory on
the server. You define how many records are included in each page. After the cached pages are stored in
this directory, the data request process can then move through each page instead of processing all of this
information at once.
3. To activate this functionality, select the Use paged render of grid check box. Enter how many Records
per page you want to store on the server. This value defines how many records are saved together in one
page (result set).
4. You can also control if data displays in a grid on startup using the Fill grid with data on initial
render option. When you add a grid that contains a lot of data, disable this option and use the filter to only
display data you need.
5. You can also manipulate the appearance of the grid by using several Grid Skins.
6. If you want to group related records through a specific column, click More Settings and select the field
you want to use within the Group results by field.
8. In the top left corner, click Stop Editing to switch to a standard view.
Web Dasher
Use the Web Dasher utility to manipulate SharePoint web parts. Leverage this tool to re-target web parts to a
different server or port or to change user credentials and so on. This tool is included as part of the Epicor SharePoint
Publisher installation.
1. From the Start menu, select All Programs > Epicor Software > Epicor Administrative Tools.
2. In the Sharepoint field, enter your Microsoft SharePoint website address. For example:
http://<yourservername>:<your port number>
4. Notice the Tree View displays all available pages within the Epicor Publisher web parts. Use the Tree View
to select pages or web parts you want to modify.
5. If you need to change the application server name, select the check box next to the App Server field.
7. If you want to change the Company assigned to the web part, enter a different company in this field.
8. To always require credentials when accessing a page or specific web part, select the Require
credentials check box.
9. You can also modify the Login / Password required to launch this web part.
10. If you need to change the Epicor Web Access (EWA) address, enter a new value in the EWA field.
Use the Executive Dashboard functionality to display real-time, complex views of data. You can use this toolset to create
virtual tables that combine, or aggregate, information for quick retrieval and display. For example, this functionality is
ideal for viewing sales first by month (a monthly bucket) and then by customer. You could create a Business Activity
Query (BAQ) that gathers every order detail record for each customer; this creates a single sum of the calculated revenue
– like 50. Through an executive dashboard, however, you can immediately display both the customer information and
the revenue by month. This information is retrieved significantly faster as through the standard BAQ functionality.
You do this by creating executive queries. You use these records to create virtual cube tables that consolidate the
information. Each cube table uses a dimension pair to both pull and then combine the data. You then display the
results in a dashboard. Using another example, you need to look at revenue from a project that includes both field
service sales and product sales. By using cube tables, you can populate an executive dashboard’s data by running both
queries, one after the other, to first consolidate and then view the final revenue numbers.
When you measure this data through executive queries, you can get a global representation of nearly every aspect of
your organization’s current business flow. This chapter walks you through how to create an executive dashboard and
then release it to your users. Note this chapter builds on previous tools explored in the Business Activity Queries,
Dashboards, and Dashboard Utilities chapters, and in the Automatic Data Processing chapter in the Implementation
User Guide. You may want to review these chapters before you begin.
ShopVision Module
If your company uses the ShopVision module, you already have several executive dashboards available for review.
Use this module to display strategic data required for critical short-term and long-term decision making. The data
displays in a dynamic graphic tool that allows you to sort, group, and view data in a variety of graphic formats
such as a pie chart, bar chart, or line chart. Use the ShopVision dashboards as examples for building your own
executive dashboards.
The following is the list of available ShopVision dashboards along with suggested refresh intervals:
Like most of the custom query tools within the application, the core data processing tool for an executive
dashboard is the Business Activity Query (BAQ). These queries can both pull specific data to view and run custom
calculations on the data before it displays. To learn how to create BAQs, review Chapter 4: Business Activity
Queries.
You create executive dashboards by using BAQs that populate the Ice.SysCube tables with data defined through
an additional query linked to the BAQ – the executive query. These executive queries read the aggregated (or
combined) data through multiple Field Maps that measure the data through two selected dimensions. You use
the Dimension IDs on each field map to display data on the dashboard.
Executive queries must be assigned to process sets you either schedule or manually run; the process set is a series
of tasks that execute when it is launched. If you automatically schedule the process set, you use the Schedule
Process Set program to link the process set to an automatic schedule. You create the automatic schedules your
application uses through System Agent Maintenance.
When the executive query runs, the executive dashboard updates its data to display current information.
This flow chart shows you the process that occurs within the application:
1. The Business Activity Query (BAQ) first pulls the data from the database (DB).
2. The data is then processed through the Executive Query (EQuery). The query aggregates (combines) the
dimension data defined within its field mapping.
3. These dimension results are then saved to the database into the following tables:
• cube (Ice.SysCube)
• definition (Ice.SysCubeDef)
• dimension (Ice.SysCubeDim)
4. The dimension results are then queried using another BAQ. The results of the dimension data BAQ can be
used to filter against the current data. This data contains the values pulled when the last scheduled query
was run against the database. Note that if you do not run regular, frequently scheduled queries against this
database, however, it could result in out of date data results.
5. This second set of BAQs that pulls the results from the Ice.SysCube tables is used within the executive
dashboard. The final executive query data then populates the panels for display within the executive
dashboard.
Before you begin creating your own executive dashboards, you must first set up a schedule and a process set.
Then you create multiple Business Activity Queries. A minimum of five BAQs are required to both populate data
within the executive queries and then display this data on your executive dashboard. This section describes how
you create all of these base components.
Schedules
Recurring schedules are created through System Agent Maintenance. This program defines the system agent,
which is a file that controls all automatic transactions that occur throughout your Epicor application. Within the
system agent, you create schedules that occur during specific intervals – hours, days, weeks, or months.
You later link executive queries to an automatic schedule. The system agent monitors the system clock, activating
automatic schedules based on the current state of the clock. When the system agent activates a schedule, the
executive queries run.
In the example used in this chapter, the Daily Task Schedule is selected, indicating this executive query is run
once every work day. It may be set up as follows:
You need to create a minimum of five BAQs to populate data within an executive dashboard. The following is a
brief description of each BAQ you need and what it does:
1. BAQ Against Data Details – Defines the base BAQ used to pull the data from the database. This chapter
uses the SalesOrderBacklog query as an example for a base business activity query.
2. BAQ Against Data Dimensions – You run this BAQ to define the dimensions used against the data, like
Country, Salesperson, and so on. You set up this BAQ within the Create Dimension BAQ and Executive
Query section later in this chapter.
3. Dimension BAQ – This BAQ pulls the dimension data from the first executive query. You set up this BAQ
within the Dimension BAQ section later in this chapter.
4. Dimension Details BAQ – This BAQ defines the dimension options that users can select from the executive
dashboard. You learn how to create this BAQ within the Dimension Details BAQ section later in this
chapter.
5. Data BAQ – This BAQ pulls the data from the first executive query. It locates the Ice.SysCube data that then
displays on the executive dashboard. You review an example of this BAQ within the Data BAQ section later
in this chapter.
The primary task you must do before you create an executive dashboard is plan ahead. First, define what data
you want to aggregate and display. Then as you begin creating your executive dashboard, start from the basic
components and work your way forward up to the final executive dashboard display. This reduces development
time and helps you precisely display the data you want.
1. Create one BAQ to be the source for the main executive query. This defines the cube table data that displays
in the executive dashboard.
2. Define the executive query and the dimension pairs you need by using this source BAQ. Add this executive
query to a process set.
3. Create a second BAQ that gathers the dimension fields and data that is combined with data from the first
executive query.
4. Next, create a second executive query that aggregates the dimensions from this second BAQ; this gives you
a unique list of the dimension data. Add this second executive query to the process set.
5. Run this process set immediately to populate both executive query Ice.SysCube tables with data. You need
this data to complete the development process. Be sure to define the automatic schedule during which you
want this process set to run.
6. Create the BAQs you need to display the executive query information on the dashboard. You create at least
three BAQs – one for the main Ice.SysCube data, another for the dimension IDs (field names), and a third
for the dimension details.
8. Add the queries, grid views, and chart views that display these BAQs on the new dashboard.
Your executive dashboard is now ready to use. The rest of this chapter gives you details about all of the above
steps.
During this example, you use the SalesOrderBacklog BAQ as the base query for the custom executive dashboard.
This BAQ displays order backlog data. It displays details of open orders, for example, customer name, territory
region, due dates and product group information.
Executive Query
You use executive queries to create a cube of data gathered for display on the dashboard. This cube data is
contained within the Ice.SysCube tables. You first find and select the BAQ on which you add the executive queries.
You then define the specific fields that you want for the data; these fields populate the Ice.SysCube tables.
Each executive query has one or multiple field maps. Each field map contains one or two dimensions it uses to
evaluate the data. These dimensions can be any column within the selected BAQ; for example Product Group
and Order Date. You can also select calculated fields from the BAQ to generate unique lists.
You must also define each query’s Delete Action method. The query uses this method to refresh its data when
the process set activates it. Lastly, you indicate how this data is to be summarized. It can be summarized by BAQ
or Date; you can also choose not to summarize the data at all.
An executive query defines a set of field map records processed using the BAQs as a source and the Ice.SysCube
tables as the target. If you click Submit from the Executive Query program, the executive query tables listed in
the next section update once. It is suggested you save the executive query to a process set that updates the cubes
according to a schedule.
While you build an executive query, you can save its definition.
You can then retrieve the record to create additional mappings
or perform other modifications.
What It Adds
When a process set runs the executive query, three items are added to the database:
• Ice.SysCube table – This table contains the primary data record created by the executive query. It stores the
dimension pair and all the fields (defined through field mapping sets) aggregated by the executive query.
• Ice.SysDef table – This table contains all the Ice.SysCubeID values. It also contains the dates on which these
identifiers were created.
• Ice.SysDim table – This table contains the unique list of the BAQ data dimension fields mapped within the
executive query. Both the Dimension One and Dimension Two data field values are stored within this table;
because of this, you must use a filter to select the appropriate dimension list. These items are the values that
display within the Dimension ID panel within the executive dashboard. This contains the unique list of the
Mapped fields like Country, Product Group, Customer, and so on. The data contained within these fields, like
Mexico, France, Machined, Fabricated, ABC Inc., are not contained in this table.
Limitations
Some limits to executive queries:
• You can use any field from the selected BAQ as a dimension on each field map. Only two dimensions, however,
can be stored and analyzed within each field map.
• Dates must always be mapped to Dimension 2. Dimension 2 has special logic you use to both populate and
aggregate dates.
• The executive query only aggregates data as a summary and it does this by totaling numeric values. It populates
character field maps only if the data in that character column is the same for all the records in that dimension
pair. It cannot calculate averages or counts. Counts can only be done by using a business activity query that
contains a calculated numeric field equal to “1”.
• Only one BAQ column can be mapped to a specific data value field. You cannot merge field columns through
an executive query.
• Only the current company’s data can be displayed through the executive query.
• Likewise, these executive query processes cannot be synchronized between multiple companies. These processes
are scheduled internally within the current company.
2. Enter the Cube ID. This value is the identifier for the executive query, so enter a value that identifies the
query’s purpose. As you will create references to this cube later in this chapter, for an easier naming you
can name the cube as Cube1. This value is used to identify this query’s task within a process set. You learn
more about how to add this query to a process set in the Schedule Process Set section later in this chapter.
3. Now click the BAQ ID… button to find and select the Business Activity Query onto which you will add this
query. In this example, you select a copy of the delivered zSVSalesOrderBacklog query used to retrieve sales
order backlog information.
4. The Delete Action indicates the action that runs each time data for the current cube record is refreshed.
Available options:
• Delete Entire Cube – All the data within the executive query for this specific CubeID is both deleted
and refreshed. This option is the default; it clears out all values in the query’s field map sets. This option
then displays completely new data when its information is refreshed. This delete action is typically used
when the executive query is not specific to the current date but is used to evaluate all the data within
the database.
If you run multiple executive queries in a process set for the same CubeID, then you should only use this
option on the first query. Any queries that are run after this query add information to the Ice.SysCube
table used by the executive dashboard.
• Delete Dimension Pair – This option only removes and restores the dimension pairs referenced within
this executive query’s field map records. Any dimension pair not in this executive query is left alone,
leaving the dimension pairs and their data intact in the Ice.SysCube tables contained within this CubeID.
Use this option when two BAQs are needed to populate the Ice.SysCube tables for a single CubeID used
as the source data for an executive dashboard. The executive dashboard pulls all the data from both
queries because the separate BAQs populate a single CubeID using different dimension pairs.
• Delete Nothing – This option does not remove any data. Instead, it adds new data to the existing data.
• Delete Pair By Summarization – This option removes and restores any dimension pair data generated
through the executive query. This option is useful if you select either the Summarize by BAQ or the
Summarize by Date check boxes. These check boxes are described later in this section.
For example, if you accidentally process this executive query twice on a specific Run Date, this delete
option can remove the data records for all the dimension pairs that were run earlier before starting the
second process run. This prevents data from being duplicated, as the executive query was run a second
time during the same date.
5. Select the Summarize by BAQ check box to indicate this executive query combines, or aggregates, the
data it pulls by using the specific BAQ. Select this check box when you want the data to be summarized
within the BAQ before it displays on your executive dashboard.
6. Select the Summarize by Date check box to indicate this executive query combines, or aggregates, the
data it pulls from the BAQ using a specific date. Select this check box when you want the summarized data
to be calculated by dates. Selecting this check box causes the Run Date field to become active; use this
field to define the specific date or calendar date on which this data is summarized.
7. If you select the Summarize by Date option, you next must define the Run Date for the executive query.
You can enter or select (using the drop-down calendar) a specific date. You can also select the Dynamic
check box. This changes the options for the Run Date drop-down list to regular calendar dates like Tomorrow,
Next Tuesday, First of Month, and so on.
8. Use the Schedule drop-down list to define when you want this query to refresh its data. The default value
is Now, indicating that the executive query runs immediately. In this example, the Daily Task Schedule is
selected, indicating this executive query is run once every work day. This schedule was created in the System
Agent; to learn how to do this, read the previous Schedules section.
9. When you select a schedule other than Now, the Recurring check box becomes available. Select this check
box to indicate that this executive query is run repeatedly – using the recurring time defined by the selected
schedule.
10. Now enter a User Description for the executive query. This description displays in the System Monitor
(the system tool that regulates tasks) when this query task is run by the schedule. It helps you verify the
query task was launched by the application. In this example, you will use the cube to analyze sales order
backlog data.
To learn how the System Monitor interacts with executive queries, review the Executive Dashboard in Action
section later in this chapter.
Field Mapping
You next display the Field Mapping sheet to define the Dimension Pair used to measure the executive query’s
data. The data is aggregated against the one or two dimension values you select; the results then display on your
executive dashboard.
You can select any field within the BAQ for the dimension pair values. If you need, you can also leave the second
dimension value blank. This creates a field map that only pulls in data which matches the first dimension value.
Note that executive queries can only summarize (aggregate) data; they cannot create averages. Because of this,
these query results represent a sum of the values between the selected dimension pair. Be sure to select items
that logically aggregate together, like a character column against a date or numerical column.
When the data displays on the dashboard, however, you can display averages by using the grid functionality. For
more information, review the Epicor ICE User Experience and Customization Guide; the Personalization chapter
contains the Enable Show Summaries section.
To define the field mapping for an executive query:
1. After you finish defining the executive query, click the Mapping > Mapping Detail sheet.
2. The Mapping Set field displays the dimension set number for this executive query. You cannot edit this
value; it only displays for your information. If multiple field map sets have been created for the executive
query, the specific mapping set number appears in this field.
3. The Dimension 1 value is the first definition used to measure the BAQ data. A required value, click the
drop-down list to select the BAQ column you want. All the fields within the current BAQ display on this list;
you can even select a calculated field. In this example, the CustID (Customer ID) column is selected.
4. The Dim 1 Text automatically defaults in. You can override this value to indicate what displays on the
executive dashboard as a Dimension Value.
5. Enter the Dim 2 value you will use. An optional value, select the column you want from the drop-down
list. This dimension can be a Date field. You can also select a calculated field here. In this example, the
OrderRel_NeedbyDate field is selected.
6. Similarly to Dimension 1 Text, you could enter a custom value you want to display on the dashboard.
7. Now you can define the fields you want to display through this field map. You can first select the fields that
display Decimal values. All the fields from the selected BAQ appear on this list, so typically you select fields
that display decimal values, or the results may not be what you want. You can display up to 10 decimal
values.
8. Next, select the optional Integer fields (numeric fields that do not use decimals) you want to display in the
executive query. All the fields from the selected BAQ appear on this list, so typically you select fields that
display integer values, or the results may not be what you want. You can display up to five integer values.
9. Lastly, select the optional Character fields (alphanumeric values) you want to display within the executive
query. All the fields from the selected BAQ appear on this list, so typically you select fields that display
character values, or the results may not be what you want. You can display up to 10 character values.
Character fields do not aggregate, but if you use a field that contains the same information on all records
for the dimension pair, it can be useful for the executive query to pull in these results, too.
11. You can continue to add more field maps to the query. To create another mapping, click New.
12. To create multiple mappings at once using a shortcut method, click the Mapping > Mapping List sheet.
13. Use the Field Mapping Sets grid to quickly create the other field maps you need. Highlight the row on the
grid.
14. Right-click the row to display the context menu; select Copy Selection.
15. Then right-click the grid again. A context menu appears; select Paste Insert.
16. A new, identical row displays – which represents a field map. Change the dimensions and display fields you
need in the fields on this grid. Notice that this example has only two Dimension 2 values – NeedByDate and
NeedByDateWeek. The Dimension 1 values are changed, however, to display the different dimensions you
want to use for your cube of data. You could continue entering more Dimension 1 values such as Sales
Territory Region or Product Group code.
If you need, you can also return to the Mapping > Mapping Detail sheet to select the fields you want
displayed through this field map.
17. Continue to add the field maps that you need for the executive query. The tree view on the left displays the
list of all cube mappings. Remember to always save the current mapping record before you click New to
create a new one.
3. From the Process Set drop-down list, select the process set you want. In this example, you select the Sales
Order Backlog Status process set. (You created this new record during the previous Process Set section.)
4. Click OK.
5. To verify the process set now contains your query, navigate to Process Set Maintenance.
Menu Path: System Management > Process Sets > Process Set Maintenance
6. Click the Process Set ID button to find and select the process set you created previously in this chapter.
7. The executive query now displays within the Process Set Tasks grid. It has become a task that this process
set runs based on a schedule it uses.
8. Notice the Move Up and Move Down buttons. If the process set had multiple tasks, you could change
the order in which the tasks are run by selecting a task and then clicking one of these buttons.
Example One
You have two BAQs pulling sales order data from the same tables. These BAQs look similar, but they use conditions
that cause different data results to display. One business activity query pulls in sales orders with today’s date,
while the other business activity query only pulls in open sales orders. This first example also assumes that no
data was present in the CubeID table when the executive query was run.
This table shows you the field maps selected for both BAQs and the data being returned by them:
Field Mapping Dimension Dimension Character 1 Decimal Decimal Run Date ExportID (BAQ
Set 2 1 2 ID)
The BAQ SalesPerson State “QueryType” Order Order The The application
dataor This is a Quantity Value application will populate the
calculated calculated will populate Run Date value.
fields: field. the Run Date
value.
BAQ 1 - John Doe Colorado Backlog 100 5,000 06/01/20XX The identifier (ID)
Salesperson for BAQ 1.
Backlog
BAQ 2 - Daily John Doe Colorado Daily Sales 12 750 06/01/20XX The identifier (ID)
Sales for BAQ 2.
If neither the Summarize by BAQ nor the Summarize by Date check boxes are selected, the following results
display:
Data Results: John Doe Colorado "Blank" 112 5,750 "Blank" "Blank"
Notice the data from both BAQs is aggregated (pulled together) because the dimension pairs are identical. This
happens on all matching dimension pairs between the two business activity queries. If this dimension pair existed
in the Ice.SysCube table, the result would still be a single record that contains this aggregated data.
Now if the Summarize by BAQ check box is selected, the following results display:
Data Results: John Doe Colorado Backlog 100 5,000 06/01/20XX The identifier (ID) for
BAQ 1.
Data Results: John Dow Colorado Daily Sales 12 750 06/01/20XX The identifier (ID) for
BAQ 2.
In this situation, the data from both queries become separate records because the BAQ identifiers were different.
If additional data were within each BAQ, the data from each separated BAQ would first aggregate together. The
results of each BAQs’ aggregated data, however, would display separately.
Next, if the Summarize by Date check box is selected, the following results display:
Data Results: John Doe Colorado "Blank" 112 5,750 "Blank" "Blank"
In this situation, notice the data from both BAQs is aggregated together. Because the dimension pairs were the
same and they both used the same Run Date, they aggregate. This would happen on all the matching dimension
pairs created between the two BAQs.
If existing data were within the Ice.SysCube table from a previous query run, the records display separately because
both query runs use separate Run Date values.
Example Two
You have one BAQ pulling either Open Order or Backlog data for your salespeople. This BAQ was run previously
on 06/01/20XX, so the Ice.SysCube table currently holds data. It is now 06/02/20XX, and you are running this
BAQ again.
This table shows you the field maps selected for the single BAQ and the data returned when it is run:
Field Mapping Dimension Dimension Character 1 Decimal Decimal Run Date ExportID (BAQ ID)
Set 2 1 2
The BAQ SalesPerson State “QueryType” Order Order The If the Summarize by
dataor This is a Quantity Value application BAQ check box is
calculated calculated will populate selected, the Export
fields: field. the Run Date ID value will be
value. populated.
BAQ 1 - John Doe Colorado Backlog 100 5,000 06/01/20XX The identifier (ID) for
Salesperson BAQ 1.
Backlog
BAQ 2 - Daily John Doe Colorado Daily Sales 150 5,250 06/01/20XX The identifier (ID) for
Sales BAQ 1.
If neither the Summarize by BAQ or the Summarize by Date check boxes are selected, the following results display:
Data Results: John Doe Colorado Backlog 205 10,250 "Blank" "Blank"
Notice the data from both query runs is aggregated together because the dimension pairs are the same. This
would happen on all matching dimension pairs run through the executive query; this aggregated data then
populates the Ice.SysCube table.
Now if the Summarize by BAQ check box is selected, the following results display:
Data Results: John Doe Colorado Backlog 100 10,250 "Blank" The identifier (ID) for
BAQ 1.
In this situation, the data from both query runs is aggregated because the dimension pairs are the same and the
business activity query is the same one that was used to populate the data on the previous day.
Next, if the Summarize by Date check box is selected, the following results display:
Data Results: John Doe Colorado Backlog 100 5,000 06/01/20XX "Blank"
Data Results: John Dow Colorado Backlog 105 5,250 06/01/20XX "Blank"
In this situation, the data from both query runs display as separate records because the Run Date values are
different. If the Run Date values for both query runs were the same, however, the Delete Action determines if
the previous record remains to be aggregated with the new data, or if the previous data is deleted.
3. Enter a Description for this BAQ. In this example, you enter Order Backlog Dimension One.
4. Select the Shared check box. This makes the BAQ available to all users within your company.
5. Click the Query Builder > Phrase Build sheet to define the query phrase for the BAQ.
6. Within the list of tables on the left, locate the Ice.SysCube table.
8. With the Ice.SysCube table selected, click the Table Criteria sheet in the lower left side of the BAQ Designer
Window.
11. Tab to the Filter Value and from the filter listing, select specified constant. Once the type of filter has
been declared, you define the required constant. Click the specified link.
12. The Specify a Value window displays. Enter the name of the first executive query you created – in this
example, Cube1.
15. Select the columns you want displayed on the dashboard. Your selection may look similar to the following.
1. Enter the Cube ID you need for this executive query. In this example, enter Cube2.
2. Click the BAQ ID button to find and select the Data Dimensions BAQ you created. In this example, you
select OrderBLogDimension.
3. Select the Delete Action. In this example you select the Delete Entire Cube option.
5. You need only one field Mapping Set for this executive query. Your mapping may look similar to the
following.
8. From the Process Set drop-down list, select the process set that needs to contain this query. In this example,
you select Sales Order Backlog Status.
9. Click OK.
10. To verify the tasks you want are contained within the process set, navigate: Process Set Maintenance:
Executive Analysis > Business Activity Management > Setup > Process Set
11. In Process Set Maintenance, click the Process Set ID button to find and select the process set. In this
example, you select the OrderBackLog set.
12. Notice that both executive queries now display. The process set runs the base cube query first – followed
by the dimension query you just created.
1. From the Process Set drop-down list, select the Sales Order Backlog Status.
2. Now from the Schedule drop-down list, select the Daily Task Schedule. This indicates that the process set
runs its tasks once during each work day.
3. Select the Recurring check box; this indicates that this process set runs each time the system agent activates
this schedule.
Dimension BAQ
To create the Dimension BAQ:
3. Enter a Query ID that you can use to quickly find this BAQ.
5. Click the Query Builder > Phrase Build sheet (not pictured) to construct the query you need.
6. You could create a BAQ pulls all columns from the Ice.SysCubeDim table. The resulting BAQ phrase would
look similar to the following:
select *
from Ice.SysCubeDim as SysCubeDim
where (SysCubeDim.DimNum = 1)
You could define more filtering within this BAQ, but then
you would need to create several filters that do the same
function. Instead, you can define a filter within the
Dashboard Query Properties window that filters the Dim1
query in one location. For example, you could enter:
Ice.SysCubeDim.CubeID =<CubeName>. You could also
use the Query Builder > Display Fields > Column
Select sheet to select specific columns you want to
display.
7. Click Save.
2. Enter a Query ID that you can use to quickly find this BAQ.
4. Click the Query Builder > Phrase Build sheet (not pictured).
5. Build the criterion to pull data from the second executive query to create a unique list of dimension data.
The resulting SQL phrase looks similar to the following:
select *
from Ice.SysCube as SysCube
where (SysCube.CubeID = 'Cube2')
6. Typically, you would use the Query Builder > Phrase Build > Display Fields sheet (not pictured) to select
the fields you want to see on the dashboard.
7. Click Save.
Data BAQ
The Data BAQ pulls the data from the first Executive Query. It locates the SysCube data and displays it on the
Executive Dashboard.
To create the Data BAQ:
2. Enter a Query ID that you can use to quickly find this BAQ.
4. When building the query, make sure to create the criterion that pulls data from the first Executive Query
you created and select columns you want to see through this BAQ. You can also define additional criteria
such as filtering data by date and so on.
5. Click Save.
2. Add the Dimension BAQ query to the dashboard. Its grid view appears; in this example, it displays as the
Dimension ID grid.
3. Add the Dimension Details BAQ to the dashboard. Its grid view appears; in this example, it displays as
the Order Backlog Dim Detail: Summary grid.
4. Add the Data BAQ to this dashboard. Its grid view appears; in this example, it displays as the Order Backlog
Data: Summary grid.
5. You then add the chart views and any other views that you want to present. In this example, you add a
Chart View for the data BAQ (OrderBLogData).
To complete the executive dashboard, you must deploy it to the Main Menu and make it available to users.
The History Tasks sheet displays all the reports, processes, and executive queries recently run on your system.
In this example, the recently processed executive queries display.
To display the System Monitor, you can also click this program's icon on the system tray on the Windows
toolbar. If you need more information about the System Monitor, review Automatic Data Processing in the
Implementation User Guide.
Now that the executive dashboard is complete and its data is being actively refreshed by the application, your
users can launch it to display current data. In the example in this chapter, the sales order backlog information is
provided by the dashboard. This data is updated once every work day, so this executive dashboard always displays
current, accurate data.
The Business Process Management (BPM) module is a set of tools you use to modify and extend application functionality
without touching the source code. At the core of BPM is the directive. A directive defines a custom behaviour specified
in the BPM workflow that can be applied to an operation. Three types of directives are available:
• Method Directives - applied to business object methods.
• Data Directives - applied to database table transactions.
• Updatable BAQ Directives - applied to business activity query methods that can update the database.
Use the BPM tools to add or change application processes when a business object method executes, when a transaction
changes are applied to a table, or when information is retrieved or posted by a business activity query. You do this by
creating directives that can evaluate the data being processed, and perform actions based on this data.
This chapter first explores the base elements of BPM and then explains how you set up the BPM module. The chapter
next describes all the tools in detail – including the BPM Workflow elements you can use to define conditions and
actions available for directives. The chapter concludes with a series of case studies you can use as a guide for your own
BPM directives. Subsequent chapters explain custom BPM processing and BPM utilities.
User Maintenance
Two levels of BPM functionality are available – a base level and an advanced level. All users who have menu
access to BPM can use the base level of BPM functionality to create holds and directives containing pre-built
actions. Users with access to the advanced BPM functions can use the entire BPM toolset. These users can also
create method directives that run in place of the base methods; however users should work with Epicor or a
partner organization before replacing a base method.
You give specific user rights to the advanced BPM features through User Account Maintenance. These rights are
assigned on the Options sheet.
Navigate to User Account Maintenance.
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
3. In the Tools Options section, select the BPM Advanced User check box.
This user can now use the advanced BPM functions that include the following:
• Create programming actions using the Programming Interface Generator Form
• Create and edit Base Processing directives
Directive Scope
The directive's scope defines in what conditions the directive may fire and affects the ability of users to view,
create or modify the directive.
The below tables displays how each directive scope is treated based on the license used in your Epicor ERP
installation.
Company
Independent • Visible to any BPM user. • Visible to any BPM user in the tenancy the
• Creation allowed to any BPM user. directive's owning company belongs to.
• Change of the existing directive's scope • Creation allowed to any BPM user.
(Company Specific -> Company • Change of the existing directive's scope
Independent and vice versa) available to (Company Specific -> Company Independent and
any BPM user logged in to the owning vice versa) available to any BPM user logged in
company. to the owning company.
• Read & Write access available to any • Read & Write access available to any BPM user
BPM user logged in to the owning logged in to the owning company.
company. • Read-only access for any BPM users logged in to
• Read-only access for any BPM users another company than owning, but belonging
logged in to another company than to the same tenancy as the directives's owning
owning. company.
Tenant
Independent • If present in the regular installation • Only visible to users with Global Security Manager
database, they are treated the same way rights logged in to any of the companies on the
as Company Independent directives. site.
• Read & Write access available to a Global Security
Manager logged in to the owning company.
• Read-only access for a Global Security Manager
logged in to another company than owning.
Holds
A Hold is a flag you place on a record; it indicates the record should not be processed until it is reviewed and
approved. A hold by itself does not perform any actions. You define the actions by creating directives which
define how the application handles a record that has a hold placed on it. A hold can be attached to a record in
two ways:
• Manually – You can manually attach a hold onto a field by using the BPM Holds program. You do this by
launching the BPM Holds program from the field’s context menu. This adds the hold to the record. To use
this functionality, holds must be first defined within Hold Type Maintenance; this program is explored in the
next section.
• Programmatically – A hold can also be attached to a record using a directive action. It can be attached
before, during, or after the business process is run. Typically you use holds to interrupt the processing of the
business object. This hold can then cause custom actions you define for the directive to run. You use Method
Directive Maintenance or Data Directive Maintenance to create these directives. These programs are explained
later in this chapter.
2. Enter the Hold Type for the hold. This value is a short name that, along with the business object, identifies
the hold type. In this example, Sales Order is entered as the Hold Type name.
3. Click the Business object button to find and select the business object on which you want to attach the
hold. In this example, you select the SalesOrder business object.
4. The System Code field displays the part of the system the Business Object belongs to. Epicor Business
Objects either belong to the application system (ERP) or the tools system (ICE).
5. Enter a Description for the hold that further identifies its purpose. An optional value, use this field to add
more details to help identify the hold.
6. The History Length field defines how many records appear on the Hold Usage History sheet. When the
records reach this number, the oldest records are automatically deleted.
8. The Hold Usage sheet displays where the current hold has been selected on specific records; use this sheet
to manage the records currently on hold. If you need, you can select an item on this grid and click the Delete
button to remove a hold on a record.
9. The Hold Usage History sheet displays a record for each time the selected hold was used – when it was
attached to a record, who attached the hold, when it was removed, and so on. If you need, you can select
a record on this grid and click the Delete button; this removes the history record. The maximum number of
records that can appear on the Hold Usage History sheet is defined by the hold type’s History Length value.
BPM Holds
Use the BPM Holds program to attach a hold directly to a record. You can also delete a previously attached hold.
3. Right-click on a field that is used to define a business object and select BPM Holds.
Not all context menus have a BPM Holds option. The field
must be a primary value for a business object. In this
example, the Sales Order field is the main field used by
the SalesOrder business object, so a hold can be placed
on this field.
4. The BPM Holds program displays. In the Tree View, select the hold type you want to use. In this example,
you select the Sales Order hold.
6. The hold is now created for this record; several fields automatically populate with information. The Business
Object field displays the name of the business object used for this hold. In this example, the SalesOrder
business object displays.
7. The Hold Type field displays the hold that you created in Hold Type Maintenance. In this example, the Sales
Order hold record displays.
8. The Description field displays the optional explanation that may have been entered for the hold type.
9. The Created On field displays the date and time on which this BPM hold was attached to the record.
10. The Created by field displays the identifier of the user who attached the hold.
11. Use the Comment field to enter any additional information you want about the hold. The only field within
the BPM Holds program you can edit, this field contains the reason you placed the hold on the record.
2. Use the Detail sheet to find and select a specific hold type. In this example, you select the Sales Order hold
type.
4. The Hold Type Usage grid displays all the records on which this hold type is currently selected.
Use this information to make any changes that you need to the selected records. However, you must do this
manually on each record listed on this grid.
For more information on how to attach the BPM Hold to a record using a directive action, review the Case
Studies section at the end of this chapter.
Directives
A directive defines a set of BPM workflow conditions and actions associated with a method call or a data
transaction. Directives are triggered by a business object method, a method used by an updatable BAQ, or by
changes to data in a database table.
Method Directives
Data transactions in the application are controlled by business objects. A business object represents a type of
data managed by the application, such as a customer, part, or a sales order. The objects contain methods that
perform a specific task. For example, the Customer.Update method validates and posts customer records to the
database.
BPM tools can extend these methods before or after the main execution, or completely replace the method. You
do this by creating method directives that evaluate the data being processed, and, if the directives' conditions
are met, perform one or more actions based on this data - like displaying messages, preventing data entry,
launching other business processes, and so on.
BPM method directives work by performing calls to the application server logic. You can then validate, manipulate,
or execute actions based on the data passed through the application. Because they are server side customization,
you can change business logic without modifying the source code. For this reason, most future upgrades to the
source code will not affect existing BPM directives.
When a business object method is called, all enabled directives associated with the method activate. The BPM
workflow you create for the directive does it's job by executing workflow items in the order you specify.
While the method is active, these directives run at three different processing points:
• Pre-Processing – These directives execute before the base method runs. After these actions finish, the business
object then runs the base method.
• Base Processing – These directives run in place of the base method. The base method does not execute.
• Post-Processing – These directives run after the base method finishes its process.
For example, you can create a method directive for the Customer.Update method that sends an e-mail to a Sales
Manager when a customer’s credit limit is changed. This same directive can also attach a hold to the customer
record and display a message indicating the customer record has been placed on hold. Both of these actions are
run during post-processing, after the base method finishes its process.
You create method directives within Method Directives Maintenance.
Menu Path: System Management > Business Process Management > Method Directives Maintenance
Data Directives
A data directive is similar to a method directive, but instead of being launched by a business object method, a
data directive is linked to a database table and is triggered by a database event, such as add, delete, or update.
By applying the directive to a specific table, data directives are used to control data that may be affected by
several business objects.
You can apply most of the conditions and actions from method directives to data directives as well, except in
cases where the condition or action depends on information available in the business object that is not available
in the data itself. Two types of data directives are available:
• In-Transaction - Affects data before it is saved to the database. This directive type can only process one row
at a time; it cannot process multiple dirty rows - rows that contain data not yet saved to the database. Multiple
dirty rows are explained later in this chapter.
• Standard - Does not affect data in the database. A Standard directive executes after a data transaction is
saved to the database. This directive type processes multiple dirty rows modified in the database at once. It
runs after base methods and method directives.
You create data directives within Data Directives Maintenance.
Menu Path: System Management > Business Process Management > Data Directives Maintenance
Editor. You can use this method to perform additional processing against the changed row. For example,
when you enter a part number, you want the part description field to populate automatically.
• Field Validate - This method occurs before the proposed change to a field is committed. If you want this
field to generate a Business Process Management (BPM) method, select the Raise Events check box in Updatable
Field Editor. You can use this method to validate proposed changes. For example, you can prevent users from
entering an incorrect value in a certain field such as non-existent state.
How it Works
BPM customization allows using of mostly all BPM Method directive actions and conditions for processing query
data. When you create an updatable BAQ, the application writes a base processing directive for the update
method. The directive uses C# code to update the database according to the settings defined in the Business
Activity Query Designer.
1. Business Activity Query Designer helps users with updating data via a selected business object. For these
purposes, the UpdateExt method is used. This update method governs the whole data transaction process
between the updatable BAQ and the related Business Object (BO). When you select the BPM Update option
on Update Processing sheet, you activate the BPM Update Processing section to configure data updates.
2. You do this by selecting an appropriate Business Object and defining data Mappings between BO's dataset
and query display fields.
3. Click the BPM Directives Configuration to access the Updatable BAQ Method Directives.
4. Based on the information you specified in BPM Update Processing, the BAQ Designer generates the Base
Processing directive named #BASE# against uBAQ.Update method.
5. This directive is named #BASE# and contains a workflow item with custom C# code, which prepares data
and calls UpdateExt for selected BO.
6. Also, Base Processing directive for the GetNew method is automatically generated if the Allow New Record
option is selected on the Update > General Properties sheet. This directive is also named #BASE# name
and it contains C# code with field assignments for new row as defined in Initial Expression column defined
on the General Properties.
7. However, the BAQ Designer gives you the ability to modify the directives for any methods. By using the
Advanced BPM Update only option, you can create a BPM directive manually from scratch, or, to customize
the directive generated by BPM Update processing.
8. If you do not specify BPM Update processing and launch Updatable BAQ Method Directives, then no #BASE#
directives are generated automatically for the GetNew and Update methods. Use this option to customize
the method completely by yourself.
You should always create Base Processing directives for all updatable query methods you want to call.
Otherwise the error message "There is no BPM customization attached to Update method of test updatable
query in XYZ company" displays.
The exception to this rule, are GetList and GetNew methods, which have the base processing functionality
embedded. For these methods, creation of Pre-Processing and Post-Processing directives is reasonable.
You can access Updatable BAQ Method Directives Maintenance either from BAQ Designer or using the
menu option:
Menu Path: System Management > Business Process Management > Updatable BAQ Directives Maintenance
Custom Actions
You may create custom actions for updatable BAQs in the Business Activity Designer program by defining the
action ID and label. The custom actions can then be added to the Actions menu of a dashboard that uses the
query. In the Updatable BAQ Method Directives program, you create a pre-processing, base processing, or
post-processing directive for the RunCustomAction method.
Use "the specified argument is equal to the specified expression" condition statement to identify which
action to run. The first "specified" variable can be set to "actionID." The second "specified" variable can be set
to the ID of the action called by the user as it was specified in the BAQ. Then create directive actions to perform
custom operations.
The key elements of using BPM directives within the application include the following:
• A user performs an action in a program.
• The program calls a business object method to carry out the action.
• Before the business object executes its program code, Pre-Processing directives are executed.
• After the Pre-Processing directive, the Epicor program code performs its function, or Base directives are
executed.
• When data transaction is about to be applied to the database, In-Transaction directives are executed.
• After the Epicor program code or Base directive is run, Post-Processing directives are executed.
• Standard data directives are executed with accumulated transaction database changes passed to them.
• Data is returned to the program according to the actions run by the directives and Epicor program.
2. The Method Search program displays. Use this program to locate a specific method within a business
object.
3. Select the Search by Business Object option. This indicates that you want the search to look specifically
for business objects.
4. Notice you can search for Business Objects belonging to the Product (ERP) or System (ICE) part of the
system.
5. In this example, you want to create a method directive for the CurrExRate.Update method that belongs to
the application part of the system. To do this, leave the Product option selected in the Where Method
Name Starts At field, enter "U".
6. Now select the Business Object for which you want to search. In this example, you select the CurrExRate
business object.
7. Notice you can also select Search by Directives. This option is used to find and select existing method
directives.
8. When you select the Search by Directives option, the Directive Group drop-down list becomes active. You
can assign directives to groups and then search for a specific group here. To learn how to use Directive
Groups, read the Business Process Management Utilities chapter.
9. You can also Search Outdated Directives. Select this option to locate any method directives that have
become incompatible with the current application version. To learn more about this, review the Directive
Compatibility section later in this chapter.
11. The Search Results grid displays all the methods for the CurrExRate business object that start with “U”. In
this example, you highlight the Update option.
13. The Detail sheet now displays the primary information on the selected method.
14. The Method Code field displays the business object method that you selected. You add and edit directives
to this method. In this example, you selected the CurrExRate.Update method.
16. The Transaction Scope list defines how the application handles errors. Available options:
• Business Method and Directives – The application reverses, or rolls back, all changes made by actions
run before the error exception occurred.
• Business Method – The application does not roll back any changes made by the directive’s actions.
17. The Supports multiple dirty rows check box indicates whether the selected method sends multiple updated
rows to the database for processing. When a method can gather data from multiple rows at the same time
before they are saved to the database, the method is referred as being able to support multiple “dirty”
rows. You then can perform additional actions against the selected method. These additional actions are
described in the Support for Multiple Dirty Rows section later in this chapter.
18. Click the Advanced button to create custom actions for this method directive; this launches the Method
Arguments window. This window displays the arguments contained in the current method; use this program
to review what you need to know before you build your custom external method. You also use this program
to launch the Create Programming Interface Form; you use this window to generate a class within a
method that has a signature which matches the signature of the business object for which you are creating
the external method. To learn how to use these tools, read the Custom Business Process Management
chapter.
19. When you finish defining the primary items on the method directive, click Save on the Standard toolbar.
1. Click the Down Arrow next to the New button; select New Pre-Processing.
3. Enter the Directive Name you use to identify the pre-processing directive. You can enter a descriptive name
that has special characters and spaces.
4. If you need, select the Group inside which the current directive belongs. You can select an existing group
or enter a new group. An optional value, groups help you organize directives for both search and export
functionality.
5. The Order field indicates the sequence in which this method’s directives activate. The program automatically
enters a value in this field in increments of 10. Because of this, the first directive you add is 10, the second
20, and so on. If you need, however, you can edit this value.
6. The Owner Company field displays the company for which this directive is created.
7. The Enabled check box indicates this directive is active and the application automatically compiles the code
to run the directive. You must select this check box to use the current directive.
8. The Scope field to defines the directive's range of usage and also determines the ability of users to view,
create or modify the directive.
• You can select one of the following options:
• Company Specific - The directive only works in its owning company's scope.
• Company Independent - The directive works in all companies on a regular installation. If Multi-Tenant
license is used (SaaS solutions), this directive works in all companies belonging to the tenant ID of its
owning company.
• Tenant Independent - This option only displays if Multi-Tenant license is used and it is only available
to a user having Global Security Manager rights. A Tenant Independent directive works in all companies
of the installation.
For more information, review the Directive Scope topic within this chapter.
9. The Compatible check box indicates whether this directive works with the current version of the business
method. If the application validates the method and discovers this directive is no longer compatible with
the business method, this check box is clear. To learn more about how the application checks your method
directives for compatibility, read the Directive Compatibility section later in this chapter.
10. Click the Design button to access the BPM Workflow Designer. Use the Designer to construct your BPM
workflow using a graphical design surface.
The BPM Workflow Designer functionality is discussed in the following section.
11. When you build a workflow using the BPM Workflow Designer, its snapshot displays within the Behavior
pane. This feature may help you quickly identify the purpose of the workflow and determine if modifications
are necessary.
12. When you finish creating your pre-processing directive, click Save on the Standard toolbar.
Use the BPM Workflow Designer to construct your BPM workflow using a graphical design surface.
To access Designer, click the Design button when you build a directive through following programs:
• Method Directives
• Data Directives
• Updatable BAQ Method Directives
General Principles
This topic discusses general principles of creating a BPM workflow by using the workflow elements.
To construct a BPM Workflow:
1. The available items display in the left pane of the Designer. Workflow elements are grouped by categories
and except the Flow Chart category, they all represent Actions the workflow will take.
2. For each workflow item representing Actions, you can select the Terminate on Error option to halt the
workflow execution when it encounters an error. The Raise Exception action has this option selected by
default.
3. The Condition block found in the Flow Chart category represents a set of conditions the BPM workflow
may evaluate prior to executing the following workflow item.
4. To use a BPM item in the workflow, drag it and drop it in the BPM Designer surface.
5. Connect the workflow elements in the logical order they should be executed. When you hover your cursor
over each element, the small black triangles surrounding the item represent the available connectors. To
connect elements, click your mouse, select any of the connector symbols, drag the line and point it to another
item's connector.
7. The following workflow elements may utilize multiple inbound connectors but only one outbound connector.
The exception is the Condition block that allows usage of two outbound connectors True & False.
8. When you delete any workflow item (block), its links will be automatically deleted with it.
9. To set up the behaviour of a workflow item representing Action, click on it and supply required parameters
in the pane below the designer surface.
10. For the Condition block, build criteria using pre-built condition statements. You can enter more than one
condition statement within a single block and use the And/Or logical Operators to define the relationship
between the current statement and the preceding statement.
11. Once you build your BPM workflow, use the Validate function to control if all element parameters are set
up in the way BPM expects. This function also checks that the directive references existing objects (assemblies,
users, BAQ constants, DB tables and fields, etc) correspond to selected BO method signature. This control
is particularly useful for directives imported from previous Epicor ERP releases.
12. Once you finish, click Save and Exit to return to the respective Directive Maintenance program from which
you called the Designer.
This topic explains how you can enter custom names and memos within workflow elements.
Here's how you can rename and create the memo:
1. When you place a workflow item in the BPM Designer surface, the Designer assigns its name automatically,
for example, Condition 0, Raise Exception 0.
2. When you use more than one element of the same category within the workflow, the Designer increments
the number of a newly added item, for example, Condition 1, Raise Exception 1.
3. You can, however enter the custom name of each item. To do so, double-click the element name heading
and type in the name you want to use. In this example, you rename Condition 1 to Part Class Test.
4. You can also create a memo, where you can put additional info of what does a particular element do.
Typically, you can use this feature when you build a complex workflow and you to explain the purpose of
an element to other person reviewing the workflow. To do so, click the + icon in the top left corner of the
element block.
5. You can use the down arrow to invoke the Color pallette where you can pick the desired color for the memo.
6. Next, you enter the custom text to describe the purpose of the item.
7. When you place the cursor over the element, the memo you created displays.
• BPM Advanced User rights - enables Auto Print, Change Log, Call Service Connect Workflow, Execute Custom
Code, Invoke External Method, Notify Me, Set By Query and Custom Code Condition.
• Presence of Table parameters within the selected method - Field Changed Condition, Field Condition, Row
With Status Condition, Notify Me, Data Tag Condition, Attach/Remove Data Tag Actions, Set By Query Action
and Set Field Action.
• Presence of Simple parameters within the selected method - Argument Condition, Word In Argument Condition
and Set Argument Action.
• Workflow items not available in uBAQ Method Directives - Holds and Tags and Method Query Field Changed
Condition.
• Valid Business Object Instance - cases when Business Object's primary key cannot be obtained from parameters
- Attach and Remove Hold Actions and Hold Condition.
• Presence of the Change Log table - Change Log Action.
Callers
Use the items found within the Callers group to invoke BPM Data Form, call Epicor Service Connect workflow,
perform Custom Code Cction and Invoke External Method.
Use this action to launch a custom program created to collect data specifically for use during the BPM directive
action.
You create data forms using the BPM Data Form Designer. When the directive executes this workflow action,
the specified BPM data form invokes.
You can define when to invoke the BPM data form: always, or only if the mandatory data is missing. You can
also define if to apply customization to the called BPM data form.
You can use this action with the following Directives Types:
named Click this link to open the Select BPM Data Form program. Use this program to specify
which BPM data form should launch when this action executes. Click Run Designer to
launch the BPM Data Form Designer program where you can create data forms.
no customization Click this link to open the Select BPM Data Form Customization program. Use this
program to select a customization to apply to the BPM data form when it is called.
always
Click this link to toggle between the following:
• Always – The BPM data form is called each time the action executes.
• Only when mandatory data missing – The BPM data form is called to acquire data
required to complete the data transaction, but was missing from the data set.
Call SC Workflow
Use this action to enter the login credentials for the server where Epicor Service Connect is installed. After
successfully entering the credentials, the system opens the Select Workflow program, where you select a workflow
to be used as part of the directive action.
You can also create a workflow skeleton directly from the BPM Workflow Designer program. Workflow skeleton
consists of the Start and Finish elements. The Start element is assigned the request schema, produced by the
parent business object and its method, and the Finish element is assigned the response scheme, produced by
the parent business object and its method. You can save this workflow skeleton to any of the existing workflow
packages. Later on you can edit this workflow by means of Workflow Designer.
This way of workflow skeleton creation is useful, as it allows getting the request and response schemes from the
business object and its method.
You can use this action with the following Directives Types:
specified
Click this link to launch the Logon to Service Connect program. Use this program to enter the
login credentials for the server where Epicor Service Connect is installed.
After you successfully enter the login credentials, the Select Workflow program displays. Use
this program to select or create a workflow used for this action. The credentials for ESC are
those entered below the workflow selection tree. The credentials, specified for each ESC server
on this form, are shared by all Call SC Workflow BPM actions in this company.
While you are in the Select Workflow program, you can click the Advanced button to launch
the Workflow Context Parameters program. Use this program to specify iScala manager
credentials called from Epicor Service Connect.
To learn more about Epicor Service Connect, review the available Epicor Service Connect
documentation.
asynchronously
Click this link to toggle between asynchronous and synchronous execution.
• Synchronously - The call is made immediately when the action executes.
• Asynchronously - Asynchronous execution means the call is executed immediately, but the
action does not wait until the ESC workflow is finished and the results are processed.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about each
option in this program. This variable is not visible if the method data transaction does not support
multiple dirty row updates.
Use this workflow item to launch the custom code action from the BPM workflow.
You can use this action with the following Directives Types:
Synchronously Click this link to toggle between asynchronous and synchronous execution:
• Synchronously - The call is made immediately when the action executes.
• Asynchronously - The call is queued and executed according to the schedule defined in
the BPM Async Process program.
code Click this link to launch the Enter Custom Code program. The following sheets are available
within on this window:
• Code - Use this sheet to enter a code snippet written in C# language you want BPM to
execute
• Usings - Use this sheet to specify additional C# usings for the BPM customization.
• References - Use this sheet to add additional references to assemblies from Server\Assemblies
or \Server\Customization\Externals folders of your Epicor ERP installation.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about
each option in this program. This variable is not visible if the method data transaction does not
support multiple dirty row updates.
To see this workflow item in action, see the Execute Custom Code Directive topics within the Custom Business
Process Management chapter.
Use this workflow item to create a reference to a custom external method you created using the Create
Programming Interface Form and Microsoft® Visual Studio®.
You can use this action with the following Directives Types:
Synchronously Click this link to toggle between asynchronous and synchronous execution:
• Synchronously - The method is called immediately when the action executes.
• Asynchronously - The method is queued and executed according to the schedule
defined in the BPM Async Process program.
specified method Click this link to display the Add Reference window. Select the assembly's method you
want to invoke.
external Click this link to display the Add Reference window. This window shows all custom external
methods you have created and deployed to the Server\Customization\External folder (or
an alternative folder you specified in web.config)
Select the custom external method from the list.
with rule Click this link to launch the Execution Rule program. If the data transaction supports
multiple dirty rows (rows that contain unsaved data), you can use this program to select
how the action performs. Read the Support for Multiple Dirty Rows section in this chapter
for details about each option in this program. This variable is not visible if the method data
transaction does not support multiple dirty row updates.
The Custom Business Process Management chapter explains this functionality into details. Review the chapter
to understand on arguments contained in the current method and how to use the Create Programming
Interface Form to generate the code shell. The chapter continues with discussion on how to define custom
action logic and deploy the external method using the Microsoft Visual Studio. The complete the functionality,
the chapter explains how to attach the method using the Invoke External Method workflow element.
Flow Chart
The Flow Chart category holds the conditional block workflow element.
Use this element to set up BPM workflow conditions you want to evaluate before an appropriate action is executed
by the workflow.
Condition
This section contains the list of pre-built condition statements you can select.
The conditions define when the subsequent elements will execute. Each condition statement contains one or
more links. Click each link in the statement to open a program where you can configure details of the statement.
After you configure each link and return to the Conditions program, the link text is replaced with the details you
selected.
If you enter more than one condition statement, you can use a logical Operator AND/OR to define the relationship
between the current statement and the preceding statement. You can also group statements by adding parentheses
in the Prefix and Postfix fields. The system evaluates the condition statements in the order they appear and
according to how they are grouped. To change the order of the statements, click the up or down arrow buttons
in the toolbar. Condition statements that appear higher in the grid supersede those that appear lower.
Within the workflow, the Condition element may have multiple inbound connections and two outbound
connections (exit points). You can evaluate the BPM condition to either True or False. This gives you a flexibility
in designing the processing flow through directives.
The following topics discuss the available conditions and information on how to use them.
List of Conditions
This section explores all the pre-built conditions available within the BPM functionality.
As you create specify parameters of BPM workflow actions or conditional blocks, you will notice that most tables
begin with a “tt” prefix in their names. The “tt” prefix is an abbreviation for Temporary Tables; this value is used
within code. When you see a “tt” table name, you are working with tableset tables in Method Directives,
LinqRowSets in Data Directives and dataset rows in uBAQ Method Directives.
When you modify a column in a “tt” table through a pre-process or in-transaction directive, you are modifying
the data before it is committed to the database tables.
The following is the list of conditions:
• the specified public data tag exists on the changed row of the specified table
Use this condition to identify when a data tag has been placed on a record. You can apply data tags to records
throughout the application. A common use of data tags may be to group related records for searches or so
that BPM directives can run when the records are modified.
You can use this condition with the following Directives Types:
Variables Description
The specified (data Click this link to launch the Specify a Value program. Use this program to enter a
tag) free-form text value that matches the data tag for which you want to run the directive.
You can select the Null Value option to check for no tag assigned.
public Click this link to toggle between three values: public, current user and public or
current user. Select public to limit the directive to records that have a public data tag
of the specified name. Select current user to limit the directive to records where the
user trying to modify the record has added a private data tag. Use the public or current
user option if you want a directive to run for a given data tag regardless of whether it
is public or private, instead of limiting the directive to one or the other.
exists
Click this link to toggle between two values: exists and doesn’t exist. Select exists to
limit the directive to records that have the specified data tag. Select doesn’t exist to limit
the directive to records that do not have the specified data tag.
Variables Description
specified (table)
Click this link to launch the Select Table program. Use this program to specify a table
that is part of the condition statement. For a data directive, be sure you select the current
table; this table contains the data you want to monitor.
Variables Description
designed Click this link to launch the Compose Query program similar to Business Activity Query
Designer. The query you create evaluates the number of rows returned by the query
against the comparison value you select later in this statement. In addition to standard
tables, the query phrases can run against temporary tables (tt tables) to analyze values
passed in tablesets or linq row sets.
is not less than Click this link to toggle between six values: is equal to, is not equal to, is less than,
is not less than, is more than or is not more than. Select a comparison option that
is used against the number of rows returned by the selected query.
1 Click this link to launch the Specify a Value program. Use this program to enter a numeric
value that evaluates against the number of rows returned by the query.
Variables Description
specified Click this link to launch the Select Table Field(s) program. Use this program to specify
a field that is part of the BPM condition statement. You can choose a field from any
temporary table (tt table) included in the current method parameters. The application
compares the field value to a value (any to another) you specify.
any Click this link to launch the Specify a Value program. Use this program to enter a value
that is evaluated. You can also select the Null Value or Any value you want to include in
the comparison.
Variables Description
another Click this link to launch the Specify a Value program. Use this program to enter a value
that is evaluated. You can also select the Null value or Any value you want to include in
the comparison.
Variables Description
specified call Click this link to launch the Select Table Field(s) program. Use this program to specify
context a call context field from one of two available Call Context tables. These tables are
available for each business method, and you leverage them for custom data storage on
both the client and server. The application compares the field value to a value that you
specify.
is equal to Click this link to toggle between eight values: is equal to, is not equal to, is less
than, is not less than, is more than,is not more than, begins with, ends with,
contains or matches. Select a comparison option that is used against the call context
variable.
specified Click this link to launch the Specify an Expression program. Use this program to
compose an expression that evaluates against the comparison. The expression can
contain literal values, data from the current transaction, and functions that can perform
calculations and data type conversions.
• the specified field of the changed row is equal to the specified expression
This condition statement monitors a specific field within the data transaction. BPM then compares this field
value to the comparison option and a final value that you specify. If this comparison evaluates to True, the
BPM workflow continues the path using the True exit point.
You can use this condition with the following Directives Types:
Variables Description
specified (field) Click this link to launch the Select Table program. Use this program to specify a field
that is part of the statement. For method directives, you can then select a field from
any temporary table (tt table) included in the current method’s parameters. For data
directives, you can select a field from the temporary table associated with the directive.
Variables Description
the changed row
Click this link to specify which row set is affected when the rule activates. You can
toggle between six values: the added row, the deleted row, the changed row, the
unchanged row, the updated row and all rows.
is equal to Click this link to toggle between eight values: is equal to, is not equal to, is less
than, is not less than, is more than,is not more than, begins with, ends with,
contains or matches. Select a comparison option used to compare the selected field
against the value defined in the expression later in this statement.
specified Click this link to launch the Specify an Expression program. Use this program to
(expression) compose an expression that evaluates against the comparison. The expression can
contain literal values, data from the current transaction, and functions that can perform
calculations and data type conversions.
Variables Description
code Click this link to launch the Enter Custom Code editor. The code written in editor
should return boolean value, for example, return true;
valid Click this link to select how the condition evaluates the result of the custom code. If
valid is specified, the result of the custom code is compared with true. When you select
invalid, the result is compared with false.
Variables Description
specified type is attached to the Click this link to launch the Select Business Object program. You can
business object browse all the business objects related to the current method using a
Tree View. This interface displays all the objects that link to, or are linked
from, the current object.
You also specify the hold type this condition needs to verify with this business object. Hold Types must be
created specifically for the selected business object before you can select one through this program.
• the method is called by specified user
Use this condition to determine whether a specific user did or did not launch the current transaction. This
condition statement can be useful for testing directives so that they are activated only by a specific user
account. If this comparison evaluates to True, the BPM workflow continues the path using the True exit point.
You can use this condition with the following Directives Types:
Variables Description
is called Click this link to toggle between is called or is not called options. Select the option
you need; these options determine whether the user did or did not initiate the data
transaction.
specified user Click this link to launch the User Account Search window. All the user records in
the current database display. Use this window to select a user that is used for this
condition statement.
Variables Description
belongs Click this link to switch between belongs or does not belong options. Select the
option you need; these options determine whether the user is or is not a member
of the security group you specify later in this condition statement.
specified group Click this link to launch the Security Group Search window. Use this window to
specify a security group evaluated against the selected user.
Variables Description
updated Click this link to specify which row set is affected when this rule activates. You can
select the added row, the deleted row, the updated row or unchanged row.
Variables Description
specified Click this link to launch the Select Table program. Use this program to specify a
table that is monitored by this condition statement. Use this program to choose any
table linked to the current data transaction.
Variable Description
specified Click this link to launch the Specify a Time Frame program. Use this program
to define a time frame that is part of this condition statement.
specified Click this link to launch the Select a Primary Directive Upon window. Use this program
to select a pre-processing directive or a base-processing directive that is used for this
condition statement.
Variables Description
specified (argument) Click this link to launch the Select an Argument program. Use this program to
select which parameter you would like to evaluate against the other variables in the
condition statement.
is equal to Click this link to toggle between eight values: is equal to, is not equal to, is less
than, is not less than, is more than,is not more than, begins with, ends with,
contains or matches. Select a comparison option used to compare the selected
field against the value defined in the expression later in this statement.
Variables Description
specified (expression) Click this link to launch the Specify an Expression program. Use this program to
compose an expression that evaluates against the comparison. The expression can
contain literal values, data from the current transaction, and functions that can
perform calculations and data type conversions.
Variables Description
specified (argument) Click this link to launch the Select an Argument program. Use this program to
select which parameter you would like to evaluate against the other variables in
the condition statement.
contains Click this link to toggle between six values: equals to, not equals to, begins
with, ends with, contains or matches. Select a comparison option that is used
against the argument variable.
specified (expression) Click this link to launch the Enter Word program. Use this program to enter a
word expression that evaluates against the argument.
• Method changed the specific field of the designed query from any to another value
Use this condition to monitor a specific query field contained within the current transaction. If the current
method changes the query field's value to another value that you define, the comparison evaluates to True
and the BPM workflow continues the path using the True exit point.
You can use this condition with the following Directives Types:
Variables Description
specific Click this link to launch the Select Table Field(s) program. Use this program to specify
a query field that is part of the BPM condition statement.
designed Click this link to launch the Compose Query program similar to BAQ Designer where
you design a query. The query field you select is then evaluated for changes against the
comparison values you select later in this statement.
any Click this link to toggle between six values: is equal to, is not equal to, is less than,
is not less than, is more than or is not more than. Select a comparison option that
is used against the number of rows returned by the selected query.
another Click this link to launch the Specify a Value program. Use this program to enter a value
that evaluates against the query field.
• Value of the specific field of the designed query changed from any to another
Use this condition to monitor a specific query field contained within the current transaction. If the field’s value
changes to another value that you define, the comparison evaluates to True and the BPM workflow continues
the path using the True exit point.
You can use this condition with the following Directives Types:
Variables Description
specific Click this link to launch the Select Table Field(s) program. Use this program to specify
a query field that is part of the BPM condition statement.
designed Click this link to launch the Compose Query program similar to BAQ Designer where
you design a query. The query field you select is then evaluated for changes against
the comparison values you select later in this statement.
any Click this link to launch the Specify a Value program. Use this program to enter a
value that evaluates against the query field.
another Click this link to launch the Specify a Value program. Use this program to enter a
value that evaluates against the query field.
Labels
Use the items found within the Labels group to attach and remove Data Tags and BPM Holds.
The tags are unstructured text values that provide a way to group otherwise unrelated records so that you or
other users can search for them. Business Process Management method directives and data directives can leverage
data tags to create custom application functionality.
Use BPM Holds to define an external hold event linked to a business object which in turn may be set through a
BPM action. BPM directives may then be created on other business objects and methods to evaluate whether a
hold exists and then modify the business process as you need. BPM Holds extend the regular status holds built
into the application. You can then define and evaluate your own hold conditions based on your business workflows.
Use this action to attach a data tag to a record. You can apply data tags to records throughout the application.
A common use of data tags may be to group related records for searches or so that BPM directives can run when
the records are modified.
You can use this action with the following Directives Types:
specified (data tag) Click this link to launch the Specify a Value program. Use this program to enter a
free-form text value that matches the data tag you want to apply to the current record.
If the data tag has not been previously defined, it will be created.
public Click this link to toggle between two values: public and current user. Select public to
attach a public data tag to the current record. Select current user to attach a private data
tag for the current user to the current record.
the changed row
Click this link to specify which row set is affected when the rule activates. You can toggle
between six values: the added row, the deleted row, the changed row, the unchanged
row, the updated row and all rows.
specified (table) Click this link to launch the Select Table program. Use this program to specify the table
that is changed through this action.
with rule Click this link to launch the Execution Rule program. If the data transaction supports
multiple dirty rows (rows that contain unsaved data), you can use this program to select
how the action performs. Read the Support for Multiple Dirty Rows section in this chapter
for details about each option in this program. This variable is not visible if the transaction
does not support multiple dirty row updates.
Use this action to remove a data tag from a record. You can apply data tags to records throughout the application.
A common use of data tags may be to group related records for searches or so that BPM directives can run when
the records are modified.
You can use this action with the following Directives Types:
specified (data tag) Click this link to launch the Specify a Value program. Use this program to enter a
free-form text value that matches the data tag you want to remove from the record.
public Click this link to toggle between two values: public and current user. Select public to
remove a public data tag from the current record. Select current user to remove a private
data tag from the current record for the user that initiated the transaction.
specified (table) Click this link to launch the Select Table program. Use this program to specify the table
that is changed through this action.
with rule Click this link to launch the Execution Rule program. If the data transaction supports
multiple dirty rows (rows that contain unsaved data), you can use this program to select
how the action performs. Read the Support for Multiple Dirty Rows section in this chapter
for details about each option in this program. This variable is not visible if the transaction
does not support multiple dirty row updates.
Attach Hold
Use BPM holds to define an external hold event linked to a business object which in turn may be set through a
BPM action. BPM directives may then be created on other business objects and methods to evaluate whether a
hold exists and then modify the business process as you need. BPM holds extend the regular status holds built
into the application. You can then define and evaluate your own hold conditions based on your business workflows.
You can use this action with the following Directives Types:
specified
Click this link to launch the Hold Attachment program. Use this program to specify which hold
should be attached to a record when the application executes this action. You can select from
any of the hold types defined for the business object. You can also add an optional comment.
After a hold has been placed on a record, any subsequent directives can check for the presence
of this hold and perform various actions when a user attempts to execute a method that affects
the record.
Hold types are created and maintained in Hold Type Maintenance. To learn about this program,
read the previous Hold Type Maintenance section.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about each
option in this program. This variable is not visible if the method data transaction does not support
multiple dirty row updates.
Remove Holds
You can use this action with the following Directives Types:
specified
Click this link to launch the Hold Removal program. Use this program to specify a hold type
that is removed from a record when the application launches this action.
You can select from any of the hold types defined for the business object. Hold types are created
and maintained in Hold Type Maintenance. To learn about this program, read the previous
Hold Type Maintenance section.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about each
option in this program. This variable is not visible if the method data transaction does not support
multiple dirty row updates.
Other
Use the workflow items found within the Other group to perform various BPM actions.
The BPM workflow can execute the following actions:
• Automatically preview or print a report.
• Write table changes to the applicable program change log.
• Enable launching any post-processing directives linked to the directive in focus.
• Post a data notification message to the Epicor Social Enterprise message stream.
• Display an exception message.
• Send an e-mail notification to a user or a group of users.
• Display an informational message.
Auto Print
Use this action to automatically preview or print a report when the BPM data directive executes.
To configure this action, select a report, select a printer and print options, and configure the mapping of input
values for report parameters. Typical triggers for an Auto Print action would be the output from an execute
custom code action or the state of a condition action.
You can use this action with the following Directives Types:
A BPM data directive with Auto Print action is the replacement for the combination of Business Activity Manager
Auto-Print event and Report Data Maintenance Auto Print rules used in previous Epicor ERP releases.
specified (report) Click this link to open the Auto Print Report Search dialog box and choose the
report that will be generated by the Auto Print action.
specified (options) Click this link to open the Set Up Auto Print dialog box, where you select a printer
and print options, and configure the mapping of input values for report parameters.
Change Log
Use this action to write table changes to the applicable program change log when the BPM data directive executes.
To configure this action, select the data directive tables field that will be monitored for change.
Changes in your application data are written to the program change log only when there is an enabled change
log data directive for the affected table and fields. You must create a data directive with a change log action for
each table that you want to monitor in the program change log.
You can use this action with the following Directives Types:
specified Click to display the Select Table Field(s) dialog box. Use this dialog box to select the table
fields that will be monitored for change. The Name field is inactive, the Table field displays the
data directive table name, and the filter options for Added Records and Updated Records are
pre-selected and cannot be changed.
Use this action to enable any post-processing directives linked to this directive.
Use this action when you want an action to perform after the record is successfully validated and updated from
the “tt” (temporary) tables to the actual, or physical, tables.
You do not select any variables for this action. Instead, you link a post-processing directive to this pre- or base
processing directive by using the “this directive has been enabled from the specified directive” condition statement.
You select the directive that contains this action statement through the specified variable.
Use this action to test for conditions in a pre-processing or base processing directive and then launch a
post-processing directive based on these conditions.
You can use this action with the following Directives Types:
Notify Me
Use this action to post a data notification message to the Epicor Social Enterprise message stream when the BPM
method directive or data directive executes.
To configure this action, you must set the notification profile (application table) that is applied as the context for
alert messages and you must define a message template that includes the message title and message content
that Epicor Social Enterprise will apply when posting data notification messages.
Examples of triggers for a Notify Me action are the state of a Condition action or the output from an Execute
Custom Code action.
You can use this action with the following Directives Types:
<TableName> <TableName> is by default based on the directive table. Click to display the Specify
Notification Profile and Key Tag dialog box. Use this dialog box to choose the notification
profile, company, and key values that will be applied as the context for notification messages.
There are two general approaches. In most cases, leave the profile selection at the notification
profile associated with the directive table and choose a company and key value to be applied
when the action triggers. Alternatively, choose a different notification profile, company, and
key value.
designed Click to display the Design Notification Message Template dialog box. Use this dialog box
to create a template for the message title and content in data notification messages that are
posted in Epicor Social Enterprise.
Raise Exception
Use this action to display an exception message when this directive’s condition(s) is met.
When this action activates, it stops all processing until the user reviews and clicks OK on the exception message
window. BPM exception messages are transmitted to alternate clients - Epicor Mobile Access, Epicor Web Access,
Web Services and Service Connect.
You can use this action with the following Directives Types:
designed
Click this link to launch the Design Exception Template program. Use this program to build an
exception message generated when the application executes the directive action.
Within the message, you can include Call Context data and values queried from related tables and
fields. You do this by designing a Simple Query that pulls in these values from fields. You use the
Select Table Field(s) window to define these variables; launch this window by right-clicking in
the Text field and selecting either the Field Query or the Table Query option from the context
menu. You can select one of the following Severity modes when setting up a message:
Information, Warning, Error and Update Conflict.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about each
option in this program. This variable is not visible if the method data transaction does not support
multiple dirty row updates.
Send E-mail
Use this action to send an e-mail notification when the BPM executes.
You can select to send an e-mail synchronously or asynchronously. Use the Design E-mail template program to
define e-mail parameters such as subject, recipients and the body of an e-mail.
You can use this action with the following Directives Types:
asynchronously
Click this link to set this variable to send an email either synchronously or asynchronously. This
indicates how the application handles email generated by this action. Available options:
• Synchronously - The email is sent when the action executes.
• Asynchronously - Asynchronous execution means the action doesn't wait for sending to
complete; it's started immediately when the directive executes.
designed
Click this link to launch the Design Email Template program. Use this program to build an
email message that generates when BPM executes this action.
You can also insert BPM Call Context data, field and table variables into these email messages.
You do this by designing a query that pulls in these values from fields. You use the Select
Table Field(s) window to leverage this functionality. Launch this program by right-clicking
the Text field and selecting either the Field Query or the Table Query options.
with rule
Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about
each option in this program. This variable is not visible if the method data transaction does
not support multiple dirty row updates.
Show Message
After users read the message and click OK, the method continues processing. BPM informational messages are
transmitted to alternate clients - Epicor Mobile Access, Epicor Web Access, Web Services and Service Connect.
You can use this action with the following Directives Types:
designed Click this link to launch the Design Informational Message Template program. Use this program
to enter a message that contains information you want users to see. Based on the condition(s) you
define for the current directive, the information message displays. You can select one of the
following Severity modes when setting up an informational message: Information, Warning, Error
and Update Conflict.
You can also insert BPM Call Context data, field and table variables into these informational
messages. You do this by designing a query that pulls in these values from fields. You use the
Select Table Field(s) window to leverage this functionality. Launch this program by right-clicking
the Text field and selecting either the Field Query or the Table Query options.
You can also select if the BPM message displays as an individual message or as a grid item.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about each
option in this program. This variable is not visible if the method data transaction does not support
multiple dirty row updates.
Setters
Use the items found within the Setters group to change values of selected fields.
Use this action to set the value of a field in a BPM data table.
This table is used with the custom data storage functionality available through CallContext tables. You can check
the field value in a condition of a further directive or pass this value on to the client application.
You can use this action with the following Directives Types:
specified (call context) Click this link to launch the Select Table Field(s) program. Use this program to specify
a call context field that is part of the BPM action.
specified Click this link to launch the Specify an Expression program. Use this program to
compose an expression used as the call context variable value. The expression can
contain literal values, data from the current transaction, and functions that can perform
calculations and data type conversions.
Set By Query
Run this action to use a query to change the value of a selected field.
You can use this action with the following Directives Types:
specified Click this link to launch the Select Table Field(s) program. Use this program to specify a
standard or custom field that is changed through this action. Use this program to choose a
field from any temporarytable (tt table) included in the current method’s parameters.
designed Click this link to launch the Compose Query program. Use this program to build a Business
Activity Query (BAQ) used with this action. In addition to standard tables, the query phrases
can be run against temporary tables to analyze values passed in tablesets or linq row sets.
specific Click this link to launch the Specify an Expression program. Use this program to compose
an expression that is evaluated against the comparison. The expression can contain literal values,
data from the current transaction, and functions that can perform calculations and data type
conversions.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the action
performs. Read the Support for Multiple Dirty Rows section in this chapter for details about
each option in this program. This variable is not visible if the method data transaction does not
support multiple dirty row updates.
Set Field
Use this action to change a selected field to a different value, using a row set action that you define.
You can use this action with the following Directives Types:
Set the specified field of the changed row to the specific expression with rule
specified Click this link to launch the Select Table Field(s) program. Use this program to specify a
standard or custom field that is changed through this action. Use this program to select a
field from any temporary table (tt table) included in the current method’s parameters.
the changed
Click this link to specify which row set is affected when the rule activates. You can toggle
row
between six values: the added row, the deleted row, the changed row, the unchanged
row, the updated row and all rows.
specific Click this link to launch the Specify an Expression program. Use this program to compose
an expression that is evaluated against the comparison. The expression can contain literal
values, data from the current transaction, and functions that can perform calculations and
data type conversions.
with rule Click this link to launch the Execution Rule program. If the data transaction supports multiple
dirty rows (rows that contain unsaved data), you can use this program to select how the
action performs. Read the Support for Multiple Dirty Rows section in this chapter for details
about each option in this program. This variable is not visible if the method data transaction
does not support multiple dirty row updates.
Dependent Directives
You can establish relationships between directives created for the same business object method. These relationships
are dependent; if one directive executes successfully, the application runs the other directive. This first directive
is called the Primary Directive, and it becomes the condition for the second, or Dependent, directive. Dependent
directive processing applies only to method directives, and not to data directives.
Using dependent directives helps prevent errors. Leverage this function when you do not want to update a record
or send a confirmation email until you are sure the transaction completed successfully. If an action is run before
the transaction, there may be an error in the data – but the action runs anyway. For example, a confirmation
email may be sent indicating the transaction was successful, when actually it was not. If the condition for the
email, however, is on a dependent directive, you know for certain the transaction was successful before the email
was sent.
To do this, you first create the primary directive and then the dependent directive. Both directives are created for
the same method.
Primary Directive
The primary directive must either be a pre-processing or a base processing directive. Typically, you first define
the condition for the directive and then use the Enable Post Directive item within the workflow.
This indicates that the result of the primary directive – success or failure – is passed to another directive belonging
to the same method.
Dependent Directive
This directive must be a post-processing directive. To create the dependent directive, place the Condition block
in the block the workflow and select the "This directive has been enabled from the specified directive" statement.
Click the “specified” link to select the pre-processing or base processing method.
This condition statement indicates the application runs the dependent post-processing directive based on the
condition(s) specified in the primary directive.
Case Studies
This section of the chapter explores some step-by-step case studies. Each case study explores a different aspect
of the functionality you can leverage within the BPM module.
Many customers want to ensure when they create new parts, they have a part class or product group named. In
this example, the naming depends on whether the part type is purchased or manufactured. This example
demonstrates the Business Process Management (BPM) features to make a field mandatory based on a condition.
Key concepts are:
• Use built-in BPM functionality.
• Use conditional actions.
6. Click Search.
8. Click OK.
The Business Object returns on the form.
9. In the Method Description field, enter Set Part Class or Product Group Mandatory.
2. In the Directive Name field, enter Mandatory Part Class and Group.
4. Click Save.
1. In the workflow items toolbar, click the Condition icon and drag it to the workflow pane of the Designer,
below the Start item.
3. Click your mouse, select any of the Start connector symbols, drag the line and point it to any of the Condition
element entry points.
The connection between the two elements is now established.
You will now build the first condition that checks if the Part Type is set to Purchased and Part Class is empty.
5. In the Condition pane at the bottom, click the Add Line icon.
6. In the Condition field, invoke the list and select The specified field of the changed row is equal to the
specified expression.
10. From the list of available fields, select the TypeCode check box.
13. In the Editor text box, enter "P" (this expression stands for Purchased parts, remember to include the
quotation marks).
3. In the Condition field, from the list, select the specified field of the changed row is equal to the
specified expression.
7. Click OK.
9. In the Editor text box, enter "" (quotation marks represent a blank).
This states that when the Type field in Part Maintenance of the changed row is P (for Purchased) and the
Class field of the changed row is blank, execute the following action(s). You will define these actions in the
following workshops.
1. In the workflow items tollbar, click the Raise Exception icon and drag it to the workflow pane of the
Designer, below the Condition item.
4. Select the True exit point, drag the line and point it to any of the Raise Exception element entry points.
6. In the Actions pane, verify raise exception based on the designed template displays.
10. In the text box, enter Purchased parts must have a Part Class - BPM.
You are now ready to extend the workflow by adding a second condition to make the Group field mandatory
for manufactured or kit parts.
1. In the workflow items tollbar, click the Condition icon and drag it to the workflow pane of the Designer,
to the right of the first Condition.
2. Create a connection between the False exit point of the first Condition and any entry point of the second
Condition.
4. In the Condition pane at the bottom, click the Add Line icon.
5. In the Condition field, invoke the list and select The specified field of the changed row is equal to the
specified expression.
9. From the list of available fields, select the TypeCode check box.
12. In the Editor text box, enter "M" for (Manufactured, including the quotations).
3. In the Condition field, invoke the list and select The specified field of the changed row is equal to the
specified expression.
7. From the list of available fields, select the TypeCode check box.
8. Click OK.
10. In the Editor text box, enter "K" for Sales Kit, including the quotations.
2. In the third condition line, in the Operator field, verify And displays.
3. In the Condition field, from the list, select the specified field of the changed row is equal to the
specified expression.
8. Click OK.
10. In the Editor text box, enter "" (recall quotation marks represent a blank).
This states when the Type field in Part Maintenance is M (for manufactured) or K (for sales kit) and the
Group field blank, then execute the following workflow action.
1. In the workflow items tollbar, click the Raise Exception icon and drag it to the workflow pane of the
Designer, below the second Condition item.
3. Select the True exit point, drag the line and point it to any of the Raise Exception 1 element entry points.
5. In the Actions pane, verify raise exception based on the designed template displays.
9. In the text box, enter Group is mandatory for manufactured or kit parts - BPM.
14. On the Pre-Processing > Detail sheet, select the Enabled check box.
1. In the Part field, enter a new part. In this example, enter MyNewPart.
5. Click Save.
The first BPM condition is met and the exception message is fired.
6. To the error message from the BPM that says you must specify a Part Class, click OK.
8. Click Save.
The part saves with no errors.
1. To test the second branch of the BPM workflow, click New to enter a new part.
5. To the error message from the BPM that says you must specify a Group field, click OK.
To test the second part of the condition, select Sales Kit for the part Type and verify the same exception
displays.
8. Click Save.
The part now saves with no errors.
BPM Holds can prohibit data transaction processing for specified reasons. In this example, a simple condition
checks if the State field has been entered for a Customer record. If not, a Customer Review BPM hold is attached
to the record. You then prevent creation or update of sales orders for customers on a Customer Review hold.
In this example, place or remove the hold during the Post Update process for a customer. You do not want to
accidentally place a record on hold before it passes through validation and update. It is not possible to use
condition tests that rely on the RowMod identifier (Add, Update, or Delete) during the Post Update Process. Use
a Pre-Processing directive to test for conditions to place or remove holds, but use a Post-Processing directive to
perform the actions.
1. Click New.
7. Click Save.
6. Click Search.
9. Click Save.
4. In the workflow items tollbar, click the Condition icon and drag it to the workflow pane of the Designer,
below the Start item.
5. Click your mouse, select any of the Start connector symbols, drag the line and point it to any of the Condition
element entry points.
The connection between the two elements is now established.
7. In the Condition pane at the bottom, click the Add Line icon.
8. In the Condition field, invoke the list and select The specified field of the changed row is equal to the
specified expression.
12. From the list of available fields, select the State check box.
Add an Action
1. In the workflow items tollbar, click the Enable Post Directive icon and drag it to the workflow pane of
the Designer, below the Condition item.
2. Click the Condition's True exit outbound connector (found on the left) and connect it to any of the Enable
Post Directive entry points.
6. Click Save.
4. In the workflow items tollbar, click the Condition icon and drag it to the workflow pane of the Designer,
below the Start item.
5. Click your mouse, select any of the Start connector symbols, drag the line and point it to any of the
Condition element entry points.
7. In the Condition pane at the bottom, click the Add Line icon.
8. In the Condition field, invoke the list and select The specified field of the changed row is equal to the
specified expression.
12. From the list of available fields, select the State check box.
14. In the Condition field, click the drop-down next to is equal to.
This indicates that directive should execute when the Customer.Update method initiates and the Customer
State field is NOT blank.
Add an Action
1. In the workflow items tollbar, click the Enable Post Directive icon and drag it to the workflow pane of
the Designer, below the Condition item.
2. Click the Condition's True exit outbound connector (found on the left) and connect it to any of the Enable
Post Directive entry points.
6. Click Save.
4. In the workflow items tollbar, click the Condition icon and drag it to the workflow pane of the Designer,
below the Start item.
5. Click your mouse, select any of the Start connector symbols, drag the line and point it to any of the
Condition element entry points.
7. In the Condition pane at the bottom, click the Add Line icon.
8. In the Condition field, invoke the list and select this directive has been enabled from the specified
directive.
11. In the Directive field, select Condition Test to Remove Hold and click OK.
This way, you specify which pre-processing directive enables the post-processing directive you are currently
configuring.
Add an Action
1. In the workflow items tollbar, click the Remove Holds icon and drag it to the workflow pane of the Designer,
below the Condition item.
2. Click the Condition's True exit outbound connector (found on the left) and connect it to any of the Remove
Holds entry points.
6. In the Hold Type field, select Customer Review and click OK.
Recall you created this hold type at the beginning of this workshop.
4. In the workflow items tollbar, click the Condition icon and drag it to the workflow pane of the Designer,
below the Start item.
5. Click your mouse, select any of the Start connector symbols, drag the line and point it to any of the
Condition element entry points.
7. In the Condition pane at the bottom, click the Add Line icon.
8. In the Condition field, invoke the list and select this directive has been enabled from the specified
directive.
11. In the Directive field, select Condition Test to Set Hold and click OK.
This indicates the directive should execute after the Condition Test to Set Hold directive executes.
Add an Action
1. In the workflow items tollbar, click the Attach Hold icon and drag it to the workflow pane of the Designer,
below the Condition item.
2. Click the Condition's True exit outbound connector (found on the left) and connect it to any of the Attach
Hold entry points.
7. In the Comment field, enter BPM Hold - Customer.Update and click OK.
4. Click Search.
8. Click Save.
4. In the workflow items tollbar, click the Condition icon and drag it to the workflow pane of the Designer,
below the Start item.
5. Click your mouse, select any of the Start connector symbols, drag the line and point it to any of the Condition
element entry points.
7. In the Condition pane at the bottom, click the Add Line icon.
8. In the Condition field, invoke the list and select the hold of the specified type is attached to the
business object.
11. Expand the following nodes: Erp.SalesOrder > Objects, linked with the object "Erp.Sales Order" >
via OrderHed.
13. In the Hold Type field, verify XXX Customer Review (where XXX are your initials) and is attached
populates.
Add an Action
Define an action to display an exception message.
1. In the workflow items tollbar, click the Raise Exception icon and drag it to the workflow pane of the
Designer, below the Condition item.
4. Select the True exit point, drag the line and point it to any of the Raise Exception element entry points.
6. In the Actions pane, verify raise exception based on the designed template displays.
9. In the text box, enter This customer is on hold because a required field has not been entered - BPM.
This action executes when the Customer.Update method initiates and specified conditions are met.
1. To test the BPM, enter a sales order for a customer with no State defined in master record. When you add
a customer to an order, the application displays an exception. In this example, customer Addison is used.
Menu Path: Sales Management > Order Management > General Operations > Order Entry
The CRM menu path is: Customer Relationship Management > Order Management > General Operations
> Order Entry
3. Click New.
In this example, you could continue entering the order. In the real environment, to prevent the order from being
completed, you can create a pre-processing directive for the SalesOrder.Update method to check for the hold
and raise the same exception.
You can use BPM to automatically preview or print a report when the BPM data directive executes. In this example,
apply the standard data directive on the OrderHed table to preview the Sales Order Acknowledgement report
when user enables a check box.
To configure the Auto-Print action, select a report, select a printer and print options, and configure the mapping
of input values for report parameters. The Auto Print action is typically triggered by the execute custom code
action or after a certain condition is met.
5. Click Search.
4. Click the Condition icon and drag it to the workflow pane of the Designer, below the Start item.
7. In the Condition pane at the bottom, click the Add Line icon.
8. In the Condition field, invoke the list and select The specified field has been changed from any to
another.
11. From the list of available fields, select the AutoPrintReady check box and click OK.
Add an Action
1. In the workflow items tollbar, click the Auto Print icon and drag it to the workflow pane of the Designer,
below the Condition item.
2. Click the Condition's True exit outbound connector connect it to any of the Auto Print entry points.
4. In the Actions pane, verify Automatically print specified report with specified options displays.
6. In the search dialog box, the Basic tab presents fields for entering search criteria specific to reports.
7. In the Report Type, select the available type of report you want to use. In this example, select SQL Server
Reporting (SSRS) type.
8. In the Report Table Level field, select 'OrderHed' is the Primary table option.
This means only the reports where OrderHed is defined as the primary table will become available for
selection.
9. Click Search.
10. From the list, select OrderAck (Sales Order Acknowledgement) and click OK.
13. In the Print Action field, you can select if you want to automatically send the report to the printer or if you
want to preview it first. In this example, select Auto Preview.
Now you must specify the Report Parameters. On this sheet, you can add or edit the actions associated with
the listed parameters so that values can be passed to the report in the context of the Auto Print action.
2. In the OrderNum parameter, click the arrow on the right-hand side and select The specified table and
field value.
3. Click the specified link to launch the Select Table Field(s) window.
6. Click OK.
7. Verify the OrderNum parameter is set to The ttOrderHed.OrderNum table and field value.
2. Enter a Customer, in this example, you create a new order for the customer Dalton.
4. On the Lines Detail sheet at the bottom, enter the the order details. In this example, enter the following
information:
Field Value
Part DSS-1010
Order Quantity 10
6. Click Save.
7. The Sales Order Acknowledgement report automatically displays for the order in focus.
While the Business Process Management (BPM) module contains actions that address typical business needs, you may
have additional requirements specific to your organization or industry. To handle these unique situations, you can
customize BPM method, data, and updatable BAQ directives.
You can customize BPM through the Execute Custom Code action. When you select this action, you can enter C# code
through a code window, validate your code, and then enable the directive. When conditions on the directive are met,
your custom code runs, insuring data entry matches company requirements, displaying warning and information dialog
boxes, populating default data, and so on.
If you need users to enter custom data as part of a BPM requirement, use the BPM Data Form Designer. Through this
program you can create a custom data form that includes text fields, radio button options, drop-down lists, and buttons.
You can also secure this data form by requiring users to enter a password. This data form is then launched through
an action on a directive. When the directive activates, the data form displays and users enter the data you need.
To complete the customization tools, you can create custom external methods and Service Connect workflows. The
BPM functionality generates a code shell for your custom VB.NET or C# method, and then you can access this shell
® ®
within Microsoft Visual Studio to create your external method. Once your external method is compiled, you can
select it on a directive action. Through this same functionality you can also create a Service Connect workflow that
links the data generated through the directive to Service Connect. This data is then available to other Epicor or third
party applications.
You use the Execute Custom Code action to create a custom method, data, or updatable BAQ directive. Leverage
this feature to build a custom action that runs when the condition(s) on a directive activate; you create these
actions using the C# programming language.
During this example, you will create a data directive that monitors Part Maintenance. When a user enters a new
Part ID that has the "HDW" prefix, the Product Group field automatically populates with the Hardware option.
1. You need this data directive to monitor the Part ID field. For the Table, find and select the Part table.
2. Click the Down Arrow next to the New button; select New In-Transaction Directive.
7. From the Callers group, click and drag the Execute Custom Code item to the design area.
9. Click and drag a connection line from the Start item to the Execute Custom Code item.
10. In the Actions pane, the Synchronously execute custom code... line displays. Click the code... link.
ttPart_Row.ProdCode=prodCodeHardware;
}
}
}
4. Now on the Data Directives Maintenance window, select the Enabled check box.
5. Click Save.
11. The Group drop-down list updates to display the Hardware product group.
Use the BPM Data Form Designer program to create custom data forms you can then launch through method
and updatable BAQ directives. You launch these custom forms by adding the Call BPM Data Form item to a BPM
workflow.
You can create simple forms which contain text and two buttons (for example, Abort and Continue) to complex
forms which include entry fields that update your database. BPM data forms capture data or button actions to
control a specific BPM processing directive. Use this functionality to either conditionally display a form or capture
the data required against a specific transaction.
When a custom BPM Data form displays, the directive pauses until the user enters the required data or clicks the
appropriate button. While the user enters data on the form, the method call is stays active on the server. When
the user completes the requirements on the BPM custom form, the call is sent to the server again, but this time
it skips all the actions it previously ran.
3. Add a Form Title; this text becomes the title which displays on the BPM form. You can add links to field
content within CallContext tables. Before the BPM custom form displays, this data is pulled from the field
content and is shown as text within the BPM form.
4. Optionally add Form Text that details the purpose of the form and any instructions required to use it. You
can add links to content of fields in CallContext tables. Before the BPM custom form displays, this data is
pulled from the field content and is shown as text within the BPM form.
5. Click Save.
Add Fields
Use the Fields sheet to add controls to the form.
2. Click the Down Arrow next to the New button; select New Field. A new row is created on the Fields
sheet; use this row to enter details about the new field.
3. Select which BPM data table Field is used to store information entered into the form. Each field can use
one of the twenty user-definable fields. These fields are available for the following data types: character,
number, date, check box, and shortchar.
4. The Field Label is the text that displays before the field.
5. The Field Format controls the number and format of the characters entered into the field. You can edit
this value for character, number, and shortchar fields.
6. Optionally, select the Mandatory check box to require users to complete the field before they can exit the
BPM data custom form.
7. Use the Default field to specify a value that displays in the field automatically when the form launches. If
needed, the user can change this value.
8. The Order field indicates where the field displays on the form. Higher numbered fields appear after lower
numbered fields. The application automatically increments this field by 10 for each field you add in the order
that you add them.
Different field types, such as radio buttons, require you define which field value options are available. Enter these
options in the Field Values grid.
1. Click the Down Arrow next to the New button; select New Radio Button Set.
2. A new row displays on the Form Fields grid; notice this row displays the Radio Buttons icon.
3. When you select the Radio Buttons row, the Field Values pane displays. To add a field value, click the New
button in this pane.
4. Enter the Value you wish to define. In this example you enter a Ms. value.
5. Now define the Label you want to appear on the form during Run Mode. This text displays on the form
next to the radio button option.
6. The Seq value indicates the order in which the radio button options appear on the form. In this example,
the Ms. radio button option will display above the Mr. radio button option.
7. Continue to add the radio button options you need. When you finish, click Save.
Create Password
You can also control access to the custom BPM form by adding a password field. Before the directive can continue,
users must enter the password value on the custom data form. This password can be a phrase or a user logon.
This password value is stored within the action.
1. Click the Down Arrow next to the New button; select New Password Field.
2. A new row displays on the Form Fields grid; for its Field Label, this row automatically displays a Password:
value.
3. Enter how many Retry Attempts you will allow the user to do. If the user fails the last attempt, the BPM
Data Form closes.
4. If you want a dialog box to display when the user fails to log on, select the Raise An Exception On Failure
check box.
5. Indicate whether you want this password to use a System login password or a User Defined password.
The System login is a password from a network account, while a User Defined password is unique for this
form.
6. Enter the password you will use in the New Password field.
8. Click Save.
Every form automatically includes an OK button. You can remove this button or add additional buttons to meet
your requirements. The form must have at least one button.
1. Click on the Buttons tab. Notice the OK button displays on the Form Buttons grid by default.
2. If you wish to add a button, click the Down Arrow next to the New button and select New Button.
3. The Seq field defines where the button displays on the data form. If you add multiple buttons, use this field
to change the button's location.
4. Now in the Label field, enter the text you want to display on the button.
5. Continue to add and modify the form buttons as you need. When you finish, click Save.
You can test the data form within the BPM Data Form Designer.
1. To test how your BPM data form displays in Run Mode, click the Actions menu and select Test BPM Data
Form.
If you can enter data without error, the BPM data form is working correctly. You can now use it on a directive.
Now that you have created a data form, you can use it on a method or updatable BAQ directive. When the
directive activates, the data form displays and users enter the data you designed.
During the following example, you will create a post-processing directive for the Customer.Update method that
causes the data form to display. After a user makes a change to a customer record and clicks Save, the BPM form
displays. The user enters contact information for a manager in this data form. After the user clicks OK, an email
is sent to a manager; this email details which customer record was updated.
1. In Method Directives Maintenance, create a new directive. In this example, the method is
Customer.Update and the directive type is post-processing.
2. Enter a Directive Name. For this example, you enter Alert Manager.
5. From the Callers group, click and drag the Call BPM Data Form item to the design area.
7. Click and drag a connection line from the Start item to the Call BPM Data Form item.
8. In the Actions pane, the Call the named BPM Data Form using no customization always line displays.
Click the named link.
12. The name of the selected data form displays in the action line.
By configuring this action, you specify the data form you created displays when the specified conditions are met.
However notice in this example, no conditions are defined, which means this method directive will activate each
time a user updates a customer record.
1. Click and drag the Send E-mail item onto the design area.
2. Click on the Call BPM Data Form item to display its connection points.
3. Connect the Call BPM Data Form item to the Send E-mail item.
4. In the Actions pane, the send e-mail asynchronously based on the designed template line displays.
Click the designed link.
2. In the Name field, enter an appropriate name for the email template.
3. In the From field, enter the e-mail address for the email that handles your global alert email.
4. In the To field, right-click and select the Call Context > callContextBpmData context menu. You use this
context menu to link data from the data form to your email.
5. For this example, you want to link the To field to the Character01 field on the data form. This field contains
the email address for the manager who will receive the email message.
7. You can now add more fields from the data form in the Text field. As you did previously, right-click the
field and select Call Context > callContextBpmData and select the fields you use on the data form. In
this example, you select Character03 (Honorific) and Character02 (Last Name) from the data form.
8. You want the message to display the name of the customer that the user updated. To do this, right-click
the Text field; from the context menu, select the Field Query... option.
9. Enter a Name for your field query. In this example, you enter CustomerName.
10. Click on the Table drop-down list and select the temporary table that contains the field you want to populate
on the email; for this field query, you select the ttCustomer table.
11. You only want this field to populate when a customer record is updated. Select the Updated records check
box.
12. To filter customer records the user has not updated, select the Unchanged records check box. This query
will now only find customer records changed by the current run of the Customer.Update method.
13. Select the specific field you want to populate on the email message. Since you want to populate the email
text with the customer's name, you select the check box next to the Name field.
15. You return to the Design E-mail Template window. You next need to populate the e-mail with the identifier
for the user who changed the customer record. To begin, you enter the "was updated by" text.
16. Now right-click and select the Call Context > callContext client sub-menu.
18. Your Text field now contains the query options and static text you need. When this method is active, the
query fields populate with values from the selected records, and the email message will contain these values.
1. The name of the e-mail template now displays in the second action.
The CRM menu path is: Customer Relationship Management > Order Management > Setup > Customer
7. This causes the data directive to activate. The first action displays the Manager Alert data form.
9. Click OK.
10. The next action now runs. An email notification is sent to the manager you entered on the data form.
You can create custom external methods using the C# or Visual Basic .NET programming languages. through
this feature, you can implement complex external methods that extend or replace the functionality os server-side
application business logic.
You can create external methods for method, data, and updatable BAQ directives. These custom BPM external
methods are public, typically static methods that accept the same parameters as the method you are extending.
Because of this, custom external methods are directly integrated with the Epicor application. This functionality
is only available if your user account has BPM Advanced User permissions.
You begin by creating a custom action within the BPM module. You do this by generating a class within a method
that has a suitable signature. You then open the generated class within a .NET environment where you enter the
code for the custom external method. Lastly, you deploy the custom external method to the application. You
can then use the custom external method with either a method directive or an updatable BAQ directive.
Through this feature set, you can also create Service Connect workflows for method, data, and updatable BAQ
directives. By creating these workflows, you can set up directives that move data out of the Epicor application.
This integrates the data generated by this directive with the Service Connect application. Once this data is available
in Service Connect, you can then link it to another Epicor application or a third-party application for display and
use.
This section describes how you use the BPM tools to create and enter custom code. However specific details
about the C# or Visual Basic .NET languages are beyond the scope of this user guide. If you have any questions
about your custom code, refer to the various reference guides and training manuals available for the programming
languages.
You can create external methods and Service Connect workflows if you have advanced BPM user rights. You or
your system administrator assigns these rights to your account through User Account Security Maintenance.
To assign these rights to your account:
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
2. Use the Detail sheet to find and select the user account.
5. Click Save.
The next time you log into the Epicor application, you can click the Advanced... buttons in both Method Directives
Maintenance and Updatable BAQ Directives Maintenance. You can also select this option from the Actions menu
in both programs. You can also now click the Create Programming Interface... button in Method Directives
Maintenance, Data Directives Maintenance, and Updatable BAQ Directives Maintenance.
Method Arguments
The Method Arguments window displays the arguments contained in the current method or updatable BAQ;
use this program to review what you need to know before you build your external method. You can also use
this program to launch the Programming Interface Generator Form; you use this window to generate a class
within a method that has a signature which matches the signature of the business object for which you are
creating the external method.
You launch the Method Arguments window from either Method Directives Maintenance or Updatable BAQ
Directives Maintenance. You display this window through the same steps in both programs. Here’s how you
launch this window within Method Directives Maintenance.
1. Click the Method Code button to find and select the method that you need.
To access this feature, you can also click the Actions menu
and select the Advanced option.
3. The Method Arguments window displays. The signature for the current method displays within the grid.
Use this grid to examine the building blocks for the current method; this information is useful as you program
your action. Notice you cannot edit any of these fields.
4. The Order field displays the sequence of the method arguments. This indicates which argument runs before
the next argument, displaying the logic sequence of the selected method.
5. The Direction field indicates how the data flows through the argument. In this example, the direction is
INPUT, OUTPUT, and RETVAL.
• INPUT - Indicates the arguments that pass data into the database.
• OUTPUT - Indicates the arguments that push the data back to the client for display.
• RETVAL - Defines the argument that determines the return value.
7. The Type field displays the .NET classification for each argument. This example displays the System.String,
System.Int32, System.Boolean, and Erp.Tablesets.ABCCodeListTableset types.
8. Click the Create Programming Interfaces... button to launch the Programming Interface Generator
Form. You use this window to create a template for a custom external method. The next section describes
how to use this functionality.
Use the Programming Interface Generator Form to create a custom external method for the selected business
object method, data table, or updatable BAQ.
If you are creating an external method for an updatable BAQ or method directive, you launch the Programming
Interface Generator Form from the Method Arguments window (as described previously). If you are creating an
external method for a data directive, you launch this window in Data Directives Maintenance by selecting a table
and then clicking the Create Programming Interface... button.
After you select the business object method, database table, or updatable BAQ, you use this window to extend
the directive's functionality with the following action component types:
• .Net Assembly [C#] – Select this option to create a template C# class with a single empty function. This
function matches the signature of the method you are customizing. You then write the custom code in this
function statement, build the C# assembly, and deploy it to the server. You can then select this custom external
method on a directive.
• .Net Assembly [VB.NET] – Select this option to create a template VB.NET class with a single empty function.
This function matches the signature of the method you are customizing. You then write the custom code in
this function statement, build the VB.NET assembly, and deploy it to the server. You can then select this
custom external method on a directive.
• Epicor Service Connect Workflows – Use this option to create the schemas required for an Epicor Service
Connect workflow. Through this Epicor application, you create integrated platforms for secure data workflows
between the Epicor application and third party applications.
When you use the Programming Interface Generator Form to generate a .NET assembly for C#, you generate
the .cs code shell that integrates with the selected business object method.
1. After you click the Create Programming Interfaces... button, the Programming Interface Generator
Form displays.
3. The C# code shell for the custom action generates. It displays on the .NET Action Template - C# sheet.
4. Click Save.
7. Click Save.
When you use the Programming Interface Generator Form to generate a .NET assembly for VB.NET, you generate
the .vb code shell that integrates with the selected business object method.
1. After you click the Create Programming Interfaces... button, the Programming Interface Generator
Form displays.
3. The VB.NET code shell for the custom action generates. It displays on the .NET Action Template - VB.NET
sheet.
4. Click Save.
7. Click Save.
1. After you click the Create Programming Interfaces... button, the Programming Interface Generator
Form displays.
2. Select the Epicor Service Connect Workflows radio button. The workflow schemas now generate.
3. The Method Schema sheet displays the elements required to link the custom action to the Service Connect
workfow.
4. The Input Schema sheet displays the path and filename used to generate the input schemas required for
the Service Connect workflow.
5. The Output Schema sheet displays the path and filename used to generate the output schemas required
for the Service Connect workflow.
7. The Browse For Folder window displays. Use this window to find and select the folder where you wish to
save these .xsd files.
8. If you are on the same machine as Epicor Service Connect, save the schemas to the
SCS\Schemas\UserSchemas folder where Service Connect is installed. Saving the schemas to that location
makes them available for use in Service Connect workflows. You can then import them into Service Connect.
The In Schema is named MD_<BOName>_<MethodName>_Request.xsd and the Out Schema is named
MD_<BOName>_<MethodName>_Response.xsd.
9. Click OK.
The schemas are now saved within this location. Review your Epicor Service Connect documentation and the
Epicor Service Connect User Guide to learn how to design your workflow using these schemas.
You open the external method template within your programming environment to create your custom action.
You do this differently, depending on whether you are developing a C# or a VB.NET external method.
Most transactions start with a GetNew or GetByID method to either populate default values into the dataset or
retrieve existing data from the database. The client keeps a copy of the original row and sends this row back
through an Update method along with the updated row. The server then compares the original copy of the row
to the current row on the actual, or physical, database to make sure it did not change from another source before
it updates the row. In these cases, only the changed row has an A (Add), U (Update), or D (Delete) value in the
table’s RowMod column.
When you write .NET code, be sure you identify the correct row within the tableset. You must do this because
the Update method creates two copies of the row within the inbound dataset. If the copy of the returned row
to the client does not match the actual database, you receive an error and future updates also fail. This feature
is part of the Optimistic Record Locking Mechanism; it applies to both conditions and actions.
Using this example, the blank external method for this example appears like this:
namespace BpmCustomCode
{
public class MyABCCode
{
public void GetList(
ref System.String whereClause,
ref System.Int32 pageSize,
ref System.Int32 absolutePage,
ref System.Boolean morePages,
Erp.Tablesets.ABCCodeListTableset result)
{
}
}
}
® ®
1. Launch Microsoft Visual Studio .
4. Now add the references to the assembles from the Server\Assemblies and Server\Bin folders. This resolves
all the types used in the custom action, including the contract of the selected method.
5. Write the custom business logic in the body of the method. For example, if you are creating a post-processing
directive for AbcCode.GetList() to filter out all records where AbcCode starts with an "A" value, you write
the following code:
namespace BpmCustomCode
{
public class MyABCCode
{
public void GetList(
6. Build the project and deploy the custom method to the External Storage folder.
4. Now add the references to the assembles from the Server\Assemblies and Server\Bin folders. This resolves
all the types used in the custom action, including the contract of the selected method.
5. Write the custom business logic in the body of the method. For example, if you are creating a post-processing
directive for AbcCode.GetList() to filter out all records where AbcCode starts with an "A" value, you write
the following code:
Option Strict On
Option Explicit On
Namespace Bpm.Custom
result.ABCCodeList.RemoveAll(Function(r) r.ABCCode.StartsWith("
A"))
End Sub
End Class
End Namespace
6. Build the project and deploy the custom method to the External Storage folder.
When you finish developing your custom external method, you need to deploy it to the server. This section
describes how you deploy your compiled .NET C# or VB.NET assemblies.
As described previously, you place your external method .dll file in an External Storage folder. This folder is
specified in the web.config file within the customizationSettings section. Typically its directory path is the
Server\Customization\External location.
Now that these external method .dll files are in the External Storage folder, you can deploy these methods to
Business Process Management. You do not need to restart Internet Information Services (IIS). When you select
the Invoke External Method action on a directive, the external method and its compiled assembly display as
options on the action.
To use your external method within a directive, you must create an action that references it.
1. In this example, you create a pre-processing directive for the Erp.ABCCode.GetList business object method.
4. From the Callers group, click and drag the Invoke External Method item to the workflow design area.
5. Now click the Start item. The Start item's connection points display.
6. Click and drag a connection from the Start item to the Invoke External Method item. When select the Invoke
External Method item, the Actions pane displays the Synchronously invoke specified Method from
external assembly action.
7. If you need, select the Synchronously option and change it to Asynchronously. This indicates this external
method can run asynchronously from the condition statement call which initiated the action. This can occur
when the condition statement call does not modify any of its parameters or when it does not require that
the transaction be suspended while it runs.
8. Next select the external method you have created. Click the specified method link.
9. The Add Reference window displays, showing the custom external methods you have created. Select the
custom external method from the list.
11. Your custom external method now displays in the action statement.
12. To complete the action, you link it to the external assembly you created in Visual Studio. Click the external
link.
13. The Add Reference window displays, displays the custom assembles you have built. Select the custom
assembly from the list.
15. The action statement is now connected to both the custom external method and the custom assembly.
Be sure you enable the directive, and then close Method Directives Maintenance. You are now ready to test your
custom external method.
Your custom external method filters any ABC codes that start with the "A" character. To verify this custom
external method works, launch a program that uses ABC codes.
1. For this test, you launch Warehouse Maintenance and find and select a warehouse.
7. Notice in the Search Results, the "A" ABC code does not display as an option. Through your external
method, users can no longer select this filtered ABC code.
PartWhse and Warehse tables. You can then run the same code using just one database query — a major
improvement over 2001 queries. The following code is an example of a more efficient query:
partwhse-loop:
FOR EACH partwhse
fields(Company WarehouseCode partnum)
WHERE PartWhse.Company = Part.Company AND
PartWhse.PartNum = part.PartNum NO-LOCK,
EACH Warehse
fields()
where Warehse.Company = partwhse.Company
and Warehse.WarehouseCode = partwhse.WarehouseCode
and Warehse.Site = cur-Site
BY PartWhse.Company PartWhse.PartNum PartWhse.WarehouseCode
no-lock:
This code pattern is an inner table JOIN, indicated by the nested EACH statement. The database will evaluate the
PartWhse and Warehse rows together and return only records that contain both warehouse and part warehouse
data.
1. The matching PartDtl record must have the RequirementFlag value = “Y”.
3. The output temp table needs the CustID and name of the order’s customer.
All of these requirements can be consolidated into a single query using a JOIN operation:
for each OrderRel FIELDS(Company OrderNum OrderLine OrderRelNum ReqDate PartNum
NO-LOCK where
OrderRel.Company = CUR-COMP and . . .[omitted the rest of
the where clause],
EACH PartDtl FIELDS() NO-LOCK WHERE
PartDtl.Company = OrderRel.Company and
PartDtl.OrderNum = OrderRel.OrderNum and
PartDtl.OrderLine = OrderRel.OrderLine and
Global alerts are messages you activate to help specific users track data activity.
You can activate two types of global alerts:
• Standard Global Alerts - Pre-defined alerts that you activate in Global Alert Maintenance. For a selected alert,
you can choose options for enabling the alert, sending email messages, and adding memos to the record that
triggered the alert. Enabling memos helps build a database history for the record.
An active standard global alert writes alerts to the AlertQue table in the application database. To enable email alert
messages, you must set up and activate a supporting Business Process Management (BPM) data directive that
monitors the AlertQue table and sends alert email messages whenever a row is added to the table. Since all standard
global alerts write to AlertQue, this BPM data directive will send email messages for all active standard global alerts
that have the send alert option enabled in Global Alert Maintenance.
• Custom Global Alerts - Alerts that you set up through Business Process Management (BPM) data directives. You
determine, in the data directive, which table/column you want to monitor, the table condition that will trigger an
alert, the custom message sent in the email, and who receives the custom global alert.
Email alert messages for both standard and custom global alerts can be configured to include a shortcut.sysconfig file
that the message recipient can use to launch the Epicor application and display the record that triggered the alert.
By using both standard and custom global alerts, you can set up a complete automatic communication system. Individuals
throughout your organization will then be better able to respond and resolve customer, supplier, and internal issues.
Use Company Maintenance to define the email settings for the current company. The global alerts data directive
uses these settings to send standard global alerts throughout the current company. A custom global alert data
directive also will use these settings for sending email alerts.
On the Emails and Forms sheet, you enter the SMTP Server that distributes email throughout your company.
A SMTP Server must be defined for each company in your organization. Much like a post office receives and
delivers mail to various locations, a SMTP Server receives
®
your company's
®
email and distributes it throughout your
company's email application, for example, Microsoft Office Outlook . When the Global Alerts data directive is
activated by a global alert, the email is automatically sent to the SMTP Server you define in this program. While
a SMTP Server is required, an Exchange Server is not needed to distribute alert messages.
3. In the Email Link group box, the Port field specifies the email link port number for email messages that
distribute within the current company. Be sure to enter an unused port number within this field. The port
number should be high enough to ensure it is not used anywhere else. For example, 7778 is a valid entry
in this field.
This port is used when sending a global alert with a shortcut link (shortcut.sysconfig). When the alert is sent,
the application listens on this port to retrieve the correct data in the program linked to the shortcut.sysconfig
file.
4. In the Email Address field, specify the default From email address used to send global alert email. Some
examples of a From email address are administrator@epicor.com and administrator@salesdemo.mfgdemo.com.
If necessary, you change this address on a specific alert.
5. Now for the Email Label field, specify the default From email label displayed on global alert email. For
example, Epicor Auto Mail.
Just like the Email Address value, you change this label on a specific alert.
6. In the SMTP Server field, enter the server that processes your company's email. For example, enter
smtp.epicor.net.
7. In the Port field, enter the port number for your company's SMTP server. For example: 25
Each standard or custom alert can have a shortcut link (shortcut.sysconfig) file attached to it. When an alert is
triggered, this file is generated based on a template that is set up in the Alert Attachment Maintenance program.
Users that receive these global alerts can use the shortcut.sysconfig file to open the Epicor application to the
program and record that caused the alert.
When the global alert generates, the shortcut.sysconfig is included as an attachment on the email. Users can
then copy the .sysconfig file into their client installation, and then launch the Epicor application through this file.
Two methods are available for associating client installations so they launch with these shortcut link files.
• Permanent Link -- Locate the Epicor.exe file used to launch the application on the client, and associate the
shortcut.sysconfig file with this .exe file. When users receive a global alert, they save the shortcut.sysconfig
file to their client/config folders.
• Temporary Link -- Users can access the Epicor desktop icon's properties and update the Target field with
a run time argument that points to the shortcut.sysconfig file. To restore the default .sysconfig file, users
access the desktop icon's properties again and remove the run time argument.
The standard global alert examples in this guide use a base shortcut.sysconfig file that references the AlertQue
table. In the custom global alert example later in this guide the shortcut.sysconfig file template is refined to
reference the table monitored by custom alert.
Do the following to create the shortcut.sysconfig file template for standard global alerts:
A template for creating shortcut.sysconfig files now is available to the application. When the standard global
alerts are created and triggered in later examples, the data directive will generate a shortcut.sysconfig file that
can be used to open the application program. The file will be attached to the alert email.
To enable standard global alerts to send email alert messages, you need to create a Business Process Management
(BPM) data directive that monitors the AlertQue application table in the application database.
A BPM data directive is a set of conditions and actions associated with a specific database table. Data directives
typically track data changes before they are applied to the database.
The example in this section demonstrates how to create a data directive that monitors the AlertQue table for
global standard alerts and sends messages out to the recipients defined in a standard global alert's configuration.
The standard global alerts discussed in the Standard Global Alerts section will use this data directive.
The Custom Global Alerts section later in this chapter explains how to create a custom global alert by setting up
a data directive that monitors a specific database table and sets the conditions for triggering alerts based on
changes in the monitored table.
4. Click the Down Arrow next to the New button; select New Standard Directive.
5. For the Directive Name, enter Global Alerts and press Tab.
1. Working in the BPM Workflow Designer, click the Condition icon in the left pane and drag it to the Design
area.
4. On the right side of the new condition row, click the Down Arrow and select the There is at least one
updated row in the specified table option.
8. Click OK.
The condition now states There is at least one added row in the ttAlertQue table.
Define the action that occurs when a row is added to the AlertQue table.
This action will generate an email message using variables you design on the e-mail template.
1. Continuing in the BPM Workflow Designer, click the Send E-mail icon in the left pane and drag it onto the
Design area.
5. Now you design the variable fields you want the message template to use. Right-click the From field; from
the context menu, select the Field Query... option.
The Select Table Field(s) window displays with ttAlertQue already selected in the Table field.
8. Now for the Fields, locate and select the EmailFrom in the fields list.
9. Click OK.
Back in Design E-mail Template, the From field now displays a <From/> variable. This variable will populate
with values from the standard global alert.
10. Right click in each of the remain fields on this form, select the Field Query... option, and repeat steps 6-9.
Add the following variables to the template:
Before you add the variable to the Body field, be sure to clear the default text.
When you finish, each field on the Design E-mail Template dialog box is populated with a variable.
Connect the items in your data directive so they execute in the order you need them to run. Enable to the directive
to initiate alert monitoring.
1. Click the Start icon and drag on one of the arrows to draw a line to the Condition icon.
2. Now on the Condition icon, click the Arrow next to the True (+) icon and drag a connecting line to the
Send E-mail icon.
Be sure to select Save and Exit. The Exit button will close
the designer without saving your work.
The Global Alerts data directive is now running. Standard global alerts that you activate in Global Alerts
Maintenance will have this data directive available to send alert emails.
Standard global alerts are pre-built alerts that can be activated and delivered to end users through email and
through a memo added to the record that activated the alert.
The examples in this section demonstrate how to activate standard global alerts in the Global Alert Maintenance
program and how to make supporting configuration adjustments in other application programs. The Business
Process Management (BPM) data directive that is required for email support to standard global alerts was
demonstrated in the previous section.
2. In the ID field, search for and select the 1120 Order has been shipped global alert.
4. Notice this global alert has a value in the Specific Recipient field. The Salesperson value displays, which
indicates the salesperson defined on the sales order will automatically receive this alert message.
6. In the Text field, enter Alert: A sales order has been shipped.
You next need to indicate the salesperson (the specific recipient) will receive alert messages. You activate this
feature in the salesperson's work force record.
2. Click the Work Force ID button to find a workforce record. You also can enter the ID directly.
The corresponding work force record displays.
Now set up a sales order that can be used for testing. Indicate you want an alert message sent when this order
is shipped.
2. Click the Sales Order button to find the sales order that has been delayed. You also can enter the sales
order ID directly.
5. Click Refresh.
Menu Path: Material Management > Shipping / Receiving > General Operations > Customer Shipment
Entry
2. Click the down arrow next to the New button; select New Pack.
3. Navigate to the Lines > Customer Shipment Entry > Detail sheet.
4. Click the down arrow next to the New button; select New Line.
5. In the fields, enter information indicating that the order selected in the previous exercise has shipped. For
example:
Field Data
Order Number 5356
Line 1
Rel 1
Our Ship Qty 3000
Warehouse Shipping Area
7. Click Save.
If warning messages display, click Yes.
You and the designated salesperson receive alert email messages in your email clients.
Set up a global alert that sends emails to the people in an alert group.
The scenario for this example is that an alert group called Quality Assurance is set up. When the alert is triggered,
everyone in the group receives the global alert.
Alert Groups
Use alert groups to communicate job record events to recipients based on production roles. You can activate
alert groups that send alert messages to individuals who perform similar tasks in a manufacturing process.
You structure alert groups so they represent categories that relate to job production roles. Examples of these
categories include engineering, quality assurance, and shop supervision.
You create alert groups in Alert Group Maintenance. When you create an alert group, you then assign it global
alerts that apply to a production role. You can also assign shop warnings to alert groups; shop warnings are
production specific messages. For example, if you want to create a alert group for Quality Assurance, you would
only select the global alerts and shop warnings that apply to quality assurance tasks.
You next use Person Maintenance to assign recipients to an alert group. The Person Maintenance lists people
whose roles are compatible with the alert groups you have created. Use this program to add people to specific
alert groups.
You then create production teams that include the people you defined through Person Maintenance. Each
production team contains a list of people that perform a related role in your manufacturing cycle. However you
can add people to a production team who are not assigned to an alert group. This feature provides flexibility, as
not every person assigned to a production team will receive global alerts, but can still perform other tasks related
to the production team.
When you create jobs, you link a production team to a specific job. As various changes are made to the job
record, they may trigger a global alert. If an alert is triggered, each person who is a member of this team assigned
to an alert group receives the global alert message.
To begin, activate the global alert that informs you an order release status has changed.
2. In the ID field, search for and select the 1170 Job released status has been changed global alert.
4. In the Text field, enter Alert: A job released status has changed.
5. From the Available Global Alerts list, select Job released status has been changed and click the Single
Right Arrow button.
The global alert now displays in the Selected Global Alerts list.
Set Up a Person
Menu Path: Production Management > Job Management > Setup > Person
3. In the Person field, enter XXX (where XXX are your initials).
6. In the Alert Groups pane, in the Available list, select the new alert group and click the Single Right
Arrow button.
The alert group displays in the Selected list.
You now assign your name to a Production Team that will be associated with the job record that you use to test
the alert.
Menu Path: Production Management > Job Management > Setup > Production Team
3. In the Person List pane, from the Available (Active) list, select the record with your name, and click the
Single Right Arrow button.
Your name now displays in the Selected list.
Change the release status of a job with a first article requirement to trigger the alert to be sent to everyone listed
in the group alert.
2. Click the Job button to find a job record. You also can enter the job record ID directly.
5. Click Save to trigger the alert message and then close Job Entry.
The standard global alerts available in Global Alerts Maintenance may not contain an alert you need. You can
create custom global alerts using Business Process Management (BPM) data directives.
The custom global alert in this example notifies you when a job's scheduling priority is changed from NORMAL
to HIGH.
When standard global alerts were set up in the earlier examples, a shortcut link (shortcut.sysconfig) file was
created that opens the Epicor application to the Home Page. You can further refine this file so when a user
launches the Epicor application, it opens the specific program and record that triggered the global alert.
Do the following to refine the shortcut link file template so that the data directive will be able to populate the
generated shortcut.sysconfig file with values that identify the table on which your custom global alert is based.
3. Click the Table button to find a table. You also can enter the table name directly. For example, use the
table on which you will base the data directive in this example.
The other fields now display default information.
5. Locate and review the <Shortcut> element near the bottom of the window.
This element and its child elements have been generated and populated with default values based on the
table you selected in the previous step. The template is saved and used by the data directive to generate a
shortcut.sysconfig file at runtime. It is important to know that this template only needs to be created once
for a company. There is only one template, which is saved by the system, and any data directive that is set
up to generate a custom global alert will use that template and substitute values at runtime for the table
named in the directive and the Epicor ERP installation.
When the custom global alert created later in this example is sent, the data directive will generate a
shortcut.sysconfig file that can be used as a shortcut to the application program and record impacted by the
change. The file will be attached to the alert email.
To begin, you create a new data directive that monitors the JobHead table.
4. Click the Down Arrow next to the New button; select New Standard Directive.
You now add a condition that monitors the SchedCode column on the JobHead table.
1. Working in the BPM Workflow Designer, click the Condition icon in the left pane and drag it to the Design
area.
4. On the right side of the Condition column, click the Down Arrow and select the The specified field has
been changed from any to another option.
The Select Table Field(s) window displays. Notice this window is automatically linked to the ttJobHead
table. This is the temporary table used to store data in the JobHead table before this data is saved to the
database.
7. Click OK.
The condition should now display The ttJobHead.SchedCode field has been changed from NORMAL to
HIGH.
Now create the action that will generate an email message for the custom global alert.
This action will generate an email message based on the e-mail template that you define and save in the Send
E-mail action.
1. Continuing in the BPM Workflow Designer, click the Send E-mail icon in the left pane and drag it onto the
Design area.
5. Next in the From field, enter the address you will use for sending out this email message. For example:
administrator@salesdemo.mfgdemo.com
6. Now for the To field, enter the user(s) who will receive this custom global alert. For example:
test@salesdemo.mfgdemo.com
You can enter multiple email addresses in this field. To do this, add a semi-colon after each address.
7. In the Subject field, enter the value that will display in the Subject field of the alert email. In this example,
enter Job Priority Changed to HIGH.
8. For the Body of the email, delete the informational text and enter "The scheduling priority for Job has
changed from NORMAL to HIGH."
9. Right-click the space after "Job" and select the Field Query... option.
The Select Table Field(s) window displays. Notice the ttJobHead table displays in this window.
12. Scroll down the grid to find and select the JobNum field.
To complete the data directive, you define the sequence through which you want the data directive to run.
1. Click the Start icon and drag on one of the arrows to draw a line to the Condition icon.
2. Now on the Condition icon, click the Arrow next to the True (+) icon and drag a connecting line to the
Send E-mail icon.
Be sure to select Save and Exit. The Exit button will close
the designer without saving your work.
The Global Alert - High Priority data directive now is running and you are ready to test the custom global alert.
To activate the custom global alert, you change a job's status from NORMAL to HIGH and save the job record.
Your active data directive will generate the email alert message with shortcut attachment, based on the condition
change in the JobHead table.
2. Click the Job button to find a job record. You also can enter the job ID directly.
3. Now in the Scheduling Priority drop-down list, change the priority level from NORMAL to HIGH.
4. Click Save.
Saving the change triggers the email action in your data directive, sending an email to all designated recipients.
Now test the shortcut link to verify that when you launch the Epicor application, it automatically launches Job
Entry and displays the job that changed.
1. In your email client, open the custom global alert message, right-click the shortcut.sysconfig attachment,
and select Save As.
2. In the Save Attachment window, navigate to the config folder in your client installation. For example,
navigate to the C:\Epicor\ERP10\ERP10.0.100\Client\Config folder.
3. Click Save.
4. On your desktop, right-click the shortcut icon for your Epicor application and select Properties to display
the shortcut properties window.
5. In the Target field, after the Epicor.exe value , enter the /CONFIG=shortcut.sysconfig run time argument.
Put this shortcut CONFIG argument to the right of an existing CONFIG argument to override the existing
argument. When you are done with the shortcut, you can delete the shortcut argument and go back to
using the existing one.
6. Click OK.
7. Close your Epicor application if it is open, and then double-click the shortcut icon to restart the application.
The application launches, followed by the application program named in the shortcut link (Job Tracker
opens in this example). The job that triggered the alert displays in this program.
Through this updatable dashboard feature set, you create customized views of the data that users can then update
through a dashboard. Updatable dashboards are useful when you need to update a subset of data on multiple records
at the same time for items such as customer contacts, MRP parameters, discount percentages, and so on. When you
use an updatable dashboard for these targeted data entry tasks, you avoid opening these records individually through
the base entry forms.
To use this functionality, the first item you create is an updatable BAQ. You set up this BAQ in the same way as described
in the Business Activity Query chapter by linking tables, creating subqueries, adding filters, and calculated fields. You
then activate the updatable functionality and link this query to an UpdateExt business object method. Users can then
update the database through this BAQ.
You can place updatable BAQs on smart client dashboards, Epicor web access dashboards, and SharePoint dashboard
web parts. After you add these dashboards to the Menu, they become custom data entry programs users can launch
to both review current data and make any updates they need. Optionally, you can also use updatable BAQs on mobile
device dashboards. Once you create a mobile dashboard that contains an updatable BAQ, users run this custom entry
program on an iPhone or other supported mobile device. Users enter data through the mobile device, directly updating
the database wherever they may be. In order to build mobile device dashboards, you must purchase a mobile device
dashboard license from Epicor.
To complete this functionality, you can monitor the data users enter by creating updatable BAQ Business Process
Management (BPM) directives. As users enter data through an updatable BAQ, you can set up Updatable BAQ methods
that validate whether the data entered is correct, send email alerts, or cause other processes to run.
Although you can access most BAQ functionality, to create and modify updatable BAQs you must have both
Advanced BAQ and Advanced BPM rights. Because the updatable business activity queries run through BPM
methods, you need to use these advanced features. You activate advanced BAQ and BPM rights on your account
within User Account Maintenance.
Menu Path: System Setup > Security Maintenance > User Account Security Maintenance
1. Use the Detail sheet to find and select the user record you need.
5. Click Save.
This user account can now access the updatable BAQ features. The next time you log into the application through
this user account, you can use the Update sheets within the Business Activity Query Designer.
You create updatable BAQs in a similar way to display-only BAQs by adding tables, filter criteria, display columns,
and so on. However you have some extra steps, as you need to define which table contains the updatable fields
and you need to make sure the business object methods are correctly linked to the updatable fields.
Just like a display-only BAQ, you can link multiple tables in parent-child relationships. Multiple tables accessed
by each BAQ can be updatable, so you can construct updatable BAQs that modify multiple tables at the same
time. The one limitation is each updatable BAQ can only use one business object. However because multiple
updatable table combinations are possible, you can create an updatable BAQ that matches your business
requirement.
The following sections explain how to create a simple updatable BAQ. The following Customer Contact Updatable
BAQ section then describes a more complex updatable BAQ.
During this example, you will create an updatable BAQ using the Customer table.
Navigate to the Business Activity Query Designer.
Menu Path: System Management > Business Activity Queries > Business Activity Query
You first indicate that a BAQ is updatable through the General sheet.
2. In the Query ID field, enter a value. For this example, you enter CustomerQuery.
After you click out of this field, it becomes read only and you can no longer modify this ID value.
3. In the Description field, enter a concise explanation for the query. For this example, you enter Customer
Query.
4. Select the Shared check box. This check box indicates this query is available to all users. After the query is
saved, all users within your company are able to add this query to their dashboards (if they have Dashboard
Developer privileges).
5. Select the Updatable check box. This activates the sheets under the Update tab. Use these sheets to indicate
the fields you will activate for data entry on each selected BAQ table.
6. Do not select the Global check box. Updatable BAQs cannot be used through the Multi-Site functionality,
as the business object methods required to update and add new records through the BAQ are database
specific.
7. Click Save.
Just like display-only BAQs, you next define the tables, relationships, filter criteria, and display columns your
updatable BAQ will use. In order to continue the Customer table example, this section briefly describes the set
up you need to do in order to complete the query functions.
To define the query table:
2. Use the Filtering field to locate the table you want. For this example, you enter “Custo” to find the
Erp.Customer table.
4. The table displays on the designer area. If you were creating a more complex BAQ, you would repeat these
steps to add more tables.
5. Likewise, you would use the Table List, Table Relations, Table Criteria, SubQuery Criteria, and Function
Call Parameters sheets to further define the data you want to pull from the database through your query.
For information on these sheets, review the Business Activity Queries chapter.
7. In the Available Columns list, select the fields you want to display on the updatable BAQ.
For this BAQ, you select the following columns:
• Customer_CustID
• Customer_Name
• Customer_Address1
• Customer_Address2
• Customer_Address3
• Customer_City
• Customer_State
• Customer_Zip
• Customer_Country
• Customer_TerritoryID
• Customer_CustURL
9. The fields move into the Display Column(s) list. You will later indicate which of these fields are updatable.
General Properties
You can now begin defining the main options for your updatable query. Use the controls on the Update > General
Properties sheet to indicate how users can enter and edit records through the updatable BAQ. You also indicate
which fields are available for data entry.
2. Select the Allow New Record check box to indicate users can add new records through this updatable
BAQ. In this example, the check box is selected, which indicates users can enter new customer records
through this BAQ. When this check box is clear, users will only be able to update existing records.
3. If you wish, enter a Label for AddNew value. This value defines what displays in the drop-down menu
next to the New button on the Standard toolbar when the updatable query is added to the dashboard.
The text you enter here displays as a node on this drop-down menu. Be sure it identifies the purpose of the
new record the users will create through this updatable BAQ.
4. Select the Allow Multiple Row Update check box to give users the ability to make changes to two or
more rows in a table before the data is saved. If this check box is clear, the row data updates automatically
when the user changes to the next row.
5. To make Actions menu options available for use within an Updatable BAQ directive using the BPM
functionality, you need to create action placeholders. You later create updatable BAQ directives using the
BPM functionality for the RunCustomActions method that references the Actions menu options you create.
Click the Define Custom Actions button.
You can also launch the this window from the Actions
menu by clicking Actions > Define Custom Action.
8. Enter an ActionID. This identifier defines the custom action within the updatable BAQ.
9. Enter an ActionLabel. This value defines how the option displays on the Actions menu within the dashboard.
10. If you wish to remove a custom action, click the Delete button.
11. Continue to add the custom actions you need. When you finish, click OK.
The custom actions you add through this functionality are placeholders you can then leverage within the Updatable
BAQ Method Directives program. You use this program to create conditions that monitor these custom actions.
When a user enters data which matches the condition, the condition runs the specific actions linked to it, like
validating data or displaying an informational message.
Next, you use the Update > General Properties sheet to indicate which Display Column fields the users can update.
You can also create or select default values that automatically populate a field.
1. To indicate all of the selected columns are available for data entry, click the Check All Fields as Updatable
button.
2. The Updatable check box is automatically selected on each field. Users can then enter data within this
specific field; this new data is then saved to the database. To prevent users from entering data in a specific
field, click its Updatable check box.
3. The Alias field displays the specific <Table Name>_<Field Name> for each displayed column within your
updatable BAQ.
4. The DataType field indicates the kind of data contained within the specific field. Available types:
• nvarchar – Alphanumeric letters and numbers
• int – Whole numbers only
• decimal – Numbers which also contain decimal places
• date – Date (month, day, year) values only
• datetime – A date value that also includes the time
• bit – Defines a True/False value; on the interface, logical fields appear as check boxes or radio buttons
• uniqueidentifier – Contains an identifier value for a record.
5. To make a field required, select its Is Required check box. This indicates the field cannot be empty. When
users attempt to save a new or existing record within the query and this field is blank, they are not able to
save the record until they enter a value in this field.
6. You cannot update a field if its IsReadOnly property is selected within the table. This check box displays
for your information and cannot be modified. If this check box is selected, users cannot change the data
that appears in this column.
7. Use the Initial Expression field to enter a text value that displays in the field before users actually enter
data into it. Use this feature to place some instructional text in the field to help the user understand what
information is required for this field. For this example, you select the Customer_CustURL field and place
"Enter Customer Website" in this column.
8. If you want to create a calculation to determine the initial expression, click the Column Initial
Expression button. This launches a window similar to the Calculated Field window; use the controls on
this window to create a formula that generates the initial expression you need for a specific field.
You can also define specific acceptable values that will be available in a specific field.
3. Use the tree view to select an updatable field for which you want to define values. In this example, you
select the Customer_State field.
5. The default Format for this Data Type appears. If you need, you can edit this value. Be sure the format
follows the convention of the database. You can review sample format values within the Data Dictionary.
6. If this field is required in order for the BAQ to pull in query results, select the Mandatory check box.
7. Use the Editor Type drop-down list to define the editor control the user will have for entering data within
the updatable field. Available options:
• Common Editor – Activates the Default Value field. Enter a custom text value you need for the field.
This text appears by default; users can then enter a different value in this field.
• Radio Button Set – Causes the Values Editor to appear. Use this sheet to define the various radio
button options this field will use. Users can then select a radio button option from the values you define
in this window.
• DropDown List – Activates the Data from drop-down list. Use this list to define the source of the
drop-down list options. The field then displays options contained on the drop-down list.
8. If you select the Common Editor option from the Editor Type drop-down list, the Editor Default field
activates. Enter the default value you want within this field. When you use this updatable BAQ in a dashboard,
this value is used to perform field level validation either before changes to a field are saved to the database
or after updates to the field are changed and returned for display on the interface.
9. If you want this field to generate a Business Process Management (BPM) method, select the Raise
Events check box. When you complete your updatable BAQ on the Update Processing sheet, you can see
these new methods within the Updatable BAQ Method Directives window. On the finished Dashboard
assembly, this will be used to perform field level validation before proposed changes to the field are committed
or to perform additional updates after the field value has changed.
10. If you want the field to have access to a quick search for finding and selecting data entry values, click the
Quick Search button to locate the quick search you need. You create quick searches through Quick Search
Maintenance; these configurable search programs display input criteria to use for a search, display search
result fields, and returns the data from the specific field you define. For more information on quick searches,
review the Quick Search section within the Searches chapter.
11. If you select the DropDown List option from the Editor Type drop-down list, the Data from field activates.
Use the options from this drop-down list to indicate the source from which the data on this list populates.
Available options:
• Custom Values – Causes the Values Editor to display controls for creating a new list of values. Use this
functionality to define the various list options this drop-down list will use. You add these values using
the Values Editor pane.
• BAQ – Causes the Values Editor to display controls for selecting a BAQ. Click the Query ID button to
find and select the BAQ you need. Next define the Display Column and the Value Column you will
use from the selected BAQ. The Value Column defines the name of the column you wish to use for the
drop-down list; the Display Column indicates the value that displays when users click this list.
• User Codes – Causes the Values Editor to display controls for selecting a specific User Code. User codes
are lists of custom values you define through User Defined Code Maintenance. When you select a
user code, the drop-down list populates with values contained within the custom user code record. For
more information about creating user codes, review the Epicor ICE User Experience and Customization
Guide. The Customization Utilities describes how you create user codes.
12. If you select DropDown List as the Editor Type, you add these values on the Values Editor pane. Click New.
13. Enter a value in the grid. Continue to click New and add the values you need.
14. To remove a value, highlight it on the grid and click the Delete button.
15. Continue creating values for all of the updatable fields you need. When you finish, click Save.
Update Processing
To complete the updatable BAQ, you next set up how the BAQ interacts with a business object's methods.
Business objects contain the code that calls a database, sending current data to a custom dashboard for display,
or populating the database with new data.
A business object (also called a BO) houses the methods used to enter, view, and calculate data for a specific
function within an application. Each process a business object can run is called a method; by default each updatable
BAQ contains at least the following methods:
• GetList – This method pulls in the existing records from the database table for which the business object
interacts. These records then display within the query results.
• GetNew – This method generates a new record and adds it to the database table. If users will enter new
records with your updatable BAQ, they activate this method. A new, blank row is created within the updatable
table, and the user populates the fields linked to this row with data.
• Update – This method save the information to the database with the information a user has entered in the
updatable BAQ. When you test your updatable BAQ by modifying existing data, this method runs when you
click the Update button. When the updatable BAQ is embedded within a dashboard, this method runs when
the user enters new data and clicks the Save button.
Depending on what other update options you selected on the Update > General Properties sheet, additional
methods may be available for your updatable BAQ.
In order for your updatable BAQ to work properly, these methods must be set up to interact with the fields you
designate as updatable. You use the controls on the Update Processing sheet to set up this database interaction.
Each of these methods can be monitored through Business Process Management (BPM) directives. These directives
can evaluate the data passed into or out of the database, interrupting the processing when certain conditions
you define are met. Various actions, again which you define, then automatically run in response to the condition.
You create these Updatable BAQ method directives from within the Business Activity Query Designer.
To use the Advanced BPM processing functionality:
2. Select the Advanced BPM Update only check box to indicate you want to control the updatable BAQ
through one or more method directives.
5. All of the available Updatable BAQ Method Directives display. Notice in addition to the default directives
(GetList, GetNew, Update), the RunCustomAction method or FieldValidate and FieldUpdate methods you
selected for fields that raise events also display.
6. You can create three types of method directives. Pre-processing directives evaluate data before it is saved
to the database. Use pre-processing directives for validation and other tasks you want to run before the
data updates your database.
7. Base Processing directives substitute the normal operation of the business object with custom code you
create. Epicor recommends you never create base processing directives; only create base processing directives
with your consultant or directly through Epicor. If your base processing directive does not work, you will
potentially harm the operating functions of your application.
8. Post-processing directives evaluate data saved to the database, but is now in the process of being returned
to the interface for display. Use post-processing directives when you want to generate an event based on
the data recently recorded to the database.
9. When you finish creating your updatable BAQ method directives, click Close.
You will create Updatable BAQ method directives later in this chapter.
Update Processing
You mainly use the controls on the Update Processing sheet to set up the methods for the updatable BAQ. The
options you select on this sheet generate the expressions required for users to enter data within the updatable
fields.
To generate the expressions on your current BAQ:
2. The BPM Update Processing section activates; click the Business Object button.
3. The Select Business Object window displays. The business objects for the tables on the current BAQ display
by default in this window.
4. From the Suggested business objects list, select the business object you want. For this example, you select
the ERP.Customer option.
5. The Update Method indicates the method used to enter the changes made through the updatable BAQ
to your database. By default, the UpdateExt method displays, which is the update method used to confirm
data is successfully updated through the query.
6. If you need, you can select a different business object by clicking the Select Business Object button.
7. When you have selected the business object you want, click OK.
8. Notice the Tables to update list. This list displays the temporary tables (tt tables) that fill with data before
this information is saved to your database. By default, the main temporary table is selected; if you need,
however, you can select a different table.
9. The Query to Object Column Mapping grid displays how the updatable fields link, or map, to the selected
temporary table. This temporary table uses a ttResult prefix and it contains the data entered through the
updatable BAQ in active memory until the data is saved to the database.
10. The MapTableName and MapFieldName displays the name of the table and the field connected to the
temporary table.
11. The NetDataType field indicates the kind of data stored within this field, like SystemString, System.Int32,
and so on.
12. The Expression field displays the equation used to pull data from the updatable BAQ into the temporary
table. When the data is saved, the data is moved from the temporary table and recorded within your database.
13. Now click the Object to Query Column Mapping tab to see the second part of the updatable query
transaction. This grid displays which temporary table columns are mapped to which database table columns.
14. If you wish to create these expressions manually, click the Expression Editor... button.
15. The Business Object Update Expression window displays. Notice this window is nearly identical to the
Calculated Field Editor window described in the Business Activity Query chapter.
16. The dataset fields display within the tree view. Select the field that has the expression you want to update.
17. Use the Functions pane to change the expression using a function, operator, or BAQ constant. For more
information on these options, review the previous Calculated Fields tables.
19. After you finish making your changes, Save the query.
The BPM directives update with your changes. Your updatable BAQ is now ready to test.
Analyze
The Analyze sheet contains the functionality you use to verify the updatable BAQ can pull (get) data, update
records, and add new records. You can also use this sheet to test a custom Business Process Management (BPM)
method against the updatable BAQ.
After you verify the updatable BAQ can perform functions successfully, you are ready to place it on smart client
and mobile device dashboards. Users can then enter and update the data they need through this query. You will
learn how to place an updatable BAQ on a dashboard later in this chapter.
Do the following to verify you can update existing records through this updatable BAQ.
2. You first need to test whether this updatable BAQ can pull in data from its table. Click the Get List button.
3. You are warned this operation may update data in the database. Click Yes.
4. The Query Results grid populates with data. In this example, customer records display in this grid. If you
created a BAQ method directive to run when the Get List method executes, this directive’s actions would
run as well.
5. You can now test the BAQ to find out if you can update existing records. Double-click a row within the
Query Results grid.
6. The Fields window displays. Notice this window contains all of the fields you indicated were updatable on
the General Properties sheet.
7. Enter a new value in one of the fields. In this example, you enter a website address in the Customer_CustURL
field.
8. This field was selected to raise BPM events within the Updatable field editor. Because of this, two additional
buttons are next to this field. Click the V button to perform the FieldValidate BAQ method directives described
for this Column.
9. The Updatable query operation window displays, indicating whether the Field Validate BAQ directive
returned a True result. Click OK.
10. Click the U button to perform the FieldUpdate BAQ method directives described for this Column.
12. The record you updated is now highlighted within the Query Results sheet.
13. To save this change to the database, click the Update button.
14. Once again, you are warned this operation may update the database; click Yes to close this window.
15. The data displays within the grid. In this example, the customer’s website displays in the Website column.
Now test to see if you can add new records to this updatable BAQ.
2. Once again, you are warned this operation may update the database; click Yes to close this window.
3. A blank row displays on the Query Results list. Double-click this row.
4. The Fields window displays again, but this time all of the fields are blank.
5. Enter the values you need to create a new record. For this example, you enter the main items needed on a
customer record.
6. Click OK.
7. Your new record appears on the last row of the Query Results grid.
8. The last function you can test is a BAQ method directive linked to a custom action. If you created custom
actions for the updatable query and then used the Updatable BAQ Method Directives program to set up
conditions linked to this action, you can test this directive. To do this, first select the custom action you want
from the drop-down list.
9. Click the Run Custom button. If the updatable BAQ directive is set up correctly, the Business Process
Management (BPM) condition and its subsequent actions run as expected. You will review creating updatable
BAQ directives later in this chapter.
Users can enter new customer contacts directly into the database through this updatable BAQ. These contacts
are then linked to a selected customer record. During this case study, you will link the related customer, contact,
role, and ship to location tables together. You will then indicate that only fields within the Customer Contact
table are updatable by users.
4. Select the Shared check box to indicate other users within the current company can use this query.
5. Click the Updatable check box to indicate that users can enter data through this BAQ.
Now add the tables you need for this updatable BAQ.
6. The Erp.Customer table displays on the design area. Because these tables share a logical link, a connection
line displays between these tables.
Because th RoleCd table is not logically linked to the other tables, you must manually link this table to another
table.
Do the following to link the Role Code table to the updatable BAQ.
2. Click the RoleCd table and drag the link to the CustCnt table.
5. From the RoleCd Field or any expression drop-down list, select the Company option.
6. From the CustCnt Field or any expression drop-down list, select the Company option.
7. You want to display all of the customer contacts who are not assigned to a role code. Because of this, you
click the Job Type drop-down list and select the Full Join option.
Now all of the contact records display in your query, regardless of whether they are linked to a role code.
8. To complete the link, you need to have the role identifiers linked between the two tables. Click the
New button again.
9. From the RoleCd Field or any expression drop-down list, select the RoleCode option.
10. From the CustCnt Field or any expression drop-down list, select the RoleCode option.
3. By default, the ShipTo table is a child table linked to the Customer table. You need to change this link so
that the CustCnt table becomes the parent table to the ShipTo table. Highlight the link between the Customer
and the Ship To tables.
7. Click the ShipTo table and drag the link to the CustCnt table.
8. Once again, to complete the link, you need to set up the relationship between the two tables. For this
relationship, however, you want an Inner Join so that only contacts linked to Ship To locations display in
the query results. Click the Table Relations tab.
9. Three columns need to be linked between the Erp.CustCnt and Erp.ShipTo tables. Click the New button as
before.
10. From the ShipTo field or any expression and CustCnt field or any expression drop-down lists, select
the Company option.
11. Repeat these steps to add two more connections. Select the following values for each row:
Select the columns on both tables that you want to view in your results.
4. Move the following columns from the Available Columns area to the Display Column(s) area:
• CustCnt_CustNum
• CustCnt_NoContact
• CustCnt_LastName
• CustCnt_MiddleName
• CustCnt_Name
• CustCnt_ConNum
• CustCnt_ContactTitle
• CustCnt_EMailAddress
• CustCnt_PhoneNum
• CustCnt_FaxNum
• CustCnt_CellPhoneNum
• CustCnt_PagerNum
• CustCnt_HomeNum
• CustCnt_AltNum
• CustCnt_Address1
• CustCnt_City
• CustCnt_State
• CustCnt_Country
• CustCnt_Company
• CustCnt_ShipToNum
6. Move the following columns from the Available Columns list to the Display Column(s) list.
• ShipTo_Name
• ShipTo_Zip
• ShipTo_Company
8. Now move the following columns from the Available Columns list to the Display Column(s) list.
• RoleCd_RoleDescription
• RoleCd_Company
Because these fields will pull in a lot of data, you need to organize it through some sorting selections.
2. You will sort everything by columns within the CustCnt table. In the Tree View, expand the CustCnt node.
3. Now move the following columns from the Available Columns list to the Sort By list:
• CustCnt.Company
• CustCnt.LastName
• CustCnt.FirstName
4. Click Save.
You next must indicate which fields can be updated through the BAQ. You can update as many of the selected
display columns and tables as you need.
1. Navigate to the Update > General Properties sheet. All of the fields you previously selected for display
on the Display > Column Select sheet appear on the grid on this sheet.
2. To indicate users can enter new records through this BAQ, select the Allow New Record check box.
3. Enter the text you want to add for new records within the Label for AddNew field. This indicates that each
new record added through this BAQ will have a label attached to it. You then use this label to identify which
updatable BAQ was used to enter this record in the database. For this example, you enter Add Contact.
4. To give users the ability to modify multiple records before saving them, select the Allow Multiple Row
Update check box.
5. If you want users to update a specific field, select its Updatable check box. In this example, you select all
of the fields within the Customer Connect (CustCnt) table.
To complete the updatable BAQ, you next set it up so the application can process the data users will enter through
the BAQ. You do this through either an advanced business process management (BPM) directive or directly
through the existing BPM directives defined on the business object. For this example, you use the existing BPM
methods.
6. Notice the value in the Update Method field. This field indicates the method used to enter data within the
updatable BAQ; typically this will be the UpdateExt method.
7. Click OK.
9. The Query to Object Column Mapping and the Object to Query Column Mapping sheets now populate
with the database processing information from the selected business object. In this example, the
Expression field displays the ttResult.CustCnt table columns; these values indicate when users enter values
within the updatable BAQ, these values first go to the ttResult.CustCnt temporary table before they save
within the database.
10. When you finish making the changes you need on this sheet, click Save.
The updatable BAQ updates, incorporating the BPM directives you have selected. You should now be able to
enter data through this query, so next you need to test it.
You are now ready to test the updatable BAQ to make sure it works.
3. You are warned the BPM process will update the database; click Yes.
4. The Query Results grid displays the data pulled in through your query.
5. You next need to see if you can edit an existing record. Double-click a row on the grid.
7. Either edit an existing value or enter a new value through this window. In this example, you enter a new
cell phone number for Lonnie Smith.
8. Click OK.
9. You return to the Analyze sheet. The new number appears in the Cell Phone column for Lonnie Smith. This
value is saved to the temporary table (ttCustCnt) you defined on the Update > Update Processing sheet.
10. To save this change to the database, click the Update button.
11. You are warned the BPM process will update the database; click Yes.
12. The data is now saved to the actual CustCnt table within the database. To test entering a new record, click
the Get New button.
13. You are warned again the BPM process will update the database; click Yes.
14. A new row displays within the Query Results grid. Double-click the row.
15. In the Fields window, enter the information you need for the new contact record.
18. As before, this data change is currently stored within the temporary table (ttCustCnt). To add this record to
the database, click the Update button.
19. You are warned the BPM process will update the database; click Yes.
The data is saved to the actual CustCnt table within the database.
Now that this updatable BAQ works correctly, you can use it on both smart client dashboards and mobile device
dashboards.
Database and software dataset schema changes can occur each time a service pack or a new version is installed
on your Epicor application. These changes can cause your updatable business activity queries to become out of
sync with the base environment. Your updatable BAQs will then not run.
To correct this issue, use Updatable Query Maintenance to regenerate your updatable BAQs. When you use this
maintenance tool, they become synchronized with the current version of the database and software and will run
as expected. As part of your upgrade process, always be sure to leverage this tool after each release or version
is installed on your Epicor application.
Menu Path: System Management > Upgrade/Mass Regeneration > Updatable BAQ Maintenance
1. Click the Query ID button to find and select the updatable BAQs you want to regenerate.
2. The updatable queries you select display within the Tree View. Select the updatable BAQ you want to
review.
3. The fields on the Detail sheet display the primary information about the selected BAQ. These fields only
display for your information; you cannot change these values.
4. To regenerate the current updatable BAQ, from the Actions menu, select Regenerate Selected.
5. To regenerate all of the updatable BAQs displayed in the Tree View, from the Actions menu, select
Regenerate All.
The updatable BAQs are now synchronized with the current level of the application.
Updatable Dashboards
The Updatable Dashboard is an extension to the standard dashboard feature. You can use this feature to create
updatable applications for use on a client installation or on a mobile device. When you configure a dashboard
to contain updatable BAQs, the dashboard becomes similar to a data entry program, so users can review, enter,
and update application data.
During this example, you will create a new dashboard using the updatable BAQ you created. This dashboard will
display customers and related contacts. On this dashboard, users first select a customer record, then create and
update contacts for the selected customer record.
You create new dashboards on the Dashboard program:
Menu Path: Executive Analysis > Business Activity Management > General Operations > Dashboard
Create a Dashboard
Now that you have created your updatable Customer Contact query, you can place it on a dashboard.
1. Click the Down Arrow next to the New button; select New Dashboard.
2. In the Definition ID, enter a unique identifier for the dashboard. In this example, you enter
CustContactUpdate.
3. Enter a Description for the dashboard. In this example, the description is Customer Contact Update.
The first query you add to the dashboard, zCustomer01, is a standard system query that displays customer
information.
To add a query to the dashboard:
1. Click the Down Arrow next to the New button; select New Query.
4. Find and select the zCustomer01 query. This standard query displays primary customer information.
5. Select the Auto Refresh on Load check box. Now each time this dashboard launches, data will populate
this query.
8. In the Titlebar Subscriber section, select the Publish to Title check box.
11. The Call Context Subscriber section contains fields you can use with Business Process Management (BPM)
functionality. Use these fields to publish values from the dashboard to a Business Process Management
(BPM) Updatable BAQ Directive.
1. Click the Refresh button to verify the query can retrieve customer information.
3. In the Tree View, right-click the zCustomer01 icon and select Properties.
7. Click OK.
1. Click the Down Arrow next to the New button; select New Query.
3. Click the Query ID button to find and select the UpdateCustContacts query.
9. Click OK.
11. The related contacts for that customer display in the Customer Contacts grid.
1. In the Tree View, right-click the UpdateCustContacts grid icon and select Properties.
5. The Prompt check boxes display for each field; select the fields you want to be able to update in the
dashboard. In this example, select the Prompt check box for the following fields:
• CustCnt_NoContact
• CustCnt_LastName
• CustCnt_FirstName
• CustCnt_Name
• CustCnt_ContactTitle
• CustCnt_EmailAddress
• CustCnt_PhoneNum
• CustCnt_FaxNum
• CustCnt_Company
• CustCnt_ConNum
6. You can use the Arrow buttons to the right of the grid to reorder the columns in the Grid view.
7. Select the Updatability sheet. This sheet is only available when the grid view is selected as updatable.
8. The Multi Dirty Row and Allow Add New check boxes are settings you defined within the Business Activity
Query Designer when you created the UpdateCustContacts query. These fields control whether you can
add or update multiple rows of data at one time.
9. Select the Force Update All Rows on Save check box when you want all unsaved or dirty, rows to update
the database at the same time. When users click Save, any modified or new records all move to the database
simultaneously. If this check box is clear, each dirty row is processed individually.
10. Select the Static Values on Add New check box to indicate how you want the updatable dashboard to
populate when users add a new record. If you select this check box, the updatable dashboard will pull in
field values for display; the next time the user creates a new record, these static values remain in the fields.
If this check box is clear, the current values are removed and the fields are refreshed with new values.
11. Use the Action Buttons sheet to define custom Actions which are available in the dashboard from the
Actions menu. Actions are defined in the Business Activity Query Designer and can be used along with BPM
Method Directives to run a specific method. You will review Updatable BAQ Directives later in this chapter.
12. The Add New Subscribers sheet is used to define data that auto-populates when adding new records
through the dashboard. Use the fields on this sheet to define specific criteria that default into new rows
when you select Add New.
14. When the user adds a contact, you want the subscriber to populate the contact's city from the city defined
on the customer record. For the Add New Subscriber column, you select CustCnt_City. You then indicate
you want to publish from the Customer Tracker Query, pulling the value from the Customer_City column.
Tracker Views can be used to create an advanced search function and to facilitate entry and updates to customer
contacts.
1. In the Tree View, right-click the UpdateCustContacts query icon and select New Tracker View.
5. Click the Clear All button to clear the Visible flag on all the fields.
6. Define which fields you want to display in the Tracker view. Select the Visible and Prompt check boxes for
the following fields:
• CustCnt_LastName
• CustCnt.Name
• CustCnt.EmailAddress
• CustCnt.PhoneNum
• CustCnt.FaxNum
• CustCnt.Company
• CustCnt.ConNum
7. Click OK.
8. The new Contact Details panel displays on the dashboard. Drag the sheet up and reposition it to the left
of the Customer Contacts grid.
9. Click Save.
4. A new window displays the dashboard for testing. Click the Refresh button to retrieve the customers and
contacts.
5. Click a row in the Customer Contacts grid to update a contact record. You can update contact information
directly in the grid or in the Contact Details view. In this example, you enter an Email Address for customer
Clarke Construction, contact Richard Clarke.
6. Click Save.
7. Test adding a new contact record in the dashboard. Click the New button to add a new record.
8. A new blank row is added to the Customer Contacts grid. Enter new contact information. In this example,
you enter a new contact record for Michael Rogan.
9. Click Save.
10. To verify the record is added, click Refresh and review the contacts for Clarke Construction.
12. Click Cancel in the Deploy Dashboard window to return to the Dashboard Designer.
13. You can also verify the new contact record in Customer Maintenance.
Query Designer. You can edit this code to customize the update process, or you can add pre-processing, base
processing, and post-processing directives to the methods associated with the BAQ.
You launch the Updatable BAQ Method Directives program in multiple ways - click the BPM Directives
Configuration button on the Update > General Properties sheet within the Business Activity Query Designer, or
select this program from the Menu.
Menu Path: System Management > Business Process Management > Updatable BAQ Directives Maintenance
Custom Actions
You may create custom actions for updatable BAQs in the Business Activity Designer by defining the action ID
and label. The custom actions can then be added to the Actions menu of a dashboard that uses the query.
In Updatable BAQ Method Directives Maintenance, you create a pre-processing, base processing, or post-processing
directive for the RunCustomAction method. Use the “the specified argument is equal to the specified expression”
condition statement to identify which action to run. The first “specified” variable can be set to “actionID.” The
second “specified” variable can be set to the ID of the action called by the user as it was specified in the BAQ.
Then create directive actions to perform custom operations.
1. In the Dashboard Tree View, select the zCustomer01:Customer Tracker Query query.
5. In the Publish Columns list, select the check boxes next to the following column names:
• Customer_Address1
• Customer_City
• Customer_State
• Customer_Country
• Customer_Zip
9. Add the remaining address columns to the Call Context Subscriber grid using the following information:
• Customer_City = Character02
• Customer_State = Character03
• Customer_Country = Character04
• Customer_Zip = Character05
1. Click the BAQ ID button to find and select a BAQ ID. You can also enter the BAQ ID directly. For this example,
you find and select the UpdateCustContacts updatable query.
3. The Detail sheet displays the primary information on the selected BAQ method.
You can review the C# code used by the BAQ to update the database by selecting the Update method in the
Tree View, navigating to the Base Processing tab, clicking the Design button, and reviewing the Default
Implementation action. Select the // <autogenerated> link and review the code in the Enter Custom Code window.
1. In the Tree View of the Updatable BAQ Method Directives program, select the UpdateCust
Contacts.GetNew directive.
2. Click the Down Arrow next to the New button; select New Post-Processing.
3. Enter the Directive Name that you use to identify the directive. In this example, enter Auto Populate Contact
Address.
Because you want this directive to run each time the GetNew method is called, it will not use any condition
statements. Instead you will just define an action for this directive.
2. From the Setters group, click and drag the Set Field item to the designer area.
4. Click and drag a connection line from the Start item to the Set Field item.
Notice the Action pane now displays the "Set the specified field of the changed row to the specified expression
with rule" statement.
5. Click OK.
6. Click the changed row drop-down list and select the added row option.
The Action now states “set the Results.CustCnt_Address1 field of the added row to the ttCallContextBpmData…
expression with rule”. Now the action will set the Address field of a new row to the value published from the
dashboard to the Character01 field, which is the customer’s street address.
1. Continue to add new Set Field actions to populate the remaining fields published from the dashboard.
6. Click Save.
8. Click New.
9. A new row is added to the Customer Contacts grid. The address information from the customer record is
added to the contact’s fields.
Various utilities are available in the Business Process Management (BPM) module to help you:
• Set up a schedule to run directives.
• Export directives so they can be used in another Epicor installation.
• Import directives from another Epicor installation.
• Update a group of directives to apply new settings or to keep directives up-to-date when a new version of Epicor
is installed.
This chapter explains how to use the BPM Async Process program to set up a schedule for asynchronous BPM processes.
It also explains how to use the Directive Import and Export programs, which are useful for moving groups of directives
between Epicor ERP installations. You also learn how to use the Directive Update program to apply settings to a group
of directives or to ensure directives remain compatible with new versions of the Epicor ERP application. The chapter
concludes with discussion on what tools you can use to troubleshoot the BPM functionality.
Action Processing
When you have defined the BPM directives your application will run, you are ready to set up the action process
schedule. This regular schedule causes the BPM functionality to run periodically, updating the BPM task queue
and processing asynchronous actions.
You do this by setting up the BPM Async Process task to run on a selected schedule. To do this, you can either
use one of the predefined schedules, or create the custom schedule you want to use. You then set up the process
to run using this schedule.
System Agent
You create recurring schedules through System Agent Maintenance. Use this program to create the different
schedules you need for running your asynchronous directives. When you have created the schedules you need,
you are ready to launch the BPM Async Process program; the next section explains how to run this program.
You can set up this task to run on a recurring schedule. This automatically processes all calls made by your
asynchronous actions.
Navigate to BPM Async Process.
Menu Path: System Management > Business Process Management > Action Process
You can define how often you want this process to run. Here’s how:
1. If you want this process to constantly run, select the Continuous Processing check box to indicate that
this process should run on a continuous basis using the delay minutes set in the Continuous Processing
Delay field.
2. To complete setting up continuous processing, you next must enter the Continuous Processing Delay
value. The BPM Process runs following the time value you enter. For example, you can enter a delay of two
minutes – which means this process runs continuously every two minutes.
3. The Log Filename displays the directory path and log file that records the asynchronous processing actions.
You can enter this path directly or click the Log Filename button to find and select it.
4. However, if you want this process to run following a schedule, select a Schedule option from the list. Epicor
recommends that you select an Interval schedule type, as this schedule then runs every few minutes.
5. Select the Recurring check box to indicate this process runs on a regular basis. The BPM process launches
each time the system clock passes the interval defined within the selected schedule.
6. You can enter a value in the Action Failure Limit field to indicate how many times the BPM Async Process
attempts to process an asynchronous action. When the number of attempts exceeds the specified value,
the action is ignored.
Example
If you've set a limit of 3, and the action has failed 3 times,
it won't be processed again.
Your BPM asynchronous directives are now regularly processed by the application.
Directive Management
To complete the BPM functionality, the module comes with programs that help manage your directives. You can
export your directives out to another Epicor installation, where they can then be imported. You can also update
the directives to make them compatible with the current version of the application.
Groups
This functionality suggests you use Groups. Each group contains related directives. By placing related directives
together, you can easily export, import, and update the directives as you need.
You create and select groups within the Method Directives, Data Directives, or Updatable BAQ Method Directives
programs. The Detail sheets in these programs all have a Group field. Use this field to create new groups or to
select existing groups. In either case, you define the group which the directive is placed inside for use in later
processes. For more information, read the Method Directives section in Chapter 08: Business Process Management.
Directive Export
Use the Directive Export program to export all the directives that belong to a selected group, a single Business
Object, or a Table. These directives are then exported to a single file at a location you define, so you can move
your method directives to another installation of the application.
BPM Users can only export those directives they have Read & Write access to. Note the following security restrictions
are applied when exporting directives:
• Exports of Base and In-Transaction directives are only available to a BPM Advanced User.
• Exports of Tenant Independent directives are only available to a Global Security Manager.
• Users can only export directives from their owning companies - companies they were created in.
To export a group of BPM directives:
Navigate to Directive Export.
Menu Path: System Management > Business Process Management > Directive Export
1. If you want to export all Method Directives created for a particular Business Object, select the Method
Directives by Business Object Option.
2. By selecting the Product option, all Business Objects belonging to the application part of the system (ERP)
become available for selection.
3. By selecting the System option, all Business Objects belonging to the framework part of the system (ICE)
become available for selection.
4. To export all data directives created for a particular database table, select Data Directives by Table Name
option.
5. From the Table Name drop-down list, select a table for which you want to export directives.
6. To export all directives associated with specific group, select the Directives by Group option.
7. From the Directive Group drop-down list, select a group for which you want to export directives.
8. Enter the File Name for the exported file. This filename is the target path for the exported directive or set
of directives. You can enter the directory path and filename directly in this field, or click the Export to File
button to find and select it.
The default filename is export.bpm, but you can change this name if you need.
10. Click OK to the message that directives have been successfully exported.
Directive Import
Use the Directive Import program to import a group of exported method directives into your application.
Here’s how you use this program to import a group of method directives:
Navigate to Directive Import.
Menu Path: System Management > Business Process Management > Directive Import
1. Click the File Name button to find and select the .bpm file you want to import.
2. Optionally, select the Destination Group inside which you want to add the directives.
3. Select the Replace Existing Group check box if you want the import program to delete the directives in
the existing group and replace them with the imported directives. If this check box is clear, the program
leaves the existing directives alone and then adds the imported directives into the group.
5. Click OK to the confirmation that your method directives have been successfully imported into your
application.
Import Compatibility
The import program also checks the compatibility of each imported directive. The following describes how this
program checks the compatibility of each directive:
• If the directives have the same version number as the current application, the directives are imported; if they
are enabled and fail to compile, they are marked as Out of Date.
• If the directives are from a previous version of Epicor ERP 10, the import process validates all methods for
compatibility. If any incompatible directives are found or enabled directives fail to compile, an error message
displays. The incompatible directives are still imported; however, their status is set to Out of Date.
• If the directives are from a newer version of the application, the imported directives are rejected and the
application displays an error message.
Directive Update
Use the Directive Update program to perform mass updates of BPM directives.
Using the Directive Update Setup sheet, you can update the properties and recompile the directives within a
selected group. You can run this program to apply some primary options to all the group directives; for example,
you can use this program to enable all the directives in the group.
On the Directive Recompile Setup sheet, you can recompile the group of directives, optionally refreshing
signatures of the methods or tables they are attached to, in order to make them compatible with the current
version of the application.
Using the SC Credentials Setup sheet, you can perform mass update of ESC server credentials stored in directives.
Typically, you need to update ESC credentials when running cross-company directives utilizing ESC Workflow
actions in a non-owning company.
Based on the license used in your Epicor ERP installation, this sheet is available to the following users:
2. Select or enter the New Group inside which the updated directives are placed. You can select an existing
group from the list – including the original group. You can also enter a new group name in this field.
3. Select the Enabled check box to activate all the directives within the group.
To disable all directives in a group, clear the Enabled check box. To leave this property unchanged for all
directives, leave the checkbox in its initial state.
• Company Specific - By selecting this option you set the directives to only work in their owning company's
scope.
• Company Independent - By selecting this option you set the directives to work in all companies on a
regular installation.
If Multi-Tenant license is used, these directives work in all companies belonging to the tenant ID of their
owning company. This gives you the ability to utilize tenant specific, company independent directives.
• Tenant Independent - By selecting this option you set the directives to work in all companies of the
installation. This option only displays if Multi-Tenant license is used and it is only available to a user having
Global Security Manager rights.
If Multi-Tenant license is not installed, Company Independent and Tenant Independent directives work
the same way at runtime - in all companies.
5. Either click the Start Update button, or click the Actions menu and select Start Update. Your options are
applied to all the directives within the selected group.
To fix directives:
3. If you select the Refresh Signatures checkbox then method and trigger signatures of selected directives
will be regenerated during the recompile process.
4. Either click the Start Recompile button, or click the Actions menu and select Start Recompile. The
recompile process runs against the selected directives.
6. If any directives could not recompile, each recompile error displays on a separate row within the grid, detailing
the compile error. Notice in this example, however, that the directive compiled successfully and is now
compatible within the current version of the Epicor ERP application.
Use this sheet to perform mass update of ESC server credentials stored in directives. Each Call SC Workflow
action used in BPM directives stores the ESC server, login and password data. You can select whether to update
any directive or only those belonging to a specified group.
Based on the license used in your Epicor ERP installation, this sheet is available to the following users:
Troubleshooting Actions
Tools are available to help you further troubleshoot your actions. This section describes how these tools can help
you correct issues that may occur when using the BPM functionality.
BPM Tracing
This section explores how you can use both Client and Server side logging mechanism to analyze execution of
your BPM directives.
Use the Tracing Log tool to set up a tracing log that captures all the calls the user interface makes to the server.
When you activate this log, any business logic (BL) calls sent to the server are automatically recorded within this
log.
Run this log to fine-tune your BPM directives. You can use it to find out which business logic method calls are
made. You can also find out the duration of these business calls. Lastly, you can also see the data that is sent to
and from the server.
To make this log easier to review, you can organize it by entering Mark Text; all calls that reference this mark
text are then grouped together. You have the option to display this log either as a text (.txt) file or as an .xml
file.
Depending on what client interface you use, the following are the ways of accessing the Tracing Options window:
1. When you run the application using the Classic Menu - from the Main Menu, click Options > Tracing
Options.
2. When you run the application using the Modern Shell, on the Home Page, click the Settings tile. From the
General Options, select Tracing Options.
3. Use the Tracing Options Form window to define how the Tracing Log captures the BL calls.
4. Select the Enable Trace Logging check box to activate the Tracing Log. All calls made by the user interface
to the server are automatically recorded within the tracing log.
5. Select the Write Full DataSet check box if you want to record all data within the tracing log. If this option
is not selected, only header information is stored within the log.
6. Select the Track Changes Only check box if you only want changes to the dataset recorded within the
tracing log. All changes to columns in the dataset are then stored within the log.
7. Select the Include Server Trace option when you want to track the client's interaction with the server. This
creates a <serverTrace> node within trace packets (<tracePacket>) in the client tracing log. Use the database
activity gathered in this section to review how the client installation may be affecting the performance of
the server.
8. Use the Write Call Context Dataset check box to include Business Process Management (BPM) table values
on the trace log. This information provides the data context for a call each time a call is sent between the
client and the server. This information is useful for developing BPM method directives, as you can intercept
these calls to run additional processing to verify data and other custom functions.
9. When a method call has a <returnType> other than void, selecting the Write Response Data check box
causes the dataset returned from the server to display on the tracing log. Numerous method calls occur
where the data is passed down, modified, not written to the database, and then returned to the client.
Selecting this check box places these hidden calls on the trace log. Examples of these methods include Credit
Checking, Part Verification and Pricing, and GetNewXXX (where XXX is the name of a record).
10. The Current Log File displays the directory path and filename of the tracing log.
11. Click the View button to display the log within a .txt format.
12. Enter Mark Text to organize the tracing log so it is easier to review. To use this field, enter the text you
need and then click the Write button. All the calls that reference this mark text are grouped together within
the same section of the tracing log, for example, abccode lookup.
13. The XML File field displays the directory path and filename used for the .xml version of the tracing log.
Click the Browse button to find and select this directory path and filename.
14. Click the Create XML button to save the tracing log in the default .xml format. This file can then be viewed
within any web browser. The Mark Text values you enter for this log also appear as options on the .xml file.
15. To remove all entries from the tracing log, click the Clear Log button.
16. To add all these current settings to the tracing log, click the Apply button.
The server trace log is an important tool for managing both application and performance issues. You can configure
the trace log to record the BPM specific transaction data you need to review.
To enable the BPM tracing functionality:
2. The name of this file as well as the log file location can be manually configured in the web.config file located
in the server folder of your Epicor ERP installation.
Example C:\inetpub\wwwroot\ERP100600\Server
3. To activate BPM Logging, enable the following trace flag in the trace.config configuration file:
<add uri="trace://ice/fw/BPM" />
The above trace URI tracks the complete BPM information that includes the following:
• Business Object customizations made through Method Directives
• Data Triggers created using Data Directives
• uBAQ customizations - method directives of Updatable BAQs with BPM update
4. For a detailed analysis, the trace URI can be manually configured to narrow down the information being
tracked:
• trace://ice/fw/BPM/BO - to track BO customizations only
• trace://ice/fw/BPM/DB - to track data triggers only
• trace://ice/fw/BPM/DQ - to track uBAQ customizations only
Example
Op Utc="2013-10-30T13:40:45.2677063Z" act="Ice:BO:Tip/TipSvcContract/Update
" dur="1006.1712" cli="fe80::d147:d8f4:e54e:5149%10:42111" usr="manager" ma
chine="MOS-TLS-DEV-AAA" pid="10788" tid="5">
<BpmCustomization Source="BO" BpMethodCode="ICE.Tip.Update" Type="BO Cust
omization" ExecutionInterruptedOnDirective="6300f64f-ccd6-4617-9105-a978473
6eb54" Duration="530.9098">
<BpmDirective Type="PreProcessing" ID="6300f64f-ccd6-4617-9105-a9784736
Node Description
Source Displays the source of the BPM information. Possible values:
• BO - Method Directives
• DB - Data Triggers
• DQ - uBAQ Method Directives
ExecutionInterruptedOnDirective Applies to BPM Data Form execution only. When the BPM Form invokes,
the service call exits and returns control back to the client. The client then
calls the service again. Therefore, in case of BPM Data Forms two different
operations are tracked.
This value displays the directive's GUID from which the service call was
interrupted.
ExecutionResumedFromDirective
For the second BPM Data Form operation, this value displays the directive's
GUID from which the service call was resumed.
Within the BpmCustomization node, the BpmDirective node holds the following attributes:
Node Description
Type Type of the Directive. Possible values:
• PreProcessing, BaseProcessing, PostProcessing for Method Directives
and uBAQ Method Directives
• Standard, In Transaction - for Data Directives
• A single service call may trigger a lot of BPM customizations, even the customizations of different BOs
and tables. They all will be listed under the Op node of this operation.
• The execution of one directive may lead to other customizations being executed, and in case of
synchronous execution (in-transaction triggers, sync invocations of other BO methods), the duration
of the "child" directives will also be counted into the duration of "parent" directive.
• Default BO method execution duration (in case it's not overridden by a BaseProcessing directive) is
not counted as part of BO Customization duration.
• Since tracing engine allows the user to switch on some tracing functionality for a particular BO calls,
or specific method invocations, it applies to BPM tracing as well.
If you have Microsoft® Visual Studio™ 2010 or higher, you can debug execution of custom code directives.
Here's how you can debug your BPM custom code:
2. The first step involves location of the BPM Sources folder. By default, Sources are found in the BPM folder
of the Server directory.
4. Make sure you work with files from the latest one and copy them into the VS project's folder.
5. If your project is located in the location different from Server deployment folder, in Visual Studio you must
set the relative paths manually to point to the location of Server\Bin and Server\Assemblies folders.
7. Make sure all references are properly resolved, your BPM working files and respective BO contracts are
added.
10. For debugging Options, make sure the Enable Just My Code and Require source files to exactly match
the original version options are clear.
11. Attach the debugger to the w3wp process the application pool is running under.
12. When the BPM is fired, you can verify each step in Visual Studio.
Disable BPM
You can use the customizationSettings section found in the web.config located in the server folder of your
Epicor ERP installation to control the application's customization engine.
Example
</types>
</customizationSettings>
When you set customizationSettings disabled = "true", you turn the customization engine off. This means
Method Directives, Data Directives and uBAQ Method Directives processed via BPM are not executed. However,
you can still edit, add and remove BPMs but these changes are saved to the database only and no binaries are
being recompiled or deleted.
When customization engine is turned back on (customizationSettings disabled = "false"), old binaries are
applied. To get the binaries up to date:
• Recompile all Method and Data Directives using the Directive Update program.
Menu Path: System Management > Business Process Management > Directive Update
• Recompile and refresh BPM binaries related to selected updatable queries using the Updatable Query
Maintenance program.
Menu Path: System Management > Upgrade/Mass Regeneration > Updatable BAQ Maintenance
If an incorrectly configured BPM directive prevents the system from operating or the user from logging in,
removing incorrect directives with disabled BPM is not enough. The user should remove affected binaries from
the Server > Customization folder, for example, from C:\inetpub\wwwroot\EpicorERP10\Server\Customization
and then remove or disable incorrect directives.
Epicor Social Enterprise is an information network designed to support information exchange across your business
enterprise. Epicor Social Enterprise is intended to be deployed in conjunction with Epicor ERP and is fully integrated
into the Epicor ERP application client.
With Epicor ERP and Epicor Social Enterprise running together, users have access to the following resources for
communication and data monitoring:
• Exchanging messages with other users. These typically are people within the organization, although people from
the outside can be invited to join.
• Choosing other users to follow, automatically receiving their stream of message activity.
• Joining and starting user groups that bring together people who have common interests.
• Setting up and following notifications that post messages when a change occurs in Epicor ERP business data.
• Searching for information in the Epicor Social Enterprise message stream and Epicor ERP business data.
When you access any of the Epicor Social Enterprise features in the Epicor ERP client, you are automatically connected
to Epicor Social Enterprise using your Epicor ERP account. If you do not have an Epicor Social Enterprise user account,
a new account and user profile are created for you. The information in the new user profile is based on your Epicor
ERP user record and can be edited.
This section describes how to open Epicor Social Enterprise from Epicor ERP and introduces the Epicor Social
Enterprise Home page.
The Epicor Social button on the Epicor ERP application Home Page toolbar provides easy access to Epicor Social
Enterprise.
1. Open the Epicor ERP application in New Menu mode and click the Epicor Social button on the Home Page
toolbar.
2. The Epicor Social Enterprise form opens. This form is a fully functional view of Epicor Social Enterprise
equivalent to opening Epicor Social Enterprise in a browser.
Logging into Epicor Social Enterprise is automatic when starting from Epicor ERP. Either the Epicor ERP user's
credentials are applied to an existing, matching Epicor Social Enterprise user account or they are used to
automatically create an Epicor Social Enterprise user account.
In this example, the Epicor ERP user bhoward (Brian Howard) has accessed Epicor Social Enterprise for the
first time. The My Stream column of message activity is empty since Brian is a new user.
3. Click the Arrow at the top of the form to display the Open Forms Bar.
4. You can leave the Epicor Social Enterprise form open and use the Open Forms Bar to navigate back to the
application Home Page (or to any other open form in your application session).
5. On the application Home Page, you can redisplay a running Epicor Social Enterprise form by clicking the
Arrow and selecting the form on the Open Forms Bar, or by clicking the Epicor Social toolbar button.
6. From an open application program, you can redisplay a running Epicor Social Enterprise form by locating
the form using the Navigation Buttons at the top of the program window.
On the Epicor Social Enterprise Home page, message activity is displayed in columns. The toolbar on the right
side of the Home page header provides access to important view and setup actions.
1. The default display is your My Stream column, which contains your message activity with other users and
data notification messages informing you of changes in your Epicor ERP data.
The column is likely to be empty when you first become an Epicor Social Enterprise user. Once you begin
communicating with other users, My Stream will begin to accumulate and display all message activity
relevant to you.
2. In the My Stream column header, click Toggle Conversation View to switch between displaying messages
with or without associated conversation threads displayed.
3. In addition to the default My Stream column, you can add columns to your Home page as needed to
display filtered message activity such as for a user, a group, a subject, or an ERP data notification you are
following.
For this example, a message from PLane was chosen in the My Stream column, the User ID was clicked to
open a thumbnail profile, and Messages was clicked to display a new column of message activity that
includes that user.
4. Click Post Message on the toolbar to begin composing and posting a public message.
5. Click Search on the toolbar to initiate a search in the Epicor Social Enterprise message stream, one of your
registered notification sources (Epicor ERP application data sources), or Twitter.
6. Click Reload All Columns on the toolbar to regenerate all currently displayed columns.
7. Click Help on the toolbar to open the Epicor Social Enterprise online help system.
9. Click Admin on the toolbar to access procedures and supporting information for Epicor Social Enterprise
administrators. Admin appears on the toolbar only when access level is set to administrator in your user
profile properties.
10. Click Toggle My Stream on the toolbar to shown and hide your My Stream column. This can be useful,
for example, when your work is focused on columns of filtered message activity and you do not need to
have My Stream open.
11. Click Private Messages on the toolbar to open a column that displays the private message postings between
you and other users. Private Messages is highlighted when you have unread private messages.
12. Click Pending Actions on the toolbar to display your User Profile page with items that require your
attention highlighted. Pending actions can be unread private messages, unanswered group invitations, and
registered notification sources that require user credential updates. Pending Actions appears on the toolbar
only when there are items that you need to address.
13. Click Notification Center on the toolbar to display the Notification Center page, where you can set up
notifications that post data notification messages to you when changes occur in your Epicor ERP application
data.
14. Click Users on the toolbar to display the Users page, which is a searchable directory of all users in Epicor
Social Enterprise.
15. Click Groups on the toolbar to display the Groups page, which is a searchable directory of all user groups
in Epicor Social Enterprise.
16. Click Log Out on the toolbar to terminate your current Epicor Social Enterprise session. Log Out does not
appear on the toolbar when you are running Epicor Social Enterprise from within Epicor ERP.
Your User Profile page displays information about your Epicor Social Enterprise account and your account
activities, and provides options for editing your user profile.
1. Click your User ID in the left side of the Epicor Social Enterprise Home page header to display your User
Profile page.
2. The page header displays your image, name, user ID, primary email address, and bio.
3. Select the Contact tab to see your current settings for contact information including Email Addresses,
Addresses, Phone Numbers, and Websites. Choose a bar for a category and expand to view its contents.
5. Select the Followers tab to see Epicor Social Enterprise users following you.
6. Select the Following tab to see Epicor Social Enterprise users you are following.
8. Select the Private Messages tab to see private message postings between you and other users.
9. Select the Notification Sources tab to see the notification sources (Epicor ERP application data sources)
that you have registered to access from your Epicor Social Enterprise account.
When an Epicor Social Enterprise user account and user profile are auto-generated for an Epicor ERP user,
the user profile includes a registered notification source based on the active notification source for the user's
Epicor ERP system. Any additional registrations would be created manually by the user.
10. Select the Notifications tab to see the notifications that you have set up for following changes in your ERP
data. More information about this is provided in Following Changes in your ERP Data later in this chapter.
11. Select the Email Options tab to see the current status of options for working with messages via email.
12. Click Edit Profile to edit your user profile details, contact information, and email options.
13. Click Change Password to change your Epicor Social Enterprise password.
14. Click Back at the top of the User Profile page to return to the Home page.
You can optionally add an Epicor Social tile to the application Home Page.
The Epicor Social tile displays your My Stream column, enabling you to monitor your message activity, post
new messages, and perform basic actions on the displayed messages such as Repost, Reply, and Share. From the
tile, you can open the Epicor Social Enterprise form, which is a fully functional view of Epicor Social Enterprise.
1. Open the Epicor ERP application in New Menu mode and then right-click anywhere in the blank area of the
application Home Page to display the Application bar at the bottom of the page.
2. In the Application bar, click the Add Tile button to open the Add a new tile wizard.
3. On the wizard's first screen, under Which tile group will this tile belong to?, accept the (No Title)
default or optionally select a group. For example, you could select Create a new tile group and name the
group Social.
4. Optionally, in the top right corner, select a color for the new tile.
5. Click the Next button (right arrow) at the bottom of the wizard screen.
6. On the wizard's second screen, choose Epicor Social under What type of tile do you want to add?.
7. Click Next.
8. On the wizard's third screen, either adjust or accept the default value of 15 seconds for How often do you
want to refresh (seconds)?. This sets the rate at which the Epicor Social tile is updated to incorporate any
changes to the displayed Epicor Social Enterprise My Stream column.
9. Click Next.
10. On the wizard's fourth screen, either enter a value or accept the 3x3 default Width and Height under
What is the default size of your tile?. A tile size of 1x1 is 125x125 pixels.
11. Optionally select the checkbox for Do you want to be able to expand your tile?.
12. Click the Save button to confirm your selections and close the wizard.
13. An Epicor Social tile is placed on the ERP application Home Page.
Logging into Epicor Social Enterprise is automatic when starting from Epicor ERP. Either the Epicor ERP user's
credentials are applied to an existing, matching Epicor Social Enterprise user account or they are used to
automatically create an Epicor Social Enterprise user account.
In this example, the Epicor Social tile was added by the Epicor ERP user bhoward (Brian Howard), who was
accessing Epicor Social Enterprise for the first time. The My Stream column of message activity is empty
since Brian is a new user.
14. Click either the top or bottom of the Epicor Social tile to open the Epicor Social Enterprise form.
15. This is the same Epicor Social Enterprise form that opened when, earlier in this section, you used the Epicor
Social button on the application Home Page toolbar. The form is a fully functional view of Epicor Social
Enterprise equivalent to opening Epicor Social Enterprise in a browser.
With the Epicor ERP application client open in Classic Menu mode, you can display and work with a fully functional
view of Epicor Social Enterprise. The view is opened from the Main menu interface and displays as the Social
sheet.
1. With the application open in Classic Menu mode and the Main menu interface displayed, choose View >
Social.
2. In the Contents pane, the Social sheet opens and displays the Epicor Social Enterprise Home page. This is
a fully functional view of Epicor Social Enterprise equivalent to opening Epicor Social Enterprise in a browser.
Logging into Epicor Social Enterprise is automatic when starting from Epicor ERP. Either the Epicor ERP user's
credentials are applied to an existing, matching Epicor Social Enterprise user account or they are used to
automatically create an Epicor Social Enterprise user account.
Communicate with other Epicor Social Enterprise users through actions such as posting and receiving messages,
choosing to follow another user's message stream, and joining groups.
The examples in this section use the public message stream and public groups. In later sections you will learn
about private messages, private groups, and data notification messages that alert you to changes in your Epicor
ERP application data.
Each message that you receive from another user has actions such as:
• Repost - Re-send with opportunity to change recipients or edit the message.
• Reply - To sender.
• Recommend - To indicate your support.
• Replies - View the associated message thread.
When you choose to follow a user, their currently available postings are added to your message activity and you
will begin receiving their new postings.
1. From the Epicor Social Enterprise Home page toolbar, choose Users to display the Users page. This page
is a searchable directory of all users in your Epicor Social Enterprise deployment.
2. Begin typing in the Search users field at the top of the Users page. As you type, the list is filtered to display
only the user or users that contain the current search text.
The search acts on the following:
• The values displayed in each user listing for User ID and User Name. For an account auto-created for an
Epicor ERP user, the User ID typically is their email account name.
• The user's bio and contact information from their user profile. This information is included in the search
but is not displayed in the directory listing.
3. In the user's listing, choose Follow. The Follow action changes to Unfollow and the listing now is shaded
to provide a quick indication that you are following this user.
4. You can click the User ID in the listing header to open the user's User Profile page. Each user in the system
has a user profile page that includes:
• A header that displays their image, name, user ID, primary email address, and bio.
• Tabs that display the user's contact information, message activity, users they are following, users following
them (including you), and group memberships.
5. At the top of the Users page, click Back to return to the Home page.
6. Message activity for the user you have selected to follow now will be included in your My Stream column.
Posting a public message to your followers adds it to the Epicor Social Enterprise message stream and makes it
immediately visible in the My Stream columns of other users who have chosen to follow you.
1. From the Epicor Social Enterprise Home page toolbar, choose Post Message to open the dialog box for
composing messages.
4. Optionally, click Attach ERP Resource to initiate a series of steps for searching a selected notification source
(ERP database) and choosing a record that will be referenced in the message. The message recipient will be
able to choose an Epicor application program in which to view and work with the record. For more information
about using this important feature, see the topic Include an ERP Resource in a Message.
5. Optionally, click Insert Link and configure an active link to external content.
6. Optionally, click Browse and select a file to include as an attachment to the message.
8. The message displays in the My Stream columns of you and all users who have chosen to follow you.
Reply to a Message
1. From the Epicor Social Enterprise Home page, choose a message in your My Stream column and click
Reply. The post message resources open inline, directly below the message you are replying to.
4. The message displays in the My Stream columns of you, the user you are replying to, and all users who
have chosen to follow you.
Groups bring together users who have common objectives and interests. All public groups are open for you to
join.
Once a member, you will begin seeing messages from the group in your message activity. Message postings to
a public group are available in the Epicor Social Enterprise message stream and can be located by any user who
searches the message stream for the group ID or name.
1. From the Epicor Social Enterprise Home page toolbar, choose Groups to display the Groups page.
2. The Groups page is a searchable directory of all Epicor Social Enterprise groups, both public and private.
Locate the group in the list or begin typing in the Search groups field at the top of the Groups page.
When you choose to search, the search acts on the following:
• The values displayed in each group listing for Group ID, Group Name, and Key Terms (optional search
terms set in the group's properties).
• The group description from the group's Group Detail page. This information is included in the search
but is not displayed in the directory listing.
4. The Join action changes to Leave and you are now a group member. The listing now is shaded to provide
a quick indication that you are a group member.
5. You can click the Group ID in the listing header to open the group's Group Detail page.
7. Click Back at the top of the detail page to return to the Groups page.
8. When you return to the Home page, the existing message activity for the group now is included in your
My Stream column.
Posting a message to a public group adds the message to the Epicor Social Enterprise message stream and makes
it visible in the My Stream columns of the group's members and all of your followers, whether or not they are
in the group.
1. From the Epicor Social Enterprise Home page toolbar, choose Post Message.
2. Under Share an update with, click the field to display a list of all groups in which you are a member, and
then choose a group.
Starting from the message posting dialog box requires that you select a group in which you are a member.
You do not, however, always have to be a group member to post a message to a public group. Any user
can click and use the Post Message action that displays in a Groups page listing, and a group's Group
Detail page, or the group thumbnail profile that opens from a group message.
5. The message displays in the My Stream columns of you, all group members, and all users who have chosen
to follow you.
6. In your new message to the group, click on the GroupID to open the group thumbnail profile.
8. A new column displaying all message activity for the group is added to the Home page. The group in this
example is new and there are only a few messages, but as a group grows, this is a good way to view and
track group activity.
Mentioning a User
Mentioning (@mention) another Epicor Social Enterprise User in a message brings that user to the attention of
message recipients and posts a message to the mentioned user, making that user aware that a conversation that
may be of interest to them is in progress.
You can insert an @mention when composing a public or private message. The mentioned user will receive a
message only if they are authorized to see the message. The mentioned user will received public messages and
messages to public groups, but will not receive private messages between other users or messages to private
groups in which they are not a group member.
1. To insert an @mention, type @ to begin displaying a selection list of users. Choose a user from the list or
continue typing to search the list and press Enter once the list has filtered down to the user who you want
to mention. The search works on both user ID and user name.
If enabled in the mentioned user's User Profile, @mention email alerts will be posted to the user's primary
email account. As with message postings, alerts will be received only if the user is authorized to see the
message that contains the mention. Email alerts are not sent for mentions in data notification messages.
For more information, see the topic Receive Mention Email Alerts in the section Interacting with the
Message Stream via Email.
Using Hashtags
Hashtags (# symbol) can be used to mark keywords in your messages, setting an associated context for the
message and its topic. Hashtagged words display as live links in messages. To follow widespread conversations
on a topic, the reader can click on a hashtagged word to display a new column of message stream activity that
includes the tagged word.
1. When composing a message, create a hashtag by typing a # and then the word or phrase (no spaces), or
inserting a # in front of an existing word.
3. Clicking on #Word opens a search results column of message stream activity that includes the #Word,
bringing together all communication on the topic associated with the hashtag.
This example is simple and for demonstration purposes only. The search results column could be very large
and bring together otherwise disconnected postings in a large Epicor Social Enterprise community that is in
the habit of using #hashtags.
From your current ERP application program, you can post a message to the Epicor Social Enterprise message
stream in the context of the program and currently displayed record.
1. With an application program open and a record displayed, right-click a record field in one of the program
sheets to open the context menu, and choose Social > Post Message to display the Post Epicor Social
Message dialog box .
In some programs, you can select the record in the program tree view and get to the Social context menu.
The Social functionality typically is enabled on application key fields.
2. In Share an update with, choose My Followers or choose a Group Name. The list includes public and
private groups in which you are a member.
4. Optionally, click Insert Link and configure an active link to external content.
5. Optionally, click Choose Files and select a file to include as an attachment to the message.
6. Optionally, you can click Remove ERP Resource to remove the application record context that was added
automatically when you initiated the message action. You may encounter a situation where there is a business
reason for this.
8. As a convenient way to verify that the message posted to the Epicor Social Enterprise message stream,
choose Actions > Activity Stream.
9. The Activity Stream sheet opens and displays Epicor Social Enterprise message and notification activity for
the current record, including the message you just posted.
The Activity Stream action is available in most programs. On the Activity Stream sheet, you can work in the
context of the displayed message stream, posting new messages and performing actions such as Repost,
Reply, and Share.
10. Close the Activity Stream sheet and use the Navigation buttons at the top of the program to display the
Epicor Social Enterprise form.
12. From Epicor Social Enterprise, you or another message recipient can click the Open With action to display
a menu of applicable ERP programs in the context of the subject record. Choosing a program from the menu
will open the program with the record displayed.
When composing a message, an important option is the Attach ERP Resource action, which enables you to
attach a reference to an ERP notification source record (Epicor ERP data record).
1. From the Epicor Social Enterprise Home page toolbar, choose Post Message.
3. Compose a message.
5. In the Search for ERP Resource field, type a word or phrase to identify what you are looking for and click
Search to initiate a search of your notification source.
For this example, a supplier ID known to be in the notification source database is used.
6. Once the notification source search is done, under Select Resource to Attach, expand Select Option and
choose the record that will be associated with the message.
7. To provide the recipient with the application data context for the posting, the message will include an
identifier for the selected record.
9. Recipients can click Open With and choose an Epicor ERP application program in which to view and work
with the record.
Recommend a Message
Recommending a message shows your support and brings the message to the attention of other users.
1. From the Epicor Social Enterprise Home page, choose the message in your My Stream column and click
Recommend.
4. The list is searchable and the user listings (other than your own listing) include a few actions for further
communication.
You can later withdraw your recommendation by clicking Recommended. The link returns to Recommend
and you are removed from the list of recommenders.
Use Search on the Home page toolbar to search the Epicor Social Enterprise message stream, a notification
source (Epicor ERP database), or Twitter. Search results are displayed as a separate column on the Home page.
This section describes how to focus on messages and notification source records that match search criteria.
Search the Epicor Social Enterprise message stream and display a separate column of messages that match search
terms.
1. From the Epicor Social Enterprise Home page toolbar, click Search to display the Search dialog box.
4. Click Search.
6. Click Toggle Conversation View in the column toolbar to switch between displaying messages with or
without associated conversation threads displayed.
7. Click X Messages in all. Click to show/hide summary settings. in the column toolbar to display the
number of messages falling within one of several predetermined time ranges (for example in the last hour
or in the last 24 hours). Click the arrow to choose a different range.
8. Click Show/hide Search in the column toolbar to display the currently applied search term (the column's
display criteria) in an editable field. Edit the value in this field and press enter to run a new search against
the Epicor Social Enterprise message stream and update the column to display matching messages.
9. Click Refresh Column in the column toolbar to update the column to include any messages matching the
search term that have been posted since the column was last generated or refreshed.
10. Click Remove Column in the column toolbar to delete the column from your Home page.
Search a registered notification source (Epicor ERP database) and display a column of ERP data records that match
search terms.
1. From the Epicor Social Enterprise Home page toolbar, click Search to display the Search dialog box.
3. In Search Target, select the notification source that you want to search.
4. Click Search.
For this example, the My Stream column is hidden, leaving the search results column as the only column
displayed. The column header displays the notification source that was searched for the displayed results.
6. In a displayed data record, the title provides a thumbnail description of the record.
7. Click Details in a data record to display all of the data in the record.
8. Click Post Message in a data record to create and post a message about the record. This is an in-column
implementation of the functionality for posting public messages. The message will include the descriptive
title from the search results, your message and attachments, and the Open With action for opening the
Epicor ERP application in the context of the subject record.
9. Click View Related Messages in a data record to open a column that displays all data notification messages
based the record, as well as any user conversations that are keyed to the record.
10. Click Open With in a data record and then choose the Epicor ERP program in which you want to view and
work with the record. This will open the Epicor ERP application in that context.
11. Click Show/hide Search in the column toolbar to display the currently applied search term in an editable
field. Edit the value in this field and press enter to run a new search against the notification source.
12. Click Refresh Column in the column toolbar to update the column to include any records matching the
search term that have been added since the column was last generated or refreshed.
13. Click Remove Column in the column toolbar to delete the column from your Home page.
This section describes how to set up and follow notifications in Epicor Social Enterprise. A notification monitors
a selected Epicor ERP database and triggers the posting of data notification messages when changes that match
the criteria in a notification rule.
Data notification messages are displayed automatically in your My Stream column. Actions such as Repost and
Share are available in the message. The Open With action opens your Epicor ERP application in the context of
the affected data record.
To create and begin following a notification, you choose a combination of the following resources:
• Notification Source - A notification source is the Epicor ERP database that will be monitored for data change
activity.
• ERP Data Record or Notification Profile - A data record is a specific record in your ERP database. A
notification profile identifies a table in your ERP database.
• Notification Rule - A notification rule evaluates against the selected data record or notification profile,
specifies what change in your ERP data will trigger a notification, and specifies the content of the resulting
data notification message.
Epicor Social Enterprise ships with default sets of notification rules and notification profiles for working with data
monitoring in the ERP application. You also can create custom rules. Your Epicor Social Enterprise administrator
can create custom notification profiles.
2. At the top of the Notification Center page, use the Notification Source Selection List to choose which
of your registered notification sources (Epicor ERP databases) will be monitored.
A registered notification source is included in the user account and user profile automatically created for
you when you initially access Epicor Social Enterprise from Epicor ERP. That registration is based on the
notification source that was created by the administrator to support connection to your Epicor ERP database.
3. Use the Data (Left) Column for selecting either a specific database record to monitor or a notification
profile that enables monitoring of all records in a specified database table.
In this example, the selection at the topic of the column was set to Notification Profile, the search field
was left blank so that the generated list includes all available notification profiles, and a profile was selected
from the list.
4. Use the Rule (Right) Column for selecting and working with a notification rule that defines the data change
that will trigger a notification.
In this example, credit has been used as a search term for filtering the list of rules available for the notification
profile selected in the previous step. A rule is chosen by selecting the rule and then clicking the rule's Follow
action. In this example, a rule has not yet been selected.
5. Just above the Rule (Right) Column, you can use the options on the actions menu for viewing current
notifications, and for creating notification profiles and notification rules.
Create a notification that monitors change in a specified Epicor ERP database record.
1. From the Epicor Social Enterprise Home page toolbar, choose Notification Center to display the
Notification Center page.
2. Under Notification Source, choose the registered notification source that connects to your ERP database.
3. In the data (left) column, ensure that Data Records is selected. Clicking in the field switches between data
record and notification profile.
4. In the search field, type a term that identifies what in the database you want to monitor and then press
Enter to generate a list.
6. In the rule (right) column, enter a term that identifies the type of event or change that you want to monitor
and then press Enter to generate a list. Alternatively leave the search field blank to return all notification
rules relating to your selected data record.
7. Optionally, you can click View in a rule listing to open the Notification Rule Properties dialog box to see
how the rule is set up.
8. Notice that each rule listing includes an Other Followers action with a count of current follower.
This can be a useful feature when working in an Epicor Social Enterprise and Epicor ERP application
deployment. Clicking Other Followers displays a list of Epicor Social Enterprise users currently following
the selected notification. Each user listing includes actions for communicating with that user.
9. Select the rule that matches your data monitoring requirements and click Follow.
10. To verify your notification configuration, you can open the actions menu above the rule (right) column and
choose View My Notifications.
This will open your User Profile page with the Notifications tab selected to display a list of the notifications
you currently are following.
Your notification is complete. You will receive a data notification message in your My Stream column whenever
a change to the selected Epicor ERP data record occurs that matches the criteria in the notification rule.
Create a notification that identifies the notification source database, a notification profile (ERP database table),
and a rule for triggering notifications. Selecting a notification profile enables notification for all database records
that match the profile.
1. From the Epicor Social Enterprise Home page toolbar, choose Notification Center to display the
Notification Center page.
2. Under Notification Source, choose the registered notification source that connects to your ERP database.
3. In the data (left) column, ensure that Notification Profiles is selected. Clicking in the field switches between
data record and notification profile.
4. In the search field, type a term that identifies what in the database you want to monitor and then press
Enter to generate a list. Alternatively leave the search field empty to return a list of all available notification
profiles.
6. In the rule (right) column, enter a term that identifies the type of event or change that you want to monitor
and then press Enter to generate a list. Alternatively leave the search field empty to return all notification
rules relating to your selected notification profile.
7. Select the rule that matches your data monitoring requirements and click Follow.
As seen in the previous example, you can click View to open the Notification Rule Properties dialog box
to see how the rule is set up. Also notice that the Other Followers action is available to display a list of
other Epicor Social Enterprise users currently following the selected notification.
8. To verify your notification configuration, you can open the actions menu above the rule (right) column and
choose View My Notifications.
This will open your User Profile page with the Notifications tab selected to display a list of the notifications
you currently are following.
Your notification is complete. You will receive a data notification message in your My Stream column the next
time a change to the selected notification profile (Epicor ERP data table) occurs that matches the criteria in the
notification rule.
In your current ERP application program, you can select a data record and begin following notifications for that
record. Data notification messages will be posted to your Epicor Social Enterprise message stream.
1. With an application program open and a record displayed, right-click a record field in one of the program
sheets to open the context menu, and choose Social > Follow.
In some programs, you can select the record in the program tree view and get to the Social context menu.
The Social functionality typically is enabled on application key fields.
2. An Epicor Social Enterprise window opens and displays the Epicor Social Enterprise Notification Center
page with focus on the notification rules column. The rules column displays existing rules applicable to the
selected data record.
You have already chosen your notification source and data record by beginning in the context of a selected
data record. The notification source selection list and data column are therefore not needed and are not
displayed in this implementation of the Notification Center page.
3. In the rule column, locate a notification rule that matches your data monitoring requirement and click
Follow.
4. You are now following a notification based on the selected rule, in the context of the selected record. You
can verify this without leaving the current window. Click Home at the top right to display your Epicor Social
Enterprise Home page and begin navigating your account on the Epicor Social Enterprise site.
5. Click your User ID at the top of the Home page to open your User Profile page.
6. Click the Notifications tab and verify that the notification that you enabled is listed.
You will receive a data notification message in your My Stream column whenever a change occurs that matches
the criteria in the notification rule.
Use private messages and private groups to take communication with other Epicor Social Enterprise users out of
the public message stream. This section describes how to exchange private messages with another user, and
how to join and communicate with a private group.
Private message postings are viewable only by the sender and recipient and will not be seen by their followers.
Your private message activity can be viewed in a separate column on your Home page or in a separate tab on
your User Profile page.
1. From the Epicor Social Enterprise Home page toolbar, choose Users to display the Users page.
You also can, in a message, click the user's Image or User ID to display their thumbnail profile, and then
click Send Private Message.
2. On the Users page, locate the recipient's listing and click Send Private Message to open the Send a
private message dialog box displays with recipient's User ID in the To field. .
4. Optionally, click the Send copy of message via email option to post the message both to the recipient's
private message activity and to the primary email address associated with their user account. This option
overrides the recipient's current email options in their user profile.
6. The recipient can choose Private Messages on the Home page toolbar to display a column of their private
message activity, including the message you just sent.
Notice that the Private Messages icon is highlighted, indicating that the recipient has private message activity
waiting for them to view.
A private group is limited to users who have been accepted for membership by the group owner. You can request
to join any private group. Once a member, you will begin seeing messages from the group in your message
activity. Only group members can view message postings to a private group.
1. From the Epicor Social Enterprise Home page toolbar, choose Groups to display the Groups page.
2. On the Groups page, locate the group's listing and click Request to Join.
3. The link changes to Cancel Request and your request now appears as a pending action in the group owner's
account.
If the group owner later rejects your request, the link will return to Request to Join.
4. When the group owner accepts your request, the Cancel Request link changes to Leave and you now are
group member.
Once you are a group member, the listing's Group ID becomes an active link to the Group Detail page,
where you can see information about the group's identity, message activity, and membership.
5. Once you are a group member, the listing's Group ID becomes an active link to the Group Detail page,
where you can see information about the group's identity, message activity, and membership.
6. Message postings to the group now are included in your My Stream column.
A message posted to a private group is visible only to the group's members. You must be a group member to
post a message to a private group.
1. For this example, a member of the Manager Forum private group clicks the Group ID in a message to the
group and chooses Post Message in the group thumbnail profile.
4. In the new message, the group member clicks Group ID, and choose Messages in the group thumbnail
profile.
5. A column of current message activity for the group opens. Keep in mind that access to the group's messages
is limited to group members
This section describes the options for using email to monitor the message stream and post messages.
The Post public messages email option in your profile properties enables you to post a public message to your
followers from the primary email account associated with your user profile.
1. On the Epicor Social Enterprise Home page, click your User ID at the top of the page to open your User
Profile page.
2. To check the current configuration of your email options, click the Email Options tab.
3. To adjust your email options, click Edit Profile to open the Edit Profile dialog box.
4. In the Email field, verify the primary email address associated with your account.
6. It also is recommended that you select the Receive verification of email postings option, which serves
as both a confirmation and alert whenever an email posting occurs that is attributed to your account.
8. You now can use the primary email account associated with your user profile to compose and send an email
to the Epicor Social Enterprise email address for incoming emails (POP3 address, obtain from your Epicor
Social Enterprise administrator).
9. The email is posted as a public message from you to your followers. Check your My Stream column to
verify the posting.
When you have Receive verification of email postings enabled in you user profile, you also will receive
an email verification of the posting.
The Post public messages email option in your profile properties enables you to post a message to a group
from the primary email account associated with your user profile.
1. Your user account Email Options that are required for posting to groups were adjusted in the previous
example where you set up to post to your followers. To verify these settings, on the Epicor Social Enterprise
Home page, click your User ID at the top of the page to open your User Profile page.
2. To check the current configuration of your email options, click the Email Options tab.
3. Using the primary email account associated with your user profile, enter the group's Group Name or Group
ID on the subject line and compose the message. Keep in mind the following:
• The subject line can contain only one Group Name or Group ID and no additional text. If there is any
text on the subject line other than the Group Name or Group ID, Epicor Social Enterprise will not be able
to find the group.
• To ensure delivery to the target group, the Group Name or Group ID must be correct. It is important that
you verify the value you have entered before sending the email.
4. Send the email to the Epicor Social Enterprise email address for incoming emails (POP3 address, obtain from
your Epicor Social Enterprise administrator).
5. Epicor Social Enterprise receives the email and posts a message as follows:
• When a Group Name or Group ID is located that matches the value on the email subject line, the message
is posted as a message from you to the group.
• When no match is found, the message is posted as a message from you to your followers.
Check your My Stream column to verify the posting. When you have Receive verification of email
postings enabled in you user profile, you also will receive an email verification of the posting.
Enable the Receive My Stream daily digest email option in your profile properties to have a daily digest of
your My Stream activity sent to the primary email account associated with your user profile.
1. On the Epicor Social Enterprise Home page, click your User ID at the top of the page to open your User
Profile page.
2. To check the current configuration of your email options, click the Email Options tab.
3. To adjust your email options, click Edit Profile to open the Edit Profile dialog box.
4. In the Email field, verify the primary email address associated with your account.
5. Under Email Options, select Receive My Stream daily digest and then click Save Changes at the bottom
of the page.
Digests will be sent every 24 hours, shortly after midnight, using the time on the Epicor Social Enterprise server.
Enable the Receive private message alerts email option in your user profile properties to have your private
messages sent to the primary email account associated with your user profile.
1. On the Epicor Social Enterprise Home page, click your User ID at the top of the page to open your User
Profile page.
2. To check the current configuration of your email options, click the Email Options tab.
3. To adjust your email options, click Edit Profile to open the Edit Profile dialog box.
4. In the Email field, verify the primary email address associated with your account.
5. Under Email Options, select Receive private message alerts and then click Save Changes at the bottom
of the page.
Email alerts that you have private message activity will be posted to your primary email account.
Enable the Receive Mention Alerts email option in your user profile properties to receive email alerts when you
are mentioned (@YourUserID) in message postings. Alerts are sent to the primary email account associated with
your user profile.
1. On the Epicor Social Enterprise Home page, click your User ID at the top of the page to open your User
Profile page.
2. To check the current configuration of your email options, click the Email Options tab.
3. To adjust your email options, click Edit Profile to open the Edit Profile dialog box.
4. In the Email field, verify the primary email address associated with your account.
5. Under Email Options, select Receive Mention Alerts and then click Save Changes at the bottom of the
page.
Alerts will be posted to your primary email account. You will receive an alert only if you are authorized to see
the message that contains the mention. You can expect to receive alerts for mentions in public messages and
messages to public groups, but not for private messages between other users or messages to private groups in
which you are not a group member. You will not receive alerts for mentions in data notification messages.
This section describes how Business Process Management (BPM) method directives and data directives can be
designed to include automated posting of data notification messages to Epicor Social Enterprise.
In the BPM directive workflow, a Notify Me action sends message request to Epicor Social Enterprise when
triggered by other workflow actions. At a high level, setting up includes the following:
• In Epicor Social Enterprise, a notification profIle must exist for the Epicor ERP application database table on
which the directive will be based.
• In the Epicor ERP application, there must be an active connection to the Epicor Social Enterprise website.
• In the Epicor ERP application, the Method Directive or Data Directive Maintenance program and the BPM
Workflow Designer are used to create a directive that includes the Notify Me action and the action(s) that
will trigger it.
• In the Epicor ERP application, the first time the directive triggers a notification, Epicor Social Enterprise receives
the request and attempts to match it to an existing notification profile and rule. When a matching rule is
found, it is updated if necessary. When no matching rule is found, a new rule is created. This ensures that a
notification profile and rule are available for users to select when creating and following notifications.
• In Epicor Social Enterprise, users must set up and begin following a notification based on the notification
profile and rule. Data notification messages will be posted to the Epicor Social Enterprise message stream
whenever the directive's Notify Me action is triggered. Users will see those messages in their My Stream
column if they have set up and are following a notification.
• Users can set up to follow notifications and monitor their My Stream activity either by logging directly into
the Epicor Social Enterprise website or by accessing Epicor Social Enterprise from within the Epicor ERP
application client.
Create a BPM standard data directive workflow that includes a Notify Me action. Configure the Notify Me action
to send data notification messages to Epicor Social Enterprise when triggered by other actions in the data directive.
This procedure describes the work required to set up and begin following data notifications generated by a BPM
standard data directive. While the procedure is based on simple examples, it is assumed that you have a plan for
what data changes you want to monitor and the type of workflow action(s) that will trigger the Notify Me action.
In Epicor Social Enterprise, ensure that a notification profile exists for the Epicor ERP application database table
on which the data directive will be based.
1. On the Epicor Social Enterprise Home page toolbar, choose Menu > Notification Center to display the
Notification Center page.
2. For Notification Source, ensure that the selected notification source corresponds to your Epicor ERP
application and database.
4. Use the search field to locate the notification profile name corresponding to the application database table.
The Customer notification profile is used for this example.
5. If needed, create a notification profile. To begin, click the actions menu icon at the top of the rule (right)
column.
A detailed procedure is provided in the Epicor Social Enterprise online help. To create a notification profile,
you must be an Epicor Social Enterprise administrator.
2. Use the Table field to find and select the table for the data directive.
This example is based on the Customer table.
4. Click the Down Arrow next to the New button; select New Standard Directive.
Configure the Notify Me action that will post data notification messages to the Epicor Social Enterprise message
stream when the data directive executes.
1. Working in the BPM Workflow Designer, select the Notify Me icon in the left pane and drag it to the Design
area.
2. Select the Notify Me action to display its Action statement at the bottom of the design area.
3. Click <TableName> (Customer in this example; it is the data directive table name by default) in the Action
statement to open the Specify Notification Profile and Key Tag dialog box.
This dialog box is used to choose the notification profile, company, and key values that will be applied as
the context for notification messages. There are two general approaches:
• Use the default profile selection, which is the notification profile associated with the directive table, and
then choose a company and key value to be applied when the action triggers.
• Alternatively, choose a different notification profile, company, and key value. This allows some flexibility
in determining the notification profile that is applied as the context for an alert message.
4. For Profile in this example, use the default choice, which is the Customer notification profile associated
with the directive table. You could choose any of the notification profiles that currently exist on your Epicor
Social Enterprise website. KeyTag displays the key tags for the selected notification profile. This field is
read-only. Keytag values are set in the next step.
5. For Company, and Key Values in this example, define the values that will be applied in the key tag of the
selected notification profile.
In both fields, enter a value that will be applied or right-click and choose from the following actions for
setting up value substitution from the directive table:
• Call Context - Choose to set up substitution of the value in a selected BPM Call Context field.
For this example, in Company, choose callContextClient.CurrentCompany to apply the current company.
• Field Query - Choose to open the Select Table Field(s) dialog box and set up substitution of the value
from a selected field in the directive table. Selection is limited to one field.
For this example, in Key Values, choose Field Query and set up a query that use the field name that you
see in the read-only KeyTag field.
• Table Query - You also could choose to open the Select Table Field(s) dialog box and set up substitution
of values from multiple fields in the directive table. The default behavior of a table query is to insert a
comma-delimited list of the selected table field names followed by a comma-delimited list of the
corresponding table values.
Table Query is not used in this example.
7. Click designed in the Action statement to open the Define Notification Message Template dialog box.
8. Use Name and Description to identify the template and its purpose.
9. Use Title and Content for the message title and message content.
In both fields, enter the text that will appear in messages or right-click and choose from the following actions
for setting up value substitution:
• Call Context - Choose to set up substitution of the value in a selected BPM Call Context field.
• Field Query - Choose to open the Select Table Field(s) dialog box and set up substitution of the value
from a selected field in the directive table. Selection is limited to one field.
For this example, a field query is used to insert the name of the customer record that has changed.
• Table Query - Choose to open the Select Table Field(s) dialog box and set up substitution of values
from multiple fields in the directive table. In the message, the default behavior of a table query is to
insert a comma-delimited list of the selected table field names followed by a comma-delimited list of the
corresponding table values.
11. The Action Statement configuration is complete and includes the new message template name.
To complete the data directive, connect the Notify Me action to the triggering action.
1. If not already done, create and connect the data directive action(s) that will trigger the Notify Me action.
The BPM Workflow Designer provides a lot of flexibility in defining the trigger conditions. Possibilities range
from a condition monitor to custom code. In this simple example, a Condition action has been configured
that monitors the true/false state of a selected field in the data directive table (a field corresponding to a
check box option in the application for example) and triggers the Notify Me action when it is TRUE that the
field changes from TRUE to FALSE.
2. In the Design area, connect the Notify Me action to the trigger action.
For the Condition action example in the previous step, select the TRUE connection on the Condition action
and drag it to a connection on the Notify Me action.
3. Click Save and Exit to close the BPM Workflow Designer and return to Data Directives Maintenance.
Generate an initial data notification message by causing the data directive to trigger the Notify Me action.
1. In the application program that is using the data directive table, retrieve a record, change the property that
will toggle the field value, and save the record.
For this example, a change is made to a Customer record.
4. For Notification Source, ensure that the selected notification source corresponds to your Epicor ERP
application and database.
5. In the data (left) column, select Notification Profiles and then use the search field to perform a search on
the profile name corresponding to the monitored application database table.
For this example, Search for Customer, which is the profile name that you verified earlier in this example.
7. In the rule (right) column, either use the search field to perform a search on the rule name (the message
template name from the data directive) or leave the search field blank and press Enter to generate a list of
all notification rules relating to the selected notification profile.
In this example, the new rule Customer Change was generated and added to the list.
9. Go to your Home page and verify that the initial data notification message is present in your My Stream
column.
The message was already present in the Epicor Social Enterprise message stream. It now is visible in your
My Stream column because you enabled the notification following.
A new data notification message will be posted to the Epicor Social Enterprise message stream whenever a data
change occurs that causes the BPM data directive to trigger the Notify Me action. Other users who have set up
to follow notifications based on the notification profile and rule also will see the message in their My Stream
column.
Index
.net process, c# 606 baq report designer, SSRS baq report options 242
.net process, vb.net 608 baq report, about BAQ and report datasets 239
baq report, customize 262
32bit vs 64bit odbc 229 baq report, standard interface 240
baq search 129
baq special constant 51
A baq specified expression 47
base cube query (create) 461
access and use an advanced search 289 bpm action process 723
access new dashboard 406 bpm async processing log 724
action processing 722 bpm base elements 481
activate a baq zone 153 bpm data form directive 590
activate predictive search functionality 314 bpm data form directive, bpm data form action 590
activate quick search functionality 272 bpm data form directive, design email template 593
add a method code 548, 563 bpm data form directive, sent email action 592
add a post-processing directive 557, 560 bpm data form directive, test form 596
add a query to the dashboard 329 bpm data forms 584, 585, 586, 587, 588, 589
add an action 559, 562, 573 bpm holds 486
add another condition 534 bpm holds – how to use 486
add data tags to a record 298 bpm server logging 734
add data tags to records in a grid 300 bpm tracing 731
add first action 533 bpm update processing 113
add function call parameter values 55 bpm workflow designer 500
add new definition 217 browser cache, cache 430
add second condition 541 build and deploy a dashboard to the main menu 403
advanced bpm processing 117, 661 business activity query (baq) 458
advanced group by clause editor 86 business activity query searches 285
advanced search with range, add 362
advanced search, conduct 324
advanced searches 289 C
aggregate data using pivot 57
analyze 120 .net assembly 601, 603
analyze and test query 120 calculated field 76, 77, 82, 84
apply table filter 219 baq constants 84
asp page generation 136 example one 76
assign user privileges 410 functions 77
attach data tag 515 operators 82
attach hold 517 call bpm data form 504
authorization 325 call SC Workflow 505
auto print 518 callers 504
availability of workflow elements 503 case studies 155, 526
change log 519
chart settings 357
B chart settings, modify 357
chart view, add to dashboard 354
baq application server settings 150 client tracing log 732
baq best practices 153 code performance 614
baq info zones 152 code performance, collect rows 615
baq report designer 239 code performance, correct locking 617
baq report designer, create new report, add report 244 code performance, each statement 617
baq report designer, create new report, add to application menu code performance, field lists 614, 616
258 code performance, join multiple tables 616
baq report designer, create new report, design in Report Builder code performance, joined rows 615
251 code performance, select one row 616
baq report designer, create new report, initial test 248 code performance, sort order 617
baq report designer, create new report, option fields 247 code performance, table joins 614
baq report designer, create report 243 column mapping 114
N S
named search details 293 schedules 457
named searches 290 secondary query, add to display line item shipment information
named searches – auto load search 296 375
named searches – auto populate data 294 select and create columns for display 157
new business activity query 26 select baq display columns 178
new grid view, add to dashboard 345 select columns 173, 176, 205, 209
new web part page, create 440 select columns for display (not clocked out) 162
not clocked out baq 160 select columns set operator type subqueries 68
notify me 520 select display columns - toplevel cte innersubqueries 65
select value(s) of field from specified subquery 53
send e-mail 521
O service connect workflow 108, 598, 604
operation specific filters 54 set bpm data field 523
other 518 set by query 524
override search options 297 set field 524
setters 523
show message 522
P smart client enterprise search 307
sort order 91
perform a data tag search 301 specified constant 46
phrase build - add table 28 specified parameter 47
phrase build - function call parameters 55 standard execution flow 494
phrase build - pivot subquery for clause 57 standard global alert, alert group 633
phrase build – additional controls 29 standard global alert, alert group, activate 634
phrase build – filter values 45 standard global alert, alert group, add person to group 635
phrase build – subquery criteria 42 standard global alert, alert group, assign person to team 636
phrase build – table criteria 37 standard global alert, alert group, create group 635
phrase build – table list 36 standard global alert, alert group, test 637
phrase builder – table relations 31 standard global alert, specific recipient 628
primary directive 526 standard global alert, specific recipient, activate 628
process link properties 373 standard global alert, specific recipient, sales order 630
process link, add for customer entry 373
standard global alert, specific recipient, test 631 updatable baq rights 652
standard global alert, specific recipient, work force 629 updatable baq, analyze 667, 670
standard system dashboards 321 updatable baq, fields 657
standard template workflow 111 updatable baq, properties 656
subquery list 98 updatable baq, update processing 661, 663
subquery options 92 updatable baqs, regenerate 693
subscribe 378 updatable business activity query 100
supplier record updatable baq 164 updatable dashboards 695
support for multiple dirty rows 525 updatable dashboards, contact grid properties 703
system queries 24 updatable dashboards, create 695
updatable dashboards, customer grid properties 699
updatable dashboards, customer query 696
T updatable dashboards, test 707
table relations - manually connect tables 34 updatable dashboards, tracker view 705
table relations - predefined dictionary relations 32 updatable dashboards, updatable contact query 700
test a quick search 280 updatable field editor 105
test predictive search 320 updatable query settings 102
test the baq 179, 212 updatable query, set up 654
test the bpm 568, 576 update a directive group 728
test updatable query 122 update and create supplier records 167
the chart properties window 354 Update ESC Credentials 731
the chart view 354 update processing 107
the dashboard browse 380 URL link, add to display customer website 371
the gauge properties window 368 url/xslt properties 370
the gauge view 368 use a baq search 287
the general sheet 26 use auto print action 569
the grid properties window 338 use except subquery type 200
the grid view 338 use table list 234
the process link 372 user account maintenance 305
the query builder 28 user account permissions 651
the tracker properties window 360 user maintenance 482
the tracker view 359 user rights 100
the url/xslt view 370 user rights, advanced bpm 598
theme, modify 426 using business process management 494
tracker view, add for advanced search 360 using inner subqueries 172
troubleshooting actions 731
V
U view system queries 24
updatable baq 652, 653 views, arrange within SharePoint page 447
updatable baq method directives 490, 710 views, reusing 392
updatable baq method directives, actions 711
updatable baq method directives, default data 711 W
updatable baq method directives, define action 716
updatable baq method directives, get methods 713 web client enterprise search 310
updatable baq method directives, post-processing directive 714 web dasher 452
updatable baq method directives, publish data 711 web page, modify 443
updatable baq method directives, select action 715 where-used 128
updatable baq method directives, test) 719